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

اين توضع عمليه الحسابيه الخاصه باحد حقول ؟

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

السلام عليكم

الشكر موصول لكل من في هذا المنتدى

سؤالي اليوم يتعلق با احد الحقول

اذا كان حقل من حقول يتم حساب قيمته بمجموعه من العمليات ؟؟؟

اين يمكن وضع هذه العمليه لحساب القيمه ومن ثم يتم تخزينها .......

علما بان حساب قيمته تكون عبر بيانات موجود لدي وليس مدخله من قبل المستخدم :wacko:

شاكر للجميع حسن تعاون

#2

هل لديك مشكلة فى شئ معين ؟

Technical Lead Developer

My LinkedIn Profile

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

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

#3
اقتباس
اذا كان حقل من حقول يتم حساب قيمته بمجموعه من العمليات ؟؟؟

هل تقصد أن هذا الحقل هو Computed value field؟

إذا كان كذلك فجرب هذه الطريقة (للأسف لايوجد SQL Server على الجهاز الذي أكتب منه حاليا، ولكن حاول معي):

قم بإنشاء after trigger يقوم بحساب المجموع، ومن ثم يقوم بتعديل قيمة الحقل المطلوب.

Trigger and functions, طلب شرح

مثلا: بفرض أنه في قاعدة بيانات موظفين، يتم إدخال العلاوات والخصومات للمرتب، ومن ثم يتم حساب صافي المرتب بعد تعديل المرتب، فسيكون الtrigger كالآتي:

create trigger tr_ComputeNetSal on employee 
after update

declare @sumAllowances decimal

select @sumAllowances =sum(allow_value) from tblEmpAllows where tblEmpAllows.EmpID=inserted.EmpID

update tblEmployeeInfo 
set empNetSal=@sumAllowances 
where empId=inserted.EmpID

go

حاول ووافيني بالنتيجة :)

بالتوفيق بإذن الله

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

#4

اهلا welcom

ما اقصده هنا ليس تعديل قيمه معينه ولكن نفرض

ان لدي طلاب

الطالب مسجل با كثر من ماده ولكل ماده من المواد عدد ساعات

لنفرض ان اريد حساب عدد الساعات التي ياخذها الطالب

علما بانني وضعت هذا في حقل ولكن لاتخزن نتيجته من قبل المستخدم انما اليا يتم حساب عدد الساعات ومن ثم تخزن في حقل المخصص

وجزاكم الله خيرا

#5
اقتباس
ما اقصده هنا ليس تعديل قيمه معينه ولكن نفرض

ان لدي طلاب

الطالب مسجل با كثر من ماده ولكل ماده من المواد عدد ساعات

لنفرض ان اريد حساب عدد الساعات التي ياخذها الطالب

علما بانني وضعت هذا في حقل ولكن لاتخزن نتيجته من قبل المستخدم انما اليا يتم حساب عدد الساعات ومن ثم تخزن في حقل المخصص

أليس هذا تعديل قيمة معينة، وهي قيمة عدد الساعات الكلي للطالب؟

الطريقة بنفس الطريقة التي استعملتها لكتابة الtrigger الموجود في ردي السابق.

حاول وسنساعدك :)

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

#6

اهلا WELCOM

جربت

ونفع في مواقع

لكن اصبح لدي مشكلة

لدي قيمة اريد تعديل عليها

وهي ساعات المسجلة لطالب

والقيمة الجديدة

سوف تاخذ القيمة القديمة بالاضافة الى ساعات الماده التي تمت اضافتها

CREATE TRIGGER INERET_COURES ON [dbo].[Progress] 
FOR INSERT
AS
IF NOT EXISTS (SELECT PROGRESS.*  FROM  PROGRESS,STUDENT,COURES
WHERE PROGRESS.STD_ID= STUDENT.STD_ID
AND  PROGRESS.CRS_CODE  = COURES.CRS_CODE
AND STUDENT.HRS_GPA  <  (STUDENT.STD_HOURS+COURES.HOURS)
)
BEGIN
PRINT 'THAT NOT ALLOW INSERT NEW COUERS BECAUSE HOUERS IS MAXMAM
OF RANGE '
ROLLBACK
END
ELSE 
BEGIN 
UPDATE STUDENT
SET STUDENT.STD_HOURS=STUDENT.STD_HOURS+COURES.HOURS
END

المشكلة تكمن انه يرفض قبولCOURES.HOURS

والمسج التي تظهر

كما في الصورة

لم اعرف ما المشكلة

16_12_05_07_59_11_1134748751ERROR.GIF

#7

طيب لو سمحت ممكن بنية الجداول المستخدمة !

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

#8

بصراحة هذي داتا بيس

يمكن الحصول على محتويات جميع الجداول

project.zip

#9

سؤال :

اذا كان لدي جدول لنفرض انه X ويحوي الحقل 1 والحقل 2 والحقل 3

الحقل1 هو فورن كي من جدول Y وحقل 2 فورن كي ماخوذ من جدول Z

وكان الجدول Y يحوي حقل من حقول ولنفرض انه HOUR

تتغير قيمتها عند تغير الجدول X

اما كيفية تغيير فهي متعلقه بالعملية الحسابية التالية :

HOUR=HOUR+COURES_HRE

في حالة اضافه

اما في حال الحذف

فانها تتغير لطرح القيمة

COURES_HRE

وهذه القيمة توخذ من جدول Z

السؤال :

اين اضع العملية الحسابيه ... الخاصة بالحقلHOUR؟

هل توضع في جدول Y التابعه له

ام في جدول X الانها تتغير على حسب تغيره ..

:wacko:

#10

شرح لما اريد لعل وعسى استطيع ايجاد حل

لدي ثلاثة جداول

جدول الاول لطالب يحوي معلوماته من اسم وعدد ساعات المسجله له ومعدل الجامعي والمستوى .....الخ

PK : هو رقم الطالب

جدول الثاني يحوي المواد .. اسم الماده مع عدد ساعاتها المقرره خلال اسبوع ....الخ

PK: هو اسم الماده

جدول الثالث .. يحوي اسم طالب مع اسم ماده مع حالة طالب في ماده ( وحالة طالب يعني هل هو ناجح او مسجل او غير مكمل في الماده )

PK : حقول الثلاثه رقم الطالب +اسم الماده +حالة طالب

:rolleyes:

عندما اريد اضافة مادة لجدول الطالب او الحذف تتم العملية على جدول الثالث

الاضافه او الحذف لا يوجد مشاكل

لكن المشكلة

انني حينما اضيف ماده او احذف ماده لطالب ...

لابد من ان تتغير عدد ساعاته المسجله (وهذا حقل في جدول الاول)

سوء بالزياده في حالة الاضافه او نقص في حالة حذف

والزيادة والنقص يكون بحسب عدد ساعات الماده المقرره خلال الاسبوع (حقل موجود في جدول الثاني)

النتيجة المفترض الحصول عليها

ان ساعات طالب تتغير بحسب ساعات المواد المسجل بها

كيف يمكن ان تتم العملية باستخدام التريقر ؟

والتريقر تابع لاي جدول هل الجدول الاول(لان عدد ساعات مسجل لطالب موجوده لديه) ام الثالث(لان العملية التغيير تتم من خلال تغييره)؟

اما الكود

CREATE TRIGGER CHANGE_HOURS ON [dbo].[Progress] 
FOR INSERT, UPDATE, DELETE 
AS
BEGIN

UPDATE STUDENT
SET STUDENT.STD_HOURS= STUDENT.STD_HOURS+COURES.HOURS
WHERE PROGRESS.STD_ID= STUDENT.STD_ID
AND  PROGRESS.CRS_CODE  = COURES.CRS_CODE
AND STUDENT.HRS_GPA  <  (STUDENT.STD_HOURS+COURES.HOURS)
END

هذا اخر محاولاتي

فهل اجد منكم يد العون

:(

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

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