الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد عمل تريجر يحسب اجمالى

مغلق
بدأه haytham_hosny في 10 مارس 2005 · 3 رد · 592 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هناك فكرة triggers وأرجو المساعده من أعضاء المنتدى من ذوى الخبرة فى sqlserver

هناك جدولان الاول يحتوى على عمود مسجل به حالات الخصم والمكافأة لموظف

وعمود أخر مسجل به قيمة هذا الخصم وعمود اخر مسجل به قيمة المكافآة

والجدول الاخر بة عمود لاجمالى الخصومات وعمود لاجمالى المكافآت وصافى المرتب

اريد عمل تريجر يقوم بحساب اجمالى الخصومات لهذا الموظف فى شهر معين واجمالى المكافآت لنفس الموظف فى نفس الشهر

ووضع تلك القيم فى الجدول الاخر داخل عمود اجمالى الخصم وعمود اجمالى المكافآت

#2

اتمنى لو تضع لنا السكربت الخاص ببنية الجداول لديك

للحصول عليها اضغط باليمين على قاعدة البيانات واختر all tasks ثم Generate SQL Script

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

تفضل اسكربت الخاص بالجداول والداتا بيز

CREATE TABLE [dbo].[name_info] (
	[name_id] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,
	[the_name] [char] (10) COLLATE Arabic_CI_AS NULL ,
	[status] [char] (10) COLLATE Arabic_CI_AS NULL ,
	[buns_value] [numeric](5, 0) NULL ,
	[tips_value] [numeric](10, 0) NULL ,
	[date] [datetime] NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[salary_info] (
	[name_id] [numeric](18, 0) NOT NULL ,
	[salary] [int] NOT NULL ,
	[total_buns] [int] NULL ,
	[total_tips] [int] NULL ,
	[total_salary] [int] NULL 
) ON [PRIMARY]
GO

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 10 مارس 2005 في 20:53

#4

قمت بكتابة هذا الإجراء المخزن، ليعدل لاحقا إلى trigger:

create procedure sp_CalculateBonusTipsSums
@id_name char(10), @begin_date datetime, @end_date datetime
as
declare @bonusSum int
declare @TipSum int

select @bonusSum=sum(buns_value), @TipSum= sum(tips_value)
from name_info
where [date] between @begin_date and @end_date
and name_id=@id_name 

update salary_info set total_buns=@bonusSum, total_tips=@TipSum
where name_id=@id_name
go

ببساطة فكرته أنه يقوم بستخراج مجموع الخصومات والعلاوات في متغيرات من جدول حالات الخصم والعلاوت ويضيفها للجدول الآخر.

مثال للتنفيذ:

exec sp_CalculateBonusTipsSums 1, '3/1/2005', '4/1/2005'

فكر بطريقة أخرى

هذا الموضوع مغلق.

مواضيع مشابهة