رسالة خطأ في حلقة أثناء البحث في الجدول
#1
السلام عليكم و رحمة الله تعالى و بركاته

هل هناك خلل في هذا الكود


كود :
procedure TForm1.SpeedButton1Click(Sender: TObject); Begin data.table2.First; data.table2.FindKey([data.table7Num_A.Value]); while (Data.table7Num_A.Value=data.table2Num_A.Value) and not(data.table2.Eof) do begin If data.Article.FindKey([data.table2Code_P.Value,2])then Begin data.Article.Edit; data.ArticleQtitte_stock.Value:=data.ArticleQtitte_stock.Value+ data.Table2Qtite_A.Value; end; end;end;

رسالة الخطأ

[صورة: 994355422.jpg]

وهذه قاعدة البيانات


الملفات المرفقة
.rar   Stock.rar (الحجم : 5.06 ك ب / التحميلات : 14)
الرد
#2
وعليكم السلام ورحمة الله تعالى وبركاته
لم أطلع على المثال بعد، لكن لاحظ:
كود :
while (Data.table7Num_A.Value=data.table2Num_A.Value) and not(data.table2.[color=Red]Eof[/color]) do
استخدمت EOF يعني EndOfFile وليس بعدها Next!
رسالة الخطأ تعني محاولة الكتابة في الحقل الخطأ
من فضلك أكتب عنوان مناسب لاحقا...
بالتوفيق.
الرد
#3
السلام عليكم و رحمة الله تعالى و بركاته
شكرا الاخ كاش و احد لكن انا استعملتها مع
paradox وناجحة
الطريقة لم تعمل معي في قاعدة البيانات Absolute database
اظن المشكلة في قاعدة البيانات
الرد
#4
السلام عليكم

لم أستعمل قواعد البيانات هذه من قبل لكن لي بعض الإقتراحات :

1- أككد على ملاحظة الأستاذ kachwahed حول عدم وجود Next
2- نلاحظ في الكود لا حفظ بعد التعديل المجرى لا وجدو للـ Post أو ..

3- جرب أضف السطرين قبل وبعد نهاية كل بحث
مثال
كود :
with data.table2do begin SetRangeStart; FindKey([data.table7Num_A.Value]); SetRangeEnd; end;
4- إستخدام Locate بدل FindKey

مثال
كود :
data.table2.Locate('filed1;field2', VarArrayOf([data.table7Num_A.Value, 'value2(string)']), [loPartialKey]);

إذا لم تنجح كل هذه الإقتراحات إستخدم الـ Debuger وتعرف على السطر المؤدي إلى ظهور الرسالة

نصيحة إستعمل Query بدل Table

بالتوفيق
الرد
#5
السلام عليكم و رحمة الله تعالى و بركاته

مشكور الاخ عبد الجليل و كاش واحد على كل النصائح ساجرب نصيحتك
بارك الله فيك
الرد
#6
السلام عليكم و رحمة الله تعالى و بركاته
للاسف اخي عبد الجليل لم تنجح طريقتك
الرد
#7
و عليكم السلام ورحمة الله تعالى وبركاته


يعني أن هذا الكود لم يعمل

كود :
procedure TForm1.SpeedButton1Click(Sender: TObject); Begin data.table2.First; while not(data.table2.Eof) do begin if data.Article.Locate('Num_A', data.table7Num_A.Value, [loPartialKey]) then begin If data.table2.Locate('Num_A', data.table2Code_P.Value, [loPartialKey]) then Begin data.Article.Edit; data.ArticleQtitte_stock.Value:=data.ArticleQtitte_stock.Value+ data.Table2Qtite_A.Value; data.Article.Post; end; end; data.table2.Next; end; end;
إستخدم الـ Debuger وتعرف على السطر المؤدي إلى ظهور الرسالة
بالتوفيق
الرد
#8
اتمنى اخي ان يفيدك هذا
فهي محاولة بما اشار عليك به اخي Kachwahed
PHP كود :
procedure TForm1.SpeedButton1Click(Sender: TObject);
Begin
  data
.table2.First;
  
data.table2.FindKey([data.table7Num_A.Value]);
  while (
Data.table7Num_A.Value=data.table2Num_A.Value) and not(data.table2.Eof) do
  
begin
      
If data.Article.FindKey([data.table2Code_P.Value,2])then
      Begin
      data
.Article.Edit;
      
data.ArticleQtitte_stock.Value:=data.ArticleQtitte_stock.Value+ data.Table2Qtite_A.Value;
       
data.Article.Post;
      
end;
  
data.table2.Next;
  
end;
end; 
أو
PHP كود :
procedure TForm1.SpeedButton1Click(Sender: TObject);
Begin
  data
.table2.First;
  
data.table2.FindKey([data.table7Num_A.Value]);
  while (
Data.table7Num_A.Value=data.table2Num_A.Value) and not(data.table2.Eof) do
  
begin
      
If data.Article.FindKey([data.table2Code_P.Value,2])then
      Begin
    data
.Article.Edit;
    
data.ArticleQtitte_stock.Value:=data.ArticleQtitte_stock.Value+ data.Table2Qtite_A.Value;
    
data.Article.Post;
      
end;
  
end;
  
data.table2.Next;
end; 
وبالتوفيق
الرد


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


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