![]() |
|
اين الخطأ في هذا الكود - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : اين الخطأ في هذا الكود (/showthread.php?tid=7385) |
اين الخطأ في هذا الكود - medreg - 06-01-2016 السلام عليكم ورحمة الله لقد وضعت هذا الكود والمقصود منه هو بيحث في الجدول abstable2 اذا كان الرقم Cde يساوي القيمة 0 أو يساوي قيمة اكثر من 0 يجب ان يكون الحقل CdeN في الجدولabstable1 تساوي القيمة Cde + 1 والمشكلة التي اعاني منها الان هي اذا كان الجدول abstable2 فارغ لا يجعل قيمة الحقل CdeN في الجدول abstable1 تساوي 1 والمطلوب لوكانت قيمة Cde تساوي 0 يجب ان تكون قيمة CdeN تساوي 1 كود : procedure TForm1.Button1Click(Sender: TObject);
var t01,t02,t03:string;
MT:double;
s01:integer;
begin
if abstable1.State=DSEdit then abstable1.Post;
abstable2.Open;
abstable2.First;
while not abstable2.Eof do
begin
{Keep Previous values}
s01 := abstable2.FieldValues['Cde'];
t01 := abstable2NAT.AsString;
t02 := abstable2NBT.AsString;
t03 := abstable2NCT.AsString;
MT := abstable2MT_N.AsFloat;
abstable2.Next;
if abstable1.Locate('NAT;NBT;NCT',vararrayof([t01,t02,t03]),[locaseinsensitive,lopartialkey]) then
begin
abstable1.Edit;
if MT<>0 then
begin
If abstable1MT_RS.Asfloat<>0 then
begin
end else begin
abstable1.Edit;
abstable1MT_TO.AsFloat := MT;
abstable1MT_NV.AsFloat := 0;
abstable1CdeA.asinteger := s01;
abstable1CdeN.asinteger := s01+1;
end;
end else begin
abstable1.Edit;
abstable1MT_TO.AsFloat :=0;
abstable1MT_NV.AsFloat :=0;
end;
abstable1.Next;
end else begin
end;
end;
end;
end;RE: اين الخطأ في هذا الكود - محمد عبد العزيز - 06-01-2016 اخي medreg دائما طرحك ناقص اذا كان abstable2 فارغ فلن ينفذ الكود لانك كتبت كود : while not abstable2.Eof doRE: اين الخطأ في هذا الكود - medreg - 06-01-2016 إذا ماذا يجب علي فعله حتى يتم تنفيذ الكود وحسب ما فهمت من ردك فإن المشاركة السابقة طرحها ناقص الى حد الآن في هذه الحالة اشر علي بكبفية الطرح حتة يتمكن الجميع من فهمه وجزاكم الله عنا كل خير RE: اين الخطأ في هذا الكود - محمد عبد العزيز - 06-01-2016 ما محتوى abstable2 و abstable1 وما العلاقة بينهما RE: اين الخطأ في هذا الكود - medreg - 06-01-2016 السلام عليكم اتمنى ان اكون موفقا في هذا التوضيح AbsTable2 هو عبارة عن بطاقة حساب وتتكون من 5 حقول Cde مفتاح AbsTable2 CdeA رقم البطاقة السابق CdeN رقم البطاقة الحالي NAT المادة NBT الفصل MT01 الرصيد MT02 الزيادة MTOT الرصيد الجديد بمجرد الضغط على زر الحساب يتم تحويل رقم البطاقة CdeN والرصيد الجديد MTOT مع مقارنة المادة والفصل الى AbsTable1 وعند إضافة سجل جديد في AbsTable2 يجب ان يبحث في AbsTable1 عن NAT وNBT إذا كانا موجودان في هذا الجدول فمباشرة يجعل قيمة الحقل CdeA الموجود في AbsTable2 تساوي قيمة الحقل CdeN الموجودة في AbsTable1 وقيمة الحقل CdeN الموجودة في AbsTable2 تساوي قيمة CdeA + 1 أما MTOT يساوي قيمة MTSD الموجودة في AbsTable1 إذا كانت قيمة المادة NAT و الفصل NBT المحولان من AbsTable2 يساويان نفس القيمة الموجودة في الجدول AbsTable1 في هذه الحالة يتم تغيير رقم البطاقة مع الرصيد فقط cdeN و MTSD وإن لم تكن المادة والفصل يساويان نفس القيمة يضاف سجل جديد بالقيمة الجديدة في AbsTable1 يعني ان AbsTable1 يتم فيه تغيير القيم حسب كل مادة وفصل كل ما اضيف سجل في AbsTable2 وتمت عملية الحويل AbsTable1 هو عبارة عن حفظ رقم البطاقة الجديد والمبلغ الجديد من AbsTable2 Cde بساوي رقم البطاقة الموجود في AbsTable2 والمتمثل في CdeN NAT يساوي المادة الموجودة في AbsTable2 والمتمثلة في NAT NBT يساوي الفصل الموجود في AbsTable2 والمتمثلة في NAT MTSD يساوي MTOT الموجود في AbsTable2 وبالتوفيق اسف البطاقة تتكون من 08 حقول وليس 5حقول البطاقة تتكون من 07 حقول والثامن مفتاح الجدول عفوا الكود الذي سبق لي وان وضعته يعتبر AbsTable2 هو AbsTable1 المشار اليه في التوضيح وAbsTable1 هو AbsTable2 المشار اليه في التوضيح بالتوفيق وآسف مرة أخرى على التكربر |