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=9323)

الصفحات: 1 2 3


تحويل التسجيلات من جدول الى اخر باستعمال براميتر - AbdouProg - 15-04-2018

بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
استعمل الكود الثالي في نقل السجيلات من جدول الى اخر باستعمال 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; 



RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - Ben.Ja - 16-04-2018

السلام عليكم

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; 



RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - AbdouProg - 16-04-2018

(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; 

السلام عليكم 

عفوا كان هناك خطأ في الكتابة
و لكن المشكل هو كما دكرته اعلاه
و بارك الله فيكم


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - Ben.Ja - 16-04-2018

لم أفهمك أخي


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - AbdouProg - 16-04-2018

(16-04-2018, 10:39 PM)Ben.Ja كتب : لم أفهمك أخي

السلام عليكم و رحمة الله و بركاته

معدرتا لم انتبه الى التغير الدي غيرته في اجابتك الاولى سوف اجرب الكود 
بالتوفيق اخي و بارك الله فيك و شكرا


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - Ben.Ja - 17-04-2018

وفيك بارك, عفوا


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - AbdouProg - 17-04-2018

(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........


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - Ben.Ja - 17-04-2018

غير الحلقة باضافة الاجراء 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; 



RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - AbdouProg - 17-04-2018

السلام عليكم
و الله اثعبتك معي اخي قد جربت الكود و المشكل هو نفسه دائما التاريخ المحول الى 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; 



RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - Ben.Ja - 17-04-2018

أظن ان للتخلص من مشكل الفراغ يجب ذكر نوع بيانات ال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؟