المشاركات : 66
المواضيع 30
:
: 36
الإنتساب : Sep 2012
قمت بإنشاء قاعدة بيانات paradox وكان لديا حقل قمت بتعيين نوعه (+) كي يقوم بترقيمه أوتوماتيكيا
المشكلة التي واجهتني هي أنه عند حدف حقل مثلا رقم 5 عند إضافة حقل جديد يقوم بترقيمه بالرقم 6 وليس 5
المشاركات : 91
المواضيع 31
:
: 0
الإنتساب : Sep 2009
السلام عليكم
لا يمكن لأن الترقيم يضيف في تسجيلة رقم 1
لذا يمكنك جعل الحقل int والزيادة تكون برمجيا
وذلك بأخذ أكبر قيمة في الجدول وإصافة 1 لها
شكرا والسلام عليكم
المشاركات : 46
المواضيع 16
:
: 2
الإنتساب : Dec 2013
السلام عليكم
لقد واجهتني نفس المشكلة ولم أجد لها حلا
هل من شرح مفصل؟
المشاركات : 9
المواضيع 5
:
: 0
الإنتساب : Jan 2012
انا جربت طريقه ونجحت معى وهو كالاتى
عمل 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 ;
ممكن تكون طويله ولكنها نجحت معى
المشاركات : 119
المواضيع 0
:
: 0
الإنتساب : Sep 2012
السلام عليكم...
تلك هي طريقة عمل الحقل من النوع "ترقيم تلقائي" (Auto-increment) حيث يبدأ الترقيم بالعدد 1 ثم يزداد بمقدار 1 مع كل سجل جديد (بعض قواعد البيانات تسمح بتحديد قيمة البداية و قيمة الزيادة). و ميدأ عمله أنه دائماً يزداد بمقدار الزيادة (غالباً 1) و لا يتم استعمال أي عدد تم استعماله سابقاً حتى و إن تم حذف السجل المرتبط به (مثل عداد يعمل في اتجاه واحد و لا يمكن إرجاعه إلى الخلف). وجود انقطاع في التسلسل (مثلاً 1 - 2 - 3 - 5 - 6 حيث لا يوجد 4) لا يحدث فقط بسبب الحذف، بل أيضاً بسبب عمليات الإضافة الفاشلة، أي عند حدوث خطأ يمنع حفظ السجل الجديد بعد أن تم توليد رقم تلقائي من أجله.
السبب في عمل هذا النوع من الحقول بهذا الشكل منطقي، فغالباً ما تستعمل هذه الحقول للربط بين الجداول، حيث يكون حفل الترقيم التلقائي في الجدول الرئيسي مفتاحاً أساسياً و تكون قيمه مستعملة في حقل المفتاح الأجنبي في الجدول أو الجداول الفرعية. و ربما يكون من الأفضل أن يبقى المحذوف محذوفاً حتى نعرف أن هناك سجل تم حذفه.
* ملاحظة: استعمال MAX للحصول على أكبر رقم تعطي نفس النتيجة، ففي المثال 1 - 2 - 3 - 5 - 6 ستعطي الرقم 7 للسجل الجديد و ليس 4.
نرجو الاستفادة و السلام.
المشاركات : 37
المواضيع 2
:
: 36
الإنتساب : Jul 2013
السلام عليكم
كنبت رد مفصل لكن 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;
الحكمة ضالة المؤمن أنى وجدها فهو أحق الناس بها
المشاركات : 37
المواضيع 2
:
: 36
الإنتساب : Jul 2013
السلام عليكم
كتبت رد مفصل لكن 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;
الحكمة ضالة المؤمن أنى وجدها فهو أحق الناس بها
المشاركات : 56
المواضيع 8
:
: 2
الإنتساب : Jun 2009
قمت بعمل هذا الكود في برنامجي التجاري والحمد لله تعمل بكفائه
قريبا سأقوم بطرح نسخه تجريبيه منه
كود :
'select ' + field_name + ' from ' + table_name + ' order by ' + field_name + ' desc'