السلام عليكم: شرعت في برمجة مشروع بسيط مستعملا قاعدة بيانات absolute database، في البداية أدرجت 5 مستخدمين للبرنامج، وأنهيت المكونات الأخرى على المشروع، بعدها جربت حذف مستخدمين إثنين، تمت عملية الحذف، لكن قاعدة البيانات لازالت تحتفظ بخمسة مستخدمين في table.itemindex.
فكيف يتم تصحيح عدد الأسطر عند الحذف؟
حسب فهمي لما كتبته في سؤالك
قم بتصليح قاعدة البيانات (Database -> Repair Database)
![[صورة: attachment.php?aid=3813]](http://delphi4arab.net/forum/attachment.php?aid=3813)
أرفق المثال (إذا أمكن).
أسهل طريقة - بدون تعقيدات - يمكن أن أفكر فيها هي:
تغيير 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;
بارك الله فيك أخي مروان، لقد تم الحل لو لا أنك وضعت الكود الخاص بـ index
من خلال المثال الذي وضعته أنت عرفت أنني كنت في واد آخر.
إذن index هي خاصة بعدد الأعمدة، وليس الأسطر
لقد بحثت منذ قليل فوجدت أن الأسطر يرمز لها بـ record count.
--------------------------------------------------------------------------------
المصادفة هي التي تركتني في هذه الإشكالية: إذ في تطبيقي للمرة الأولى
كان عدد الأعمدة 5 وكذلك عدد الأسطر في المستخدمين 5
فكان الحذف يتم من الأسطر، والخطأ أنني كنت استعمل الأعمدة في التحقق.
---------------------------------------------------------------------------------
شكرا
رُب مصادفة خير من ألف ميعاد كما يقال.