السلام عليكم: شرعت في برمجة مشروع بسيط مستعملا قاعدة بيانات absolute database، في البداية أدرجت 5 مستخدمين للبرنامج، وأنهيت المكونات الأخرى على المشروع، بعدها جربت حذف مستخدمين إثنين، تمت عملية الحذف، لكن قاعدة البيانات لازالت تحتفظ بخمسة مستخدمين في table.itemindex.
فكيف يتم تصحيح عدد الأسطر عند الحذف؟
أخي مروان: شكرا على الرد، إلا أنني قمت بذلك مسبقا عدة مرات، ولازالت تحتفظ بالعدد الأول من الأسطر.
لا أعلم أين الخلل.
الصورة الأولى لقاعدة البيانات قبل الحذف : https://c.top4top.net/p_93659lk11.gif
الصورة للقاعدة بعد الحذف : https://d.top4top.net/p_936dn5ec1.gif
بعدها قمت بـ repair database
-------------------------------------------
الكود في الرز بعد الحذف :
showmessage(inttostr(dtmdl.TABLE1utilisateur.Index));
والنتيجة : https://f.top4top.net/p_936hznel1.gif
25-07-2018, 06:14 PM (آخر تعديل لهذه المشاركة: 25-07-2018, 07:32 PM بواسطة merouane.)
أرفق المثال (إذا أمكن).
أسهل طريقة - بدون تعقيدات - يمكن أن أفكر فيها هي:
تغيير N إلى Integer (إنشاء حقل آخر اسمه id يكون AUTOINC)
عبر تعليمة SQL بسطر وحيد يمكن معرفة آخر N في الجدول.
ولأن الإضافة في البداية ستعتمد على هذه التعليمة ستكون N مرتبة تصاعديا، بعد الحذف لن يكون هناك تكرار في الأرقام المعطاة للحقل (ستكون هناك فجوات بدون تكرار: مثل 1.2.3.5.7.13.25).
كود :
procedure addNewUser;
var
LastN: Integer;
const
SQLText = 'SELECT top 1,1 N FROM securite ORDER BY N DESC;';
begin
ABSQuery1.SQL.Clear;
ABSQuery1.SQL.Text := SQLText;
ABSQuery1.Active := True;
LastN := ABSQuery1.Fields[0].AsInteger;
ABSTable1.Append;
ABSTable1.FieldByName('N').AsInteger := LastN + 1;
ABSTable1.FieldByName('Utilisateur').AsString := 'BlaBla';
ABSTable1.Post;
end;
كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة1 user says Thank You to merouane for this post • belnono
بارك الله فيك أخي مروان، لقد تم الحل لو لا أنك وضعت الكود الخاص بـ index
من خلال المثال الذي وضعته أنت عرفت أنني كنت في واد آخر.
إذن index هي خاصة بعدد الأعمدة، وليس الأسطر
لقد بحثت منذ قليل فوجدت أن الأسطر يرمز لها بـ record count.
--------------------------------------------------------------------------------
المصادفة هي التي تركتني في هذه الإشكالية: إذ في تطبيقي للمرة الأولى
كان عدد الأعمدة 5 وكذلك عدد الأسطر في المستخدمين 5
فكان الحذف يتم من الأسطر، والخطأ أنني كنت استعمل الأعمدة في التحقق.
---------------------------------------------------------------------------------
شكرا