delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف أعيد قيمة index عند حذف سطر؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم: شرعت في برمجة مشروع بسيط مستعملا قاعدة بيانات absolute database، في البداية أدرجت 5 مستخدمين للبرنامج، وأنهيت المكونات الأخرى على المشروع، بعدها جربت حذف مستخدمين إثنين، تمت عملية الحذف، لكن قاعدة البيانات لازالت تحتفظ بخمسة مستخدمين في table.itemindex.
فكيف يتم تصحيح عدد الأسطر عند الحذف؟
حسب فهمي لما كتبته في سؤالك

قم بتصليح قاعدة البيانات (Database -> Repair Database)

[صورة: attachment.php?aid=3813]
أخي مروان: شكرا على الرد، إلا أنني قمت بذلك مسبقا عدة مرات، ولازالت تحتفظ بالعدد الأول من الأسطر.
لا أعلم أين الخلل.
الصورة الأولى لقاعدة البيانات قبل الحذف :
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
أرفق المثال (إذا أمكن).

أسهل طريقة - بدون تعقيدات - يمكن أن أفكر فيها هي:

تغيير 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
فكان الحذف يتم من الأسطر، والخطأ أنني كنت استعمل الأعمدة في التحقق.
---------------------------------------------------------------------------------
شكرا
رُب مصادفة خير من ألف ميعاد كما يقال.