كيف يمكن حذف سجل واحد بدون ما يبقى اثره Absoulute
#1
السلام عليكم ورحمة الله تعالى وبركاته

لدي مشكلة في حذف سجل من قاعدة Absolute

وضعت هذا الكود
PHP كود :
ABSTable1.delete;
ABSTable1.Refreshe; 
لكن عندما اصيف سجل أخر يعطيني الرقم الموالي للرقم الذي حذف
بمعنى إذا كان الرقم الذي تم حذفه هو رقم 2
عندما اضيف سجل جديد يعطيني رقم 3

علما ان نوع الحقل المسمى Numero هو Autoinc

وهل الكود الذي وضعته لللإضافة على زر الإضافة صحيح ولا ينقصه شيء وهو كالآتي
PHP كود :
ABSTable1.edit;
ABSTable1.Insert;
ABSTable1.Post; 

وما الكود الذي اضعه لتفادي تكرار رقم السجل وأين أضعه
وجزاكم الله عنا كل خير
الرد
#2

وعليكم السلام

اولا الكود الثاني خطا
انت تقوم بتعديل سجل/ثم اضافة/ثم حفظ دون كتابة قيم الحقول

بالنسبة لسؤالك لا يمكن باستعمال حقل Autoinc
ان اردت لاخر سجل ان يكوةن كما تريد:
قبل اضافة سجل خذ قيمة السجل الاخير
ضف لها واحد واستخدمها كقيمة للحقل
طبعا غير النوع من AutoInc الى حقب ععدي

وبالتوفيق
الرد
#3
B.M.AbdelAziZ كتب :
وعليكم السلام

اولا الكود الثاني خطا
انت تقوم بتعديل سجل/ثم اضافة/ثم حفظ دون كتابة قيم الحقول

بالنسبة لسؤالك لا يمكن باستعمال حقل Autoinc
ان اردت لاخر سجل ان يكوةن كما تريد:
قبل اضافة سجل خذ قيمة السجل الاخير
ضف لها واحد واستخدمها كقيمة للحقل
طبعا غير النوع من AutoInc الى حقب ععدي

وبالتوفيق

شكرً جزيلاً
كنت استعمل هذا الكود مع قاعدة البيانات PARADOX
لكن عندما انتقلت الى Absolute
لم يعد يعمل ولا اعرف ما السبب
اليك الكود الذي كنت استعمله قبل تنقلي للAbsolute
للإضافة التلقائة ونوع الحقل SMALLINT
الكود
كود :
InsertType:string; TCde: Char; implementation uses UModule; {$R *.dfm} procedure TFormRT4_FCT.FormActivate(Sender: TObject); begin TCde:=#0; InsertType:='Insert'; with DM.Table1 do begin SetKey; EditKey; ActiveControl:=Cde; Cde.text:=IntToStr(DM.Table1.RecordCount+1); end; end; procedure TFormRT4_FCT.CdeKeyPress(Sender: TObject; var Key: Char); var KeyValue:Integer; cKeyValue:String; begin if key=#13 then DBEdit7.setfocus; begin if InsertType='FindKey' then begin with DM.Table1 do begin if Cde.text='' then Cde.text:='0'; EditKey; DM.Table1['OR']:=StrToInt(Cde.text); if not GotoKey then begin end; end; end; if InsertType='Insert' then begin with DM.Table1 do begin if Cde.text='' then Cde.text:='0'; EditKey; DM.Table1['OR']:=StrToInt(Cde.text); cKeyValue:=Cde.text; try KeyValue:=StrToInt(cKeyValue) except KeyValue:=0 end; if not GotoKey then begin DM3.Table1.Insert; DM.Table1['OR']:=KeyValue; DM.Table1.Post; DM.Table1.Edit; end; end; end; end;
الرد
#4

الامر ابسط
افعل كما قلت لك
وتعمل على Paradox و Absolute او اي قاعدة!
أخر سجل
خذ قيمة الحقل
ضف لها واحد
ضف سجل جديد
ضع به القيمة

كود :
x:=0; Table1.Last; x:=Table1.FieldByName('code').AsInteger; x:=x+1; Table1.Insert; Table1.FieldByName('code').AsInteger:=x;
يمكن ان تستخدم Query ، اظنك لا تحبها Big Grin
وبالتوفيق
الرد
#5
B.M.AbdelAziZ كتب :
الامر ابسط
افعل كما قلت لك
وتعمل على Paradox و Absolute او اي قاعدة!
أخر سجل
خذ قيمة الحقل
ضف لها واحد
ضف سجل جديد
ضع به القيمة

كود :
x:=0; Table1.Last; x:=Table1.FieldByName('code').AsInteger; x:=x+1; Table1.Insert; Table1.FieldByName('code').AsInteger:=x;
يمكن ان تستخدم Query ، اظنك لا تحبها Big Grin
وبالتوفيق

مشكور يا اخي معك حق والله كلما رأيت هذه الكلمة Query يزيد تشاؤمي منها
ولا أعرف سبب ذلك ربما لعدم تعاملي معها بقواعدها

سافعل ما اشرت علي به وسأرد عليك
ووفقك الله
الرد
#6
إقتباس :والله كلما رأيت هذه الكلمة query يزيد تشاؤمي منها
ههه، كنت مثلك عند بداياتي... احب ابرمج كل شيئ بنفسي
ثم اكتشفت كم كنت على خطأ
الsqlتوفر الكثير من الوقت
الرد
#7
لقد نجحت العملية شكرًا جزيلاً هذا الكود افضل من الأول واصغر وابسط من الكود الذي كنت استعمله
جزاكم الله عنا كل خير

ينقصني الآن وضع رسالة لتخبرني إن كان رقم التسجيل موجود مسبقًا في حالة الإضافة اليدوية في الديبقريد مثلاً
فكيف ذلك
الرد
#8
إقتباس : في حالة الإضافة اليدوية في الديبقريد مثلاً
امنع التعديل به بتغيير ReadOnly الى True
الرد
#9
b.m.abdelaziz كتب :امنع التعديل به بتغيير readonly الى true

هل يمكنني إستعمال الكود في الديبقريد من دون ان استعمل زر للإضافة
واين اضعه
يعني كلما انتقلت من السطر الى السطر الموالي يضيف الرقم التلقائ من دون استعمال زر
الرد
#10

امنع الكتابة في الDBGrid يتغيير الخاصية ReadOnly
واترك المستخدم يستعمل DBEdit أو Edit فقط
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم