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

قادح لتغيير ترتيب الاقساط مع تغيير التاريخ

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

السلام عليكم

اولا لناخد نظرة سريعة لشكل تصميم الجدول

1- CustomerID

2- Installment_pay_date

3- monthly_fees

4- First_time fees

5- Installment_Order

البند 5 من معلومات الجدول تزداد من 0 الى عدد اقساط العميل كلما تم ادخال قسط جديد ,السؤال المتعلق به هو كيف يمكنني إعادة ترتيب الحقل 5 اذا تم تغيير تاريخ قسط معين هب انني ادخلت تاريخ قسط ما بالخطأ

ثم اردت تعديل ذلك التاريخ بحيث انه سيسبق تاريخ تم ادخاله من بعد ذلك القسط مثلا

01/01/2012 ::: 0

01/02/2012 ::: 1

01/03/2012 ::: 2

01/04/2012 ::: 3

والآن اريد تغيير التاريخ 01/03/2012 الى تاريخ يسبق 01/02/2012 كيف احافظ على ترتيب الحقل الرقمي لرقم القسط المدخل؟

السؤال الثاني :

لا ادري ما الحكمة من ذلك ولكن اضطررت في التحليل اليه هو ان يتم دفع مبلغ عند الاتفاق على شراء شيء ويسمى بالمقدم "لم تسعفني كلمة باللغة الانجليزية لذلك فاسميتها القسط الاول" ومن ثم في الشهر الذي يليه تبدأ الاقساط

بمعنى اذا كان لديك زبون لدية 5 اقساط لاتمام الشراء بالآجل فحركة دفعياته تكون كالتالي

المقدم

القسط الاول

..

..

..

القسط الخامس

ولكن السؤال هو انني عند ادخال البيانات "لمقدم زبون" يجب الا ادخل لحقل الاقساط اي قيمة اي تكون صفراً ولكن من الشهر الذي يليه فسيتم ادخال قيمة اكبر من الصفر لحقل القسط بينما تكون قيمة المقدم صفراً

للتوضيح اكثر المقدم ياخد قيمة غير الصفر عند الاتفاق فقط للمرة الاولى ومن ثم تكون قيمته صفراً حتى اكتمال البيع

بينما تكون قيمة الاقساط صفراً عند دفع مبلغ الاتفاق "المقدم" ومن تكون قيمته اكبر من الصفر حتى اكتمال البيع .

السؤال:

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

او قل العكس ان يضع قيمة تساوي >= صفر عند ادخال اول سجل "سجل الاتفاق/المقدم" بينما يلزم ادخال القيمة صفر لحقل الاقساط.

ارجو ان يكون طرح السؤال واضحاً او غير ممل

تذكر نعمة الامن التي تتقلب فيها وانت تقرأ رسالتي واطفال ونساء وعجزة تصب فوق رؤوسهم الحميم ظلماً وعدواناً واحمد الله وادعو لاخوانكم ان يكشف الله عنهم ما بهم من كرب وبلاء

فإن ما تقدمونه من مساعدة للناس قد تجعل اجابة دعائكم عند الله قريبة,كيف لا والله مع المحسنين

وللقائمين على أمر المنتدى : انشدكم الله ان تضعوا فلاش النصرة لاخواننا في سوريا في صدر الصفحة والا تزيلوها حتى يرينا الله تعالى منه ما يسر قلوبنا بفتح قريب ان شاء الله

اخوكم

#2

المشكله الاولي ابحث عن امر ROW_NUMBER() وقم بعمل جملت تحديث بالقيمه الجديده

#3
KARIMSOFT كتب:

المشكله الاولي ابحث عن امر ROW_NUMBER() وقم بعمل جملت تحديث بالقيمه الجديده

USE <My_dataBase>;

GO

WITH OrderedOrders AS

(SELECT SalesOrderID, OrderDate,

ROW_NUMBER() OVER (order by OrderDate)as RowNumber

FROM Sales.SalesOrderHeader )

SELECT *

FROM OrderedOrders

WHERE RowNumber between 50 and 60;

"مقتبس من ملف المساعده الخاص بسيكوال سيرفر 2005"

كيف سيستخدم مخرجات الترتيب داخل القادح؟

تحياتي

#4

فكرة كود

CREATE TRIGGER Trigger_Name 
   ON  pMember
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
IF COLUMNS_UPDATED() <> 0 -- insert or update?
BEGIN
	update pMember
	SET     n=t.RowNumber
	from 
	pMember inner join (select pnMemberCode, ROW_NUMBER() OVER (order by pdMemberBirthDate) as RowNumber
						FROM  pMember where pnLibraryCode in (Select pnLibraryCode from inserted)) as t
	on 
	pMember.pnMemberCode=t.pnMemberCode
END 
ELSE -- delete     
BEGIN
  	update pMember
	SET     n=t.RowNumber
	from 
	pMember inner join (select pnMemberCode, ROW_NUMBER() OVER (order by pdMemberBirthDate) as RowNumber
						FROM  pMember where pnLibraryCode in (Select pnLibraryCode from deleted)) as t
	on 
	pMember.pnMemberCode=t.pnMemberCode
END
END

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…