السلام عليكم ورحمة الله تعالى وبركاته
جمعة مباركة إن شاء الله وتقبل الله منا ومنكم الصلاة بمزيد من الآجر والثواب والمغفرة
اخواني مشكل غريب لم افهمه
داحل زر لدي كود لتنفيذ عملية ما
من ناحية يعمل بشكل جيد فهو يعمل لكن كلما انتقلت الى سجل يعمل بشكل جيد حتى يصل الى عدد معنين من السجلات واظنه 4 سجلات عندما انتقل الى السجل الخامس يتأخر لمدة 10 ثواني او أكثر وكل ما انتقلت الى السجل الموالي يتأخر أكثروعندما ارغب غي التنقل الى السجل الموالي وليكن السجل مثلا 05 او 06 يجب علي اغلاق البرنامج واعادة تشغيله والذهاب الى السجل الخامس لإكمال تنفيذ العملية
لذا ما سبب هذه المشكلة
جزاكم الله عنا كل خير
سلام عليكم / جمعة مباركة
يبدو ان برنامجك يتعامل مع قواعد بيانات
ممكن ترفق الكود الموجود بداخل btn
لايمكن لاحد ان يعطى رائيا بدون ان يعرف ما موجود من برمجة
كما قال الاخ اما انك تستخدم قواعد بيانات او مؤقتتات او صور كبيرة او ما شابه مع برمجة سيئة
السلام عليكم ورحمة الله تعالى وبركاته
اليك الكود المتعلق بالزر Button
كود :
procedure TFrm1.BtnRefresheClick(Sender: TObject);
var tcde:integer;
tLib:String;
tMnt:Double;
var temp:TFrm2;
begin
DM.Table2.Close;
temp:= TFrm2.Create(Self);
temp.Radiogroup1.ItemIndex:=1;
with DM do
begin
Table2.Open;
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
{Keep Previous values}
tcde := Table1.Fieldvalues['Cde'];
tLib := Table1.fieldvalues['Lib_Cde'];
tMnt := Table1.FieldValues['Mont'];
Table1.Next;
if DM.Table2.Locate('cde',vararrayof([tcde]),[locaseinsensitive,lopartialkey]) then
begin
DM.Table2.Edit;
DM.Table2.fieldvalues['cde'] := tcde;
DM.Table2.fieldvalues['lib_cde'] := tLib;
DM.Table2.fieldvalues['Mont'] := tMnt;
end else begin
DM.Table2.Insert;
DM.Table2.fieldvalues['cde'] := tcde;
DM.Table2.fieldvalues['lib_cde'] := tLib;
DM.Table2.fieldvalues['Mont'] := tMnt;
DM.Table2.Post;
DM.Table2.Refresh;
end;
end;
end;
DM.Table3.Edit;
DM.Table3dbcheckBox.Value:=false;
DM.Table3.Post;
end;
لقد حلت المشكلة والخطأ هو أنني لم احرر الفورم التي كنت مصرح بها
كان يجب علي إضافة هذا السطر بعد التصريح
كود :
temp:= TFrm2.Create(Self);
temp.Radiogroup1.ItemIndex:=1;
temp.free;
بارك الله فيكم على المرور
السلام عليكم
يمكن اختصار الكود قليلا
كود :
procedure TFrm1.BtnRefresheClick(Sender: TObject);
begin
with DM do
begin
Table2.Close;
Table2.Open;
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
if DM.Table2.Locate('cde',vararrayof([tcde]),[locaseinsensitive,lopartialkey]) then
Table2.Edit else Table2.Insert;
Table2.fieldvalues['cde'] := Table1.Fieldvalues['Cde'];
Table2.fieldvalues['lib_cde'] := Table1.fieldvalues['Lib_Cde'];
Table2.fieldvalues['Mont'] := Table1.FieldValues['Mont'];
Table2.Post;
Table2.Refresh;
end;
Table1.Next;
end;
DM.Table3.Edit;
DM.Table3dbcheckBox.Value:=false;
DM.Table3.Post;
end;
السلام عليكم
ملاحظة اخرى: الحقل cde من نوع Integer اذن استخدام locaseinsensitive,lopartialkey في Locate لا معنى لها!