eof في السجلات
#1
السلام على اخوتي
واجهتني اخوتي الكرام مشكلة في تنفيد كود من هدا النوع مهما كان استعماله المهم يغطي عمل المقارنة الى اخر الملف اكان دلك بحساب المجموع أ غيره اليكم الكود :
كود :
procedure TForm2.SpeedButton1Click(Sender: TObject); begin while adodataset1.eof=true do begin if adodataset1.fieldbyname('yousername').Value =edit3.Text then if adodataset1.fieldbyname('password').Value =edit4.Text then begin form2.Hide; form3.show; end else form1.showmodal ; end ; end ; end ;
هل هدا الكود صحيح لانه لم يشتغل معي اين الخلل
وجربت هدا ايضا و نفس الشيء باضافة
كود :
while not eof do
بدلا من
كود :
while adodataset1.eof=true do
في الاول
اد اطمح الى ان تتم المقارنة لآخر الملف لكنها تصلح مع التسجيلة الأولى فقط
الرد
#2
السلام عليكم
كود :
if adodataset1.locate('yousername;password',VarArrayOf([edit3.Text,edit4.text]),[]) then
شيء إخر، بالنسبة لي لم إعد أستعمل النوافذ في حالة show دائما showmodal
مثلا
كود :
unit xxx; interface type TFCahier = class(TForm) ..... end; Procedure ShowCahier(f:integer=0); implementation Procedure ShowCahier; begin with TFCahier.Create(Application) do try ShowModal; finally Release; end; end;
لفتح النافذة يكفي النداء على الدالة ShowCahier
الرد
#3
مشكور اخي محمد
والله حل جيد
انا فقط في اول الطريق في درب التعلم
وعن طريقتك والله صالحة الف بالمئة واتحفتني وانرتني بهدا الحل الرائع
لكن كنت حابب اتعلم طريقة eof
لضني اني احتاجها في العمليات الحسابية كحساب كمية منتوج لمنتوج متواجد عندك
واكرر شكري لك
الرد
#4
مثلا عندي جدول يتكون من
رقم البضاعة
تاريخ الدخول
كمية البضاعة
كيف نجد مجموع كمية البضاعة الموجودة في المخزن عندي دون التقيد بتاريخ اي كل البضاعة
وهدا على سبيل المثال فقط
اضن انه سوف نلجأ الى حلقة ونستعمل فيها eof
صحح لي وكل الاخوة الدين في مقدرتهم دلك
الرد
#5

eof تعني نهاية الملف / جدول البيانات
bof تعني بدايته
وهي قيمة منطقية تكون صحيحة او خاطئة

الحلقة تنطلق من البداية الى النهاية مثلا
تكتب شيئ مثل:
PHP كود :
Var
 
SumQ : Integer;
begin
  SumQ
:=0;
  
Table1.First;
  
Repeat
    SumQ
:=SumQ+Table1.FieldByName('Qte').AsInteger;
    
Table1.Next;
  
Until Table1.Eof;

  
ShowMessage(IntToStr(SumQ));
end; 
Qte حقل كمية البضاعة
SumQ الكمية الكلية

او من النهاية الى البداية
نفس المثال السابق
PHP كود :
Var
 
SumQ : Integer;
begin
  SumQ
:=0;
  
Table1.Last;
  
Repeat
    SumQ
:=SumQ+Table1.FieldByName('Qte').AsInteger;
    
Table1.Prior;
  
Until Table1.Bof;

  
ShowMessage(IntToStr(SumQ));
end; 

هذا النوع من الحلقات قد يستهلك وقت حسب حجم القاعدة من سجلات
ومن الاحسن والاسرع استخدام SQL
تصفح المنتدى لامثلة عن ذلك
وبالتوفيق
الرد
#6
B.M.AbdelAziZ كتب :[COLOR="Red"]ومن الاحسن والاسرع استخدام SQL
[/COLOR]تصفح المنتدى لامثلة عن ذلك

+1
كما قال الأخ عبدالعزيز، إنس أمر eof و استعن بSQL
الرد
#7
يمكنك الأستعانة ب sql لأنها أفضل وفكرتها ليست صعبة
الرد
#8
السلام عليكم :
انا استخدم EOF في الجداول القليلة الحجم وهي ببساطة
كود :
table1.first while not table1.eof do begin some codes//// table1.next end
الرد


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


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