delphi4arab منتديات دلفي للعرب
هل من طريقة ابسط لملأ حقل في جدول من جدول آخر بعد مقارنتهما - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : هل من طريقة ابسط لملأ حقل في جدول من جدول آخر بعد مقارنتهما (/showthread.php?tid=2142)



هل من طريقة ابسط لملأ حقل في جدول من جدول آخر بعد مقارنتهما - medreg - 26-06-2010

لقد استعملت محاولة لكن باستعمال كثرة المتغيرات
وما اطلبه هو استعمال كود بسيط من دون استعمال كثرة المتغيرات ويقوم بنفس الوظيفة الموجودة بمحاولتي
اطلعو على المحاولة حتى تفهموا المقصود وجزاكم الله عنا كل خير


هل من طريقة ابسط لملأ حقل في جدول من جدول آخر بعد مقارنتهما - shagrouni - 28-06-2010

السلام عليكم

جولة 1:
جعل التعليمات أكثر مقروئية:

PHP كود :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  
s1,s2,s3,s4,s5,s6,s7,s8,s9,s10:string;
  
cde, LB: string;
  
Fld: TField;
begin
   s1
:='';s2:='';s3:='';s4:='';s5:='';s6:='';s7:='';s8:='';s9:='';s10:='';

  
with DataModule3 do
  
begin
    abstable2
.First;
    while 
not abstable2.Eof do begin
      
//abstable2.edit;
      
cde := abstable2.FieldByName('cde').asstring;
      
LB := abstable2.fieldbyname('LB').asstring;

      if 
cde = '01' then s1 := LB;
      if 
cde = '02' then s2 := LB;
      if 
cde = '03' then s3 := LB;
      if 
cde = '04' then s4 := LB;
      if 
cde = '05' then s5 := LB;
      if 
cde = '06' then s6 := LB;
      if 
cde = '07' then s7 := LB;
      if 
cde = '08' then s8 := LB;
      if 
cde = '09' then s9 := LB;
      if 
cde = '10' then s10 := LB;
      
//abstable2.Post;
      //abstable2.Next;
    
end;

    
Fld := abstable1.fieldbyname('libelle');
    
abstable1.First;
    while 
not abstable1.Eof do begin
      abstable1
.edit;

      
cde := abstable2.FieldByName('cde').asstring;

      if 
cde = '01' then Fld.asstring := s1;
      if 
cde = '02' then Fld.asstring := s2;
      if 
cde = '03' then Fld.asstring := s3;
      if 
cde = '04' then Fld.asstring := s4;
      if 
cde = '05' then Fld.asstring := s5;
      if 
cde = '06' then Fld.asstring := s6;
      if 
cde = '07' then Fld.asstring := s7;
      if 
cde = '08' then Fld.asstring := s8;
      if 
cde = '09' then Fld.asstring := s9;
      if 
cde = '10' then Fld.asstring := s10;
      
abstable1.Post;
      
abstable1.Next;
    
end;
  
end; // with
end; 
جولة 2:
ايجاد طرق أفضل
مثلا فكرت بأن أستبدل المتغيرات العشر بمصفوفة من 10 عناصر،
(مع افتراض أن الحقول بها قيم ذات دلالة رقمية):


PHP كود :
procedure TForm1.bt1Click(Sender: TObject);
var
  
cde, LB: string;
  
Fld: TField;
  
s: array [1..10] of string;
  
i: integer;
begin
  with DataModule3 
do
  
begin
    abstable2
.First;
    while 
not abstable2.Eof do begin
      cde 
:= abstable2.FieldByName('cde').asstring;
      
LB := abstable2.fieldbyname('LB').asstring;
      for 
i := 1 to 10 do
        if 
StrToInt(cde) = i then
          s
[i] := LB;
    
end;

    
Fld := abstable1.fieldbyname('libelle');
    
abstable1.First;
    while 
not abstable1.Eof do begin
      abstable1
.edit;
      
cde := abstable2.FieldByName('cde').asstring;
      
i := StrToInt(cde);
      
Fld.asstring := s[i];
      
abstable1.Post;
      
abstable1.Next;
    
end;
  
end; // with
end; 



هل من طريقة ابسط لملأ حقل في جدول من جدول آخر بعد مقارنتهما - medreg - 29-06-2010

اشكرك اخي على المعلومة القيمة والمجهود المبذول
بالنسبو للطرقة الأولى فهي تشبه طريقي إلا انها اخف منها اي اقصر منها لكن ما ابحث عنه هو التقليص من المتغيرات بدلا من ان اكتب 01 و 02 و 03 و 04 و 05 و 06 و 07 و 08 و 09 و 10 اكتب x1 يأخذ قيمة cde
و x2 يأخذ قيمة LB
اما بالنسبة للطريقة الثانية فاليم ليس قيم رقمية متتالية
لأنه ربما تكون قيمة cde تساوي 060 و 111و010و116 الى اخره
أحتاج الى شيئ يشبه هذا
PHP كود :
var x,s: string
begin
x
:=abstable2Cde.asstring;
s:=abstable2LB.asstring:

if 
abstable1.fieldbyname('Cde').asstring=x then begin
abstable1
.edit;
abstable1.fieldbyname('Libelle').asstring:=s; 
وجزاكم الله عنا كل خير


هل من طريقة ابسط لملأ حقل في جدول من جدول آخر بعد مقارنتهما - medreg - 08-07-2010

السلام عليكم ورحمة الله تغالى وبركاته
لقد افادني احد الأساتذة بهذا الكود
PHP كود :
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    DataModule3
.abstable1.Open;
    
DataModule3.abstable1.First;
    while 
not DataModule3.abstable1.Eof do begin
      
if DataModule3.abstable2.Findkey([DataModule3.abstable1['Cde']]) then begin
      DataModule3
.abstable1.Edit;
      
DataModule3.abstable1['Libelle']:=DataModule3.abstable2['LB'];
      
DataModule3.abstable1.Post;
      
end;
    
DataModule3.abstable1.next;
    
end;
end; 
اتمنى ان يستفيد منه الآخرين