المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : رسالة خطأ في حلقة أثناء البحث في الجدول


Anter2010
26-07-2010, 10:04 PM
السلام عليكم و رحمة الله تعالى و بركاته

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


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;

رسالة الخطأ

http://www10.0zz0.com/2010/07/26/20/994355422.jpg

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

kachwahed
26-07-2010, 10:26 PM
وعليكم السلام ورحمة الله تعالى وبركاته
لم أطلع على المثال بعد، لكن لاحظ:
while (Data.table7Num_A.Value=data.table2Num_A.Value) and not(data.table2.Eof) do
استخدمت EOF يعني EndOfFile وليس بعدها Next!
رسالة الخطأ تعني محاولة الكتابة في الحقل الخطأ
من فضلك أكتب عنوان مناسب لاحقا...
بالتوفيق.

Anter2010
26-07-2010, 10:43 PM
السلام عليكم و رحمة الله تعالى و بركاته
شكرا الاخ كاش و احد لكن انا استعملتها مع
paradox وناجحة
الطريقة لم تعمل معي في قاعدة البيانات Absolute database
اظن المشكلة في قاعدة البيانات

Lam.Abdeldjalil
27-07-2010, 08:09 PM
السلام عليكم

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

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

بالتوفيق

Anter2010
28-07-2010, 04:52 PM
السلام عليكم و رحمة الله تعالى و بركاته

مشكور الاخ عبد الجليل و كاش واحد على كل النصائح ساجرب نصيحتك
بارك الله فيك

Anter2010
29-07-2010, 09:19 PM
السلام عليكم و رحمة الله تعالى و بركاته
للاسف اخي عبد الجليل لم تنجح طريقتك

Lam.Abdeldjalil
29-07-2010, 09:39 PM
و عليكم السلام ورحمة الله تعالى وبركاته


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


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 وتعرف على السطر المؤدي إلى ظهور الرسالة
بالتوفيق

medreg
30-07-2010, 11:12 AM
اتمنى اخي ان يفيدك هذا
فهي محاولة بما اشار عليك به اخي Kachwahed
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;

أو
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;

وبالتوفيق