delphi4arab منتديات دلفي للعرب
مشكل الترقيم التلقائي لقاعدة البيانات - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : مشكل الترقيم التلقائي لقاعدة البيانات (/showthread.php?tid=6348)



مشكل الترقيم التلقائي لقاعدة البيانات - nacertaker - 25-07-2014

قمت بإنشاء قاعدة بيانات paradox وكان لديا حقل قمت بتعيين نوعه (+) كي يقوم بترقيمه أوتوماتيكيا
المشكلة التي واجهتني هي أنه عند حدف حقل مثلا رقم 5 عند إضافة حقل جديد يقوم بترقيمه بالرقم 6 وليس 5


مشكل الترقيم التلقائي لقاعدة البيانات - nebchadelphi - 26-07-2014

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


مشكل الترقيم التلقائي لقاعدة البيانات - tahri - 07-08-2014

السلام عليكم

لقد واجهتني نفس المشكلة ولم أجد لها حلا

هل من شرح مفصل؟


مشكل الترقيم التلقائي لقاعدة البيانات - esam2002 - 12-08-2014

انا جربت طريقه ونجحت معى وهو كالاتى
عمل query لمعرفه اخر قيمه
SELECT nonoid
FROM enfant
WHERE nonoid=(
SELECT max(nonoid) FROM enfant
)
2- تعريف متغير وهو a :integer;

3- a:= Query1nonoid.AsInteger+1 ;
4- فتح ال table المراد الحفظ فيه
tbl1.Append;
tbl1Nonoid.AsInteger:=a;
tbl1.Post ;
ممكن تكون طويله ولكنها نجحت معى


مشكل الترقيم التلقائي لقاعدة البيانات - Najy Ibraheem - 13-08-2014

السلام عليكم...

تلك هي طريقة عمل الحقل من النوع "ترقيم تلقائي" (Auto-increment) حيث يبدأ الترقيم بالعدد 1 ثم يزداد بمقدار 1 مع كل سجل جديد (بعض قواعد البيانات تسمح بتحديد قيمة البداية و قيمة الزيادة). و ميدأ عمله أنه دائماً يزداد بمقدار الزيادة (غالباً 1) و لا يتم استعمال أي عدد تم استعماله سابقاً حتى و إن تم حذف السجل المرتبط به (مثل عداد يعمل في اتجاه واحد و لا يمكن إرجاعه إلى الخلف). وجود انقطاع في التسلسل (مثلاً 1 - 2 - 3 - 5 - 6 حيث لا يوجد 4) لا يحدث فقط بسبب الحذف، بل أيضاً بسبب عمليات الإضافة الفاشلة، أي عند حدوث خطأ يمنع حفظ السجل الجديد بعد أن تم توليد رقم تلقائي من أجله.

السبب في عمل هذا النوع من الحقول بهذا الشكل منطقي، فغالباً ما تستعمل هذه الحقول للربط بين الجداول، حيث يكون حفل الترقيم التلقائي في الجدول الرئيسي مفتاحاً أساسياً و تكون قيمه مستعملة في حقل المفتاح الأجنبي في الجدول أو الجداول الفرعية. و ربما يكون من الأفضل أن يبقى المحذوف محذوفاً حتى نعرف أن هناك سجل تم حذفه.

* ملاحظة: استعمال MAX للحصول على أكبر رقم تعطي نفس النتيجة، ففي المثال 1 - 2 - 3 - 5 - 6 ستعطي الرقم 7 للسجل الجديد و ليس 4.

نرجو الاستفادة و السلام.


مشكل الترقيم التلقائي لقاعدة البيانات - ALKO - 16-08-2014

السلام عليكم
كنبت رد مفصل لكن Ctrl+Z
دهبت بكل شيئ
المشكل في اسنعلامك انه غير منطقي و ثانيا كارثي ان كان الجدول فارغ فسيعيد
Max:=null
a:= Query1nonoid.AsInteger+1 ===================OverFlow
a:=Null+1;
الحل بسيط
كود :
with AQMax do begin Close; SQL.Clear; SQL.Add('Select max(Cod_Cl+1) As Mx From Client); Open; end; if AQMax.FieldValues['Mx']=null then a:=1 else a:=FrmDM.AQMaxFieldByName('Mx').Assinteger;



مشكل الترقيم التلقائي لقاعدة البيانات - ALKO - 16-08-2014

السلام عليكم
كتبت رد مفصل لكن Ctrl+Z
دهبت بكل شيئ
المشكل في استعلامك انه غير منطقي و ثانيا كارثي ان كان الجدول فارغ فسيعيد
Max:=null
a:= Query1nonoid.AsInteger+1 ===================OverFlow
a:=Null+1;
الحل بسيط
كود :
with AQMax do begin Close; SQL.Clear; SQL.Add('Select max(nonoid+1) As Mx From Enfant); Open; end; if AQMax.FieldValues['Mx']=null then a:=1 else a:=AQMax.FieldByName('Mx').Asinteger;



مشكل الترقيم التلقائي لقاعدة البيانات - phpbb3 - 16-08-2014

قمت بعمل هذا الكود في برنامجي التجاري والحمد لله تعمل بكفائه

قريبا سأقوم بطرح نسخه تجريبيه منه


كود :
'select ' + field_name + ' from ' + table_name + ' order by ' + field_name + ' desc'