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

Last Number in Field

مغلق
بدأه server_programmer في 16 أغسطس 2005 · 4 رد · 631 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم أخواني و أخواتي في منتدانا الرائع

و دائما أنا بذكركم لما بصادف مشاكل غريبة (h) و ما لها أي حل

لكن اليوم لكم عندي سؤال بعيد تماما عن اللا منطقية و هو مباشر و عادي جدا

المشكلة :

أولا لازم لها توضيح

أقرأوا هذا السيناريو اولا لأنة مهم

عندي جدولين Master / Detailes

الحقول المترابطة بين الجدولين لنفترض أسمها Emp_No في كلا الجدولين و نوعهما مثلا INT و بالنسبة للحقل Emp_No في الMaster يكون ال IDENTITY 1.1

خطوات العمل على الشاشة من هذا النوع هي

1- تعبئة الجزأ الخاص بال Master

2- تعبئة الجزأ الخاص بال Detailes

3- عمل الحفظ أولا لجدول ال Master

4- بعدها على طول عمل نفس الشي و حفظ المحتويات لجدول ال Detailes

بين الخطوة رقم 3 و 4

في حركة بسيطة

بس لازمة و مهمة

هي أنك تعرف كم الرقم اللي انعمل و تسجل من خلال ال SQL Server في الحقل Emp_No في جدول الMaster

و بعدها تضيف هذا الرقم لحقل الربط الموجود (لكل سجل ) في جدول ال Detailes علشان تحقق الترابط بين السجلات في ال Master و ال Detailes

المشكلة في هذا النوع من الجداول ان المبرمج لازم يعمل الفي حسابة كيف يقرا القيمة الجديدة

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

أقصد بالطريقة

أجراء مخزن أو Trigger يرجع لي القيمة اللي أتسجلت في الحقل المحدد ؟

أشكر لكم طول بالكم

:rolleyes:

و الشكر لصاحب الرد

أخوكم المبتلي في هذا المجال

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

-------------------------------

#2
اقتباس
فهل من طريقة يمكن للمبرمج من خلالها أن يعرف في نفس اللحظة الرقم اللي تم وضعة للجدول عن طريق Variable ما أو أسلوب معين بدلا من أن يقرا في كل مرة ما هو أخر رقم تسجل في الجدول

أقصد بالطريقة

أجراء مخزن أو Trigger يرجع لي القيمة اللي أتسجلت في الحقل المحدد ؟

نعم توجد طريقة ، وذلك باستخدام الدالة IDENT_CURRENT ، وطريقة استخدمها داخل procedure شرحتها من قبل في هذا الموضوع:

Retrieve the Identity Value While Insert

وأيضا هذا الموضوع يشرح كيفية استخدامها:

identity in varchar column

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

--------------

قمت بتعديل عنوان الرابط الأول.

تم تعديل هذه المشاركة بواسطة walcom في 16 أغسطس 2005 في 19:14

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

#3

حياك الله أخي Welcom

بس للأسف العنوان السابق فية مشكلة بسيطة في التركيب

أو أنا ما فهمته جيدا

ممكن مثال صغير متاكامل من امثلتك الرائعة

يعني فية تعريف الجدول و الأجراء المخزن و الكود اللي في البرنامج

أعرف اني أطلب منك الكثير و ان وقتك مش ملكك بس تعرف

أخوك محتاجة على الاخر

و مشكووووووووووووور

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

-------------------------------

#4

ببساطة

بفرض أننا نريد كتابة Procedure يسجل بيانات مشترك جديد (رقم المشترك، الاسم، العنوان، أرقام الهواتف، تاريخ الاشتراك) في خدمة محددة من عدة خدمات، ومن ثم يسجل المبلغ الذي دفعه مقابل الاشتراك (بعد استخراج رقمه الجديد) في جدول آخر خاص بحفظ تاريخ الرسوم المدفوعة مقابل التسجيلات والتجديدات (الرقم المتسلسل، رقم المشترك، رقم الخدمة، تاريخ الاشتراك، مدة الاشتراك، المبلغ):

CREATE PROCEDURE sp_NewSubscriber 
@subscName varchar(100), @subscAddess varchar(150), @subscTel1 varchar(20), @subscTel2 varchar(20),
@subscDate datetime, @subscAmount money, @subscSvcNum smallint, @subscTermLength tinyint 
as insert into tblSubscribers values(@subscName, @subscAddess, @subscTel1, @subscTel2,@subscDate)

declare @subsc_id int
select @subsc_id=ident_current('tblRegBWs')

insert into tblRenewals values(@subsc_id, @subscSvcNum, @subscDate, @subscTermLength, @subscAmount)
GO

كل الحقول الرقمية المفتاحية لها خاصية identity، لذا لانحتاج إدخال قيمة لها، فقط نحتاج لاستخراج قيمتها بعد إدخال آخر سجل.

أتمنى أن يجيب هذا المثال على تساؤلك، ومعذرة على التأخير.

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

تم تعديل هذه المشاركة بواسطة walcom في 19 أغسطس 2005 في 12:11

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

#5

أشكرك يا أخي walcom

للأسف العمليات مش بالشكل اللي بحتاجة بالضبط

لاني عايز أقرأها من داخل البرنامج مش من جدول

يعني عايز أجراء ما يرجع لي القيمة للبرنامج

اعرف اني أرهقك بالطلب هذا بس ايش نعمل ؟

أعتبرها ضريبة الشهرة يا سيدي :rolleyes:

و جزاك الله خير أخي العزيز

تم تعديل هذه المشاركة بواسطة server_programmer في 29 أغسطس 2005 في 17:46

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

-------------------------------

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

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