المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
استعمل الكود الثالي في نقل السجيلات من جدول الى اخر باستعمال Paramétrer ولكن المشكلة هو عدم نقل الفرغات (Nulles) في الحقل الخاص بالتاريخ
ارجوا المساعدة و تصحيح الكود و جزالكم الله ألف خير
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 (N°, FIRSTNAME,LASTNAME,CITY,COUNTRY,date_enr)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5, :b6)'); for i:= 0 to DM1.Source.FieldCount-1 do Params[i].Value := DM1.source.Fields[i].Value; ExecSQL; End; DM1.source.next; End;
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 117
المواضيع 1
:
: 38
الإنتساب : May 2017
السلام عليكم
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 (N°, FIRSTNAME,LASTNAME,CITY,COUNTRY,date_enr)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5, :b6)'); For i:= 0 to 5 do //You have 6 parameters that's why Begin Params[i].DataType := DM1.source.Fields[i].DataType; Params[i].Value := DM1.source.Fields[i].Value; End; Prepare; ExecSQL; End; DM1.source.next; End;
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
(16-04-2018, 12:20 AM)Ben.Ja كتب : السلام عليكم
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 (N°, FIRSTNAME,LASTNAME,CITY,COUNTRY,date_enr)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5, :b6)'); For i:= 0 to 6 do Begin Params[i].DataType := DM1.source.Fields[i].DataType; Params[i].Value := DM1.source.Fields[i].Value; End; Prepare; ExecSQL; End; DM1.source.next; End;
السلام عليكم
عفوا كان هناك خطأ في الكتابة
و لكن المشكل هو كما دكرته اعلاه
و بارك الله فيكم
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 117
المواضيع 1
:
: 38
الإنتساب : May 2017
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
(16-04-2018, 10:39 PM)Ben.Ja كتب : لم أفهمك أخي
السلام عليكم و رحمة الله و بركاته
معدرتا لم انتبه الى التغير الدي غيرته في اجابتك الاولى سوف اجرب الكود
بالتوفيق اخي و بارك الله فيك و شكرا
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 117
المواضيع 1
:
: 38
الإنتساب : May 2017
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
(17-04-2018, 12:14 AM)Ben.Ja كتب : وفيك بارك, عفوا السلام عليكم
1- لقد قمت بتجريب الكود كل شيء يسير على ما يرام سرعة في نقل السجيلات من جدول source الى جدول destination تقريبا 30000 سجلا في اقل من دقيقتين ولكن المشكل الوحيد و الدي فعلا اتعبني و لم استطيع ايجاد له الحل هو فيما يخص الحقول التي تكون من نوع datetime فان لتسجيلات الفارغة (valeurs nulles) في الجدول source تنقل الى الجدول destination عبارة عن تاريخ على شكل 30/12/1899.
و للتأكد من ان المشكل في نوعية الحقل datetime قمت بتحويله الى string في الجدول destination و اصبح ينقل الفارغات (valeurs nulles) بكل سهولة و لكن انا اريد الحقل في الجدول destination من نوع datetime.
2-المشكل الثاني هو في حالة ما كان الحقل كله فارغ في source مهما يكون نوعه حتى و لو كان من نوع string فانه يعطينا خطأ اي انه لا يتعرف على البراميتر المراد نقله الى destination.
خلاصة : ادن كخلاصة لما قمت بتجريبه هو ان المشكل في الفرغات (les valeurs nulles)
فكيف السبيل لاجبار الكود بتحويل الفرغات (les valeurs nulles) من source الى destination مهما كان نوع الحقل datetime,string,integer........
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 117
المواضيع 1
:
: 38
الإنتساب : May 2017
غير الحلقة باضافة الاجراء clear لتحويل القيمة الى null هكذا
PHP كود : For i:= 0 to 5 do if DM1.source.Fields[i].isnull then Begin Params[i].DataType := DM1.source.Fields[i].DataType; Params[i].clear; End Else Begin Params[i].DataType := DM1.source.Fields[i].DataType; Params[i].Value := DM1.source.Fields[i].Value; End;
المشاركات : 92
المواضيع 21
:
: 0
الإنتساب : Nov 2015
السلام عليكم
و الله اثعبتك معي اخي قد جربت الكود و المشكل هو نفسه دائما التاريخ المحول الى destination هو 30/12/1899
و الكود المجرب بعد مساعدتك هو كالثالي
PHP كود : begin While Not DM1.source.eof Do
Begin With DM1.destination Do
Begin Active:=False; SQL.Clear; SQL.Add('Insert into customer (N°, FIRSTNAME,LASTNAME,CITY,COUNTRY,date_enr)'); SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5, :b6)'); for i:= 0 to DM1.source.FieldCount-1 do if DM1.source.Fields[i].isnull then Begin Params[i].DataType := DM1.source.Fields[i].DataType; Params[i].clear; End Else Begin Params[i].DataType := DM1.source.Fields[i].DataType; Params[i].Value := DM1.source.Fields[i].Value; End; Prepare; ExecSQL; End; DM1.source.next; End;
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك
المشاركات : 117
المواضيع 1
:
: 38
الإنتساب : May 2017
أظن ان للتخلص من مشكل الفراغ يجب ذكر نوع بيانات الparameter قبل نقل البيانات اليها , وهذا تم من خلال السطر
PHP كود : Params[i].DataType := DM1.source.Fields[i].DataType;
لكن ربما يجب ذكر نوع بيانات كل parameter على حدة, اي هكذا بدون الحلقة
PHP كود : Params[0].DataType := ftautoinc; //N° column datatype?? Params[0].Value := DM1.source.Fields[0].Value; Params[1].DataType := ftstring; Params[1].Value := DM1.source.Fields[1].Value; Params[2].DataType := ftstring; Params[2].Value := DM1.source.Fields[2].Value; Params[3].DataType := ftstring; Params[3].Value := DM1.source.Fields[3].Value; Params[4].DataType := ftstring; Params[4].Value := DM1.source.Fields[4].Value; Params[5].DataType := ftdate; Params[5].Value := DM1.source.Fields[5].Value;
أيضًا, هل خانة الdate في جدول destination بها خاصية Not null؟
|