delphi4arab منتديات دلفي للعرب

نسخة كاملة : eof في السجلات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام على اخوتي
واجهتني اخوتي الكرام مشكلة في تنفيد كود من هدا النوع مهما كان استعماله المهم يغطي عمل المقارنة الى اخر الملف اكان دلك بحساب المجموع أ غيره اليكم الكود :
كود :
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
في الاول
اد اطمح الى ان تتم المقارنة لآخر الملف لكنها تصلح مع التسجيلة الأولى فقط
السلام عليكم
كود :
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
مشكور اخي محمد
والله حل جيد
انا فقط في اول الطريق في درب التعلم
وعن طريقتك والله صالحة الف بالمئة واتحفتني وانرتني بهدا الحل الرائع
لكن كنت حابب اتعلم طريقة eof
لضني اني احتاجها في العمليات الحسابية كحساب كمية منتوج لمنتوج متواجد عندك
واكرر شكري لك
مثلا عندي جدول يتكون من
رقم البضاعة
تاريخ الدخول
كمية البضاعة
كيف نجد مجموع كمية البضاعة الموجودة في المخزن عندي دون التقيد بتاريخ اي كل البضاعة
وهدا على سبيل المثال فقط
اضن انه سوف نلجأ الى حلقة ونستعمل فيها eof
صحح لي وكل الاخوة الدين في مقدرتهم دلك

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
تصفح المنتدى لامثلة عن ذلك
وبالتوفيق
B.M.AbdelAziZ كتب :[COLOR="Red"]ومن الاحسن والاسرع استخدام SQL
[/COLOR]تصفح المنتدى لامثلة عن ذلك

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