المشاركات : 117
المواضيع 4
:
: 40
الإنتساب : May 2017
10-04-2018, 08:53 PM
(آخر تعديل لهذه المشاركة: 10-04-2018, 08:55 PM بواسطة Ben.Ja.)
السلام عليكم, اظن ان المشكل في الحلقة لانك في كل دورة تغير فقط قيمة واحدة, انظر هذا المثال ربما يساعدك:
ولم ادخل قيمة ID لاني اظنك وضعت لها خاصية auto increment وبهذا لا تحتاج ادخالها في الاستعلام
PHP كود : Var i : integer; begin DM1.Source.close; DM1.Source.open; DM1.Source.first;
While Not DM1.Source.eof Do Begin With DM1.destination Do Begin Active:=False; SQL.Clear; SQL.Add('Insert into customer ( FIRSTNAME,LASTNAME,CITY,COUNTRY)'); SQL.Add('Values ( :b2 , :b3 , :b4 , :b5)'); // params[1].DataType:= ftString; // params[2].DataType:= ftString; // params[3].DataType:= ftString; // params[4].DataType:= ftString; params[1].value:= DM1.source.Fields[1].Value; params[2].value:= DM1.source.Fields[2].Value; params[3].value:= DM1.source.Fields[3].Value; params[4].value:= DM1.source.Fields[4].Value; ExecSQL; End; DM1.source.next; End; end;
هناك اسطر قمت بوضعها كتعليق حاول تجربة الكود بدونهم اذا لم يشتغل انزع علامة التعليق قبلهم // وجرب
عذرًا خطأ خفيف غير
PHP كود : params[1].value:= DM1.source.Fields[1].Value; params[2].value:= DM1.source.Fields[2].Value; params[3].value:= DM1.source.Fields[3].Value; params[4].value:= DM1.source.Fields[4].Value;
إلى
PHP كود : params[0].value:= DM1.source.Fields[0].Value; params[1].value:= DM1.source.Fields[1].Value; params[2].value:= DM1.source.Fields[2].Value; params[3].value:= DM1.source.Fields[3].Value;
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
السلام عليكم و رحمة الله و بركاته
اولا اشكرك اخي Ben.ja على المساعدة و جعله الله في ميزان حسناتك
و اخيرا حتى يستفيد الجميع من هدا الكود اطرح للزملاء اعضاء هدا المنتدى التعليمي الرائع الحل النهائي
PHP كود : begin DM1.Source.close; DM1.Source.open; DM1.Source.first;
for i:= 0 to DM1.Source.FieldCount-1 do
While Not DM1.Source.eof Do
Begin
With DM1.destination Do Begin Active:=False; SQL.Clear; SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)'); params[0].value:= DM1.source.Fields[0].Value; params[1].value:= DM1.source.Fields[1].Value; params[2].value:= DM1.source.Fields[2].Value; params[3].value:= DM1.source.Fields[3].Value; params[4].value:= DM1.source.Fields[4].Value; Params[i].Value := DM1.source.Fields[i].Value; ExecSQL; End; DM1.source.next; End;
ولكن حبد لو انه هناك طريقة من اجل تقليص هده الكتابة لانه باستعمال مثلا عدد كبير من الحقول يصبح الكود مملء نوعا ما
; params[0].value:= DM1.source.Fields[0].Value
; params[1].value:= DM1.source.Fields[1].Value
; params[2].value:= DM1.source.Fields[2].Value
; params[3].value:= DM1.source.Fields[3].Value
; params[4].value:= DM1.source.Fields[4].Value
فمثلا لو نستعمل Array فلنفكر معا نحن اعضاء المنتدى من اجل تقليص هدا الكود و بارك الله فيكم جميعا و بالاخص الزميل Ben.ja
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 1,216
المواضيع 186
:
: 1,755
الإنتساب : Jul 2009
الحمد لله الذي بنعمته تتم الصالحات.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
[quote pid='44963' dateline='1523397088']
PHP كود : begin DM1.Source.close; DM1.Source.open; DM1.Source.first;
for i:= 0 to DM1.Source.FieldCount-1 do
While Not DM1.Source.eof Do
Begin
With DM1.destination Do Begin Active:=False; SQL.Clear; SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)'); params[0].value:= DM1.source.Fields[0].Value; params[1].value:= DM1.source.Fields[1].Value; params[2].value:= DM1.source.Fields[2].Value; params[3].value:= DM1.source.Fields[3].Value; params[4].value:= DM1.source.Fields[4].Value; Params[i].Value := DM1.source.Fields[i].Value; ExecSQL; End; DM1.source.next; End;
بسم الله الرحمن الرحيم
السلام عليكم
اعتدر هناك خطأ لم انتبه اليه
الكورس يعمل بدون اي مشكل بحدف
for i:= 0 to DM1.Source.FieldCount-1 do
و كدالك حدف
Params[i].Value := DM1.source.Fields[i].Value;
وهده الطريقة الاولى التي سبق و ان طرحتها في موضوعي هدا اعلاه
ولكن حبد لو انه هناك طريقة اخرى من اجل تقليص هده الكتابة لانه باستعمال مثلا عدد كبير من الحقول يصبح الكود مملء نوعا ما
; params[0].value:= DM1.source.Fields[0].Value
; params[1].value:= DM1.source.Fields[1].Value
; params[2].value:= DM1.source.Fields[2].Value
; params[3].value:= DM1.source.Fields[3].Value
; params[4].value:= DM1.source.Fields[4].Value
فمثلا لو نستعمل Array فلنفكر معا نحن اعضاء المنتدى من اجل تقليص هدا الكود و بارك الله فيكم جميعا
[/quote]
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 122
المواضيع 10
:
: 13
الإنتساب : Oct 2015
إقتباس : ولكن حبد لو انه هناك طريقة اخرى من اجل تقليص هده الكتابة لانه باستعمال مثلا عدد كبير من الحقول يصبح الكود مملء نوعا ما
; params[0].value:= DM1.source.Fields[0].Value
; params[1].value:= DM1.source.Fields[1].Value
اكتب الكود في حلقة for
كود : for j:=0 to 4 do
params[j].value:= DM1.source.Fields[j].Value;
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
(11-04-2018, 01:35 PM)مبرمج حر كتب : إقتباس : ولكن حبد لو انه هناك طريقة اخرى من اجل تقليص هده الكتابة لانه باستعمال مثلا عدد كبير من الحقول يصبح الكود مملء نوعا ما
; params[0].value:= DM1.source.Fields[0].Value
; params[1].value:= DM1.source.Fields[1].Value
اكتب الكود في حلقة for
كود : for j:=0 to 4 do
params[j].value:= DM1.source.Fields[j].Value;
السلام عليكم اخي بارك الله فيك على الاهتمام
لقد ثم طرح ما كتبته في هدا الكود في الردود السابقة انظر الى ما سبق و سوف يتبين لك المشكل الدي ارهقني و اثعبني و شكرا مرة اخرى على الاهتمام بارك الله فيك و شكرا و اثمنى ان نجد الحل النهائي مع بقية الاعضاء
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 117
المواضيع 4
:
: 40
الإنتساب : May 2017
الأخ مبرمج حر ربما قصد الحلقة ان تكون داخل الـ With .. do, هكذا:
PHP كود : While Not DM1.Source.eof Do Begin With DM1.destination Do Begin Active:=False; SQL.Clear; SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)'); For i:=0 to 4 do Params[i].Value := DM1.source.Fields[i].Value; ExecSQL; End; DM1.source.next; End;
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
السلام عليكم شكرا سوف اجرب ان شاء الله
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
السلام عليكم و رحمة الله و بركاته
في الاخير ثم الوصول الى الحل النهائي و دالك بتظافر الجهود من اعضاء هدا المنتدى التعليمي الرائع
و في الختام اشكر الجميع و جعله الله في ميزان حسناتهم ووفقكم الله وليستفيد الجميع اقدم لكم الكود الاخير بطريقتين و لكم الاختيار فيما يناسبكم ان شاء الله
الطريقة الاولى
PHP كود : var i : integer; Begin
DM1.Source.close; DM1.Source.open; DM1.Source.first;
While Not DM1.Source.eof Do
Begin With DM1.destination Do
Begin Active:=False; SQL.Clear; SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)'); for i:= 0 to DM1.Source.FieldCount-1 do Params[i].Value := DM1.source.Fields[i].Value; ExecSQL; End; DM1.source.next; End;
الطريقة الثانية
PHP كود : begin
DM1.Source.close; DM1.Source.open; DM1.Source.first;
While Not DM1.Source.eof do
Begin
with DM1.destination do
begin Active:=False; SQL.Clear; SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)'); Params[0].Value := DM1.SourceID.Value; Params[1].Value := DM1.SourceFIRSTNAME.Value; Params[2].Value := DM1.SourceLASTNAME.Value; Params[3].Value := DM1.SourceCITY.Value; Params[4].Value := DM1.SourceCOUNTRY.Value; ExecSQL; end; DM1.source.next; End;
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
|