المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
لقد استعملت محاولة لكن باستعمال كثرة المتغيرات
وما اطلبه هو استعمال كود بسيط من دون استعمال كثرة المتغيرات ويقوم بنفس الوظيفة الموجودة بمحاولتي
اطلعو على المحاولة حتى تفهموا المقصود وجزاكم الله عنا كل خير
المشاركات : 219
المواضيع 24
:
: 16
الإنتساب : May 2009
السلام عليكم
جولة 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;
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
اشكرك اخي على المعلومة القيمة والمجهود المبذول
بالنسبو للطرقة الأولى فهي تشبه طريقي إلا انها اخف منها اي اقصر منها لكن ما ابحث عنه هو التقليص من المتغيرات بدلا من ان اكتب 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;
وجزاكم الله عنا كل خير
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم ورحمة الله تغالى وبركاته
لقد افادني احد الأساتذة بهذا الكود
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;
اتمنى ان يستفيد منه الآخرين