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

مساعدة بخصوص رقم تسلسلي أتوماتكي في ٌقاعدة البيانات

بدأه aminealaoui في 20 يناير 2011 · 3 رد · 847 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخواني أن في أمس الحاجة الى خبرتكم

لدي جدول عملاء والجدول يتكون من بعض الخانات من بينها رقم تسلسلي يزداد أوتوماتكيا "compteur"حيت أشتغل على قاعدة بيانات مصممة ب sql 2005

المشكل هو عندما أحدف عميل ينحدف فمتلا حدف العميل رقم 10 وهو الأخير فعندما أضيف عميلا جديد يأخد الرقم 11 رغم أن الرقم 10 لا يمتلكه أي عميل فكيف يمكنني عند اضافة عميل جديد يأخد الرقم التسلسلي الموالي للأخير (الرقم 10 في المتال)

لتبخلوا علي بحلولكم ولكم جزيل الشكر

#2

وعليكم السلام ورحمه الله وبركاته

يمكنك حساب max ومن ثم اضافه العنصر برقم يزداد عن max بواحد باستخدام Insert trigger

ملاحظه:-

يقوم بتغير قيمه 0= auto increment field

dbcc checkident ('x', reseed, 0)

تحياتي ..

2
2coscqr.jpg
#3

السلام عليكم

الحقل الذي انشاته بالترقيم التلقائي يجب ان يكون بهذا الشكل ولا مجال لتغييره وذلك لأنه يراعي مبدا انك قد تحذف عميل له بيانات وحركات بيع مسجله ولا يريد ان تتعارض بياناته مع كود عميل جديد

لذلك فالحل الوحيد مثلما تفضل الأخ احمد غانم وذكر

ولدي هنا اجراء بالفيجوال قد يفيدك :

Public Function autoNum(ByVal field As String, ByVal table As String) As Integer

Dim N As Integer

Cmd_Library.CommandText = "select max(" & field & ") from " & table

If IsDBNull(Cmd_Library.ExecuteScalar) = False Then

N = cint(Cmd_Library.ExecuteScalar) + 1

Else

N = 1

End If

Return N

End Function

#4
Ahmed-Ghanem كتب:

وعليكم السلام ورحمه الله وبركاته

يمكنك حساب max ومن ثم اضافه العنصر برقم يزداد عن max بواحد باستخدام Insert trigger

ملاحظه:-

يقوم بتغير قيمه 0= auto increment field

dbcc checkident ('x', reseed, 0)

تحياتي ..

شكرا جزيلا لك أخي Ahmed-Ghanem لقد ساعدتني كتيرا للوصول للحل وهذا الكود الذي استعملته حيت اشتغلت على

TRIGGER

ALTER TRIGGER Trigger_MaxID
ON nomTable
FOR  DELETE 
AS
 DECLARE @id_max int
SET @id_max = (select MAX(id_champ) AS 'maxi'from Table  )  

 DBCC CHECKIDENT (table,RESEED,@id_max  )

أتمنى أن يستفيد منه باقي الأعضاء

بقي لدي مشكل أخر هو عندما يتم مسح سطر في الوسط

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

متلا لدي الترقيم من 1 الى 20 قمت بحدف السطر 10 فعندما أضيف سطر جديد أريده أن يأخد الرقم 10 عوض 21 ولكم جزيل الشكر

rafeek633 كتب:

السلام عليكم

الحقل الذي انشاته بالترقيم التلقائي يجب ان يكون بهذا الشكل ولا مجال لتغييره وذلك لأنه يراعي مبدا انك قد تحذف عميل له بيانات وحركات بيع مسجله ولا يريد ان تتعارض بياناته مع كود عميل جديد

لذلك فالحل الوحيد مثلما تفضل الأخ احمد غانم وذكر

ولدي هنا اجراء بالفيجوال قد يفيدك :

Public Function autoNum(ByVal field As String, ByVal table As String) As Integer

Dim N As Integer

Cmd_Library.CommandText = "select max(" & field & ") from " & table

If IsDBNull(Cmd_Library.ExecuteScalar) = False Then

N = cint(Cmd_Library.ExecuteScalar) + 1

Else

N = 1

End If

Return N

End Function

شكرا لك أخي rafeek633 على تفاعلك لقد حللت نصف المشكل ياريت لو عندك فكرة حول الرد الذي وضعته قبل هذا أن تفيدنا به ولك جزيل الشكر

تم تعديل هذه المشاركة بواسطة aminealaoui في 23 يناير 2011 في 18:03

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

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

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

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

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