المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم ورحمة الله تعالى وبركاته
لدي مشكلة في حذف سجل من قاعدة Absolute
وضعت هذا الكود
PHP كود :
ABSTable1.delete;
ABSTable1.Refreshe;
لكن عندما اصيف سجل أخر يعطيني الرقم الموالي للرقم الذي حذف
بمعنى إذا كان الرقم الذي تم حذفه هو رقم 2
عندما اضيف سجل جديد يعطيني رقم 3
علما ان نوع الحقل المسمى Numero هو Autoinc
وهل الكود الذي وضعته لللإضافة على زر الإضافة صحيح ولا ينقصه شيء وهو كالآتي
PHP كود :
ABSTable1.edit;
ABSTable1.Insert;
ABSTable1.Post;
وما الكود الذي اضعه لتفادي تكرار رقم السجل وأين أضعه
وجزاكم الله عنا كل خير
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
وعليكم السلام
اولا الكود الثاني خطا
انت تقوم بتعديل سجل/ثم اضافة/ثم حفظ دون كتابة قيم الحقول
بالنسبة لسؤالك لا يمكن باستعمال حقل Autoinc
ان اردت لاخر سجل ان يكوةن كما تريد:
قبل اضافة سجل خذ قيمة السجل الاخير
ضف لها واحد واستخدمها كقيمة للحقل
طبعا غير النوع من AutoInc الى حقب ععدي
وبالتوفيق
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
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;
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
الامر ابسط
افعل كما قلت لك
وتعمل على Paradox و Absolute او اي قاعدة!
أخر سجل
خذ قيمة الحقل
ضف لها واحد
ضف سجل جديد
ضع به القيمة
كود :
x:=0;
Table1.Last;
x:=Table1.FieldByName('code').AsInteger;
x:=x+1;
Table1.Insert;
Table1.FieldByName('code').AsInteger:=x;
يمكن ان تستخدم Query ، اظنك لا تحبها 
وبالتوفيق
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
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 ، اظنك لا تحبها 
وبالتوفيق
مشكور يا اخي معك حق والله كلما رأيت هذه الكلمة Query يزيد تشاؤمي منها
ولا أعرف سبب ذلك ربما لعدم تعاملي معها بقواعدها
سافعل ما اشرت علي به وسأرد عليك
ووفقك الله
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس :والله كلما رأيت هذه الكلمة query يزيد تشاؤمي منها
ههه، كنت مثلك عند بداياتي... احب ابرمج كل شيئ بنفسي
ثم اكتشفت كم كنت على خطأ
الsqlتوفر الكثير من الوقت
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
لقد نجحت العملية شكرًا جزيلاً هذا الكود افضل من الأول واصغر وابسط من الكود الذي كنت استعمله
جزاكم الله عنا كل خير
ينقصني الآن وضع رسالة لتخبرني إن كان رقم التسجيل موجود مسبقًا في حالة الإضافة اليدوية في الديبقريد مثلاً
فكيف ذلك
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس : في حالة الإضافة اليدوية في الديبقريد مثلاً
امنع التعديل به بتغيير ReadOnly الى True
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
b.m.abdelaziz كتب :امنع التعديل به بتغيير readonly الى true
هل يمكنني إستعمال الكود في الديبقريد من دون ان استعمل زر للإضافة
واين اضعه
يعني كلما انتقلت من السطر الى السطر الموالي يضيف الرقم التلقائ من دون استعمال زر
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
امنع الكتابة في الDBGrid يتغيير الخاصية ReadOnly
واترك المستخدم يستعمل DBEdit أو Edit فقط