تحويل التسجيلات من جدول الى اخر باستعمال براميتر
#11
السلام عليكم
في برنامجي واجهة نفس الامر هناك حل و هو عدم نقل القيمة مع شرط تحديد نوع البرامتر كما قال الاخ
PHP كود :
if not DM1.source.Fields[i].isnull then
       Params
[i].Value := DM1.source.Fields[i].Value; 

في حالة كان الحقل null لا تقم بنقل القيمة
بالنسبة للتاريخ التاريخ 30/12/1899 هو 0 اي 30/12/1899 = 0
لذلك نفس الامر تحقق اذا كان التاريخ 0 لا تقم بنقل القيمة غير ذلك انقل القيمة
بالتوفيق
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#12
(18-04-2018, 01:24 PM)S.FATEH كتب : السلام عليكم
في برنامجي واجهة نفس الامر هناك حل و هو عدم نقل القيمة مع شرط تحديد نوع البرامتر كما قال الاخ
PHP كود :
if not DM1.source.Fields[i].isnull then
       Params
[i].Value := DM1.source.Fields[i].Value; 

في حالة كان الحقل null لا تقم بنقل القيمة
بالنسبة للتاريخ التاريخ 30/12/1899 هو 0 اي 30/12/1899 = 0
لذلك نفس الامر تحقق اذا كان التاريخ 0 لا تقم بنقل القيمة غير ذلك انقل القيمة
بالتوفيق

السلام عليكم و رحمة الله و بركاته
اولا اشكرك على الاهتمام اخي ولكن ما فهمت قصدك ممكن توضح اكثر و جزاك الله الف خير
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك

الرد
#13
كما قال الاخ
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
if 
not DM1.source.Fields[i].isnull then 
   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; 
الرد
#14
(17-04-2018, 11:48 PM)Ben.Ja كتب : أظن ان للتخلص من مشكل الفراغ يجب ذكر نوع بيانات الparameter قبل نقل البيانات اليها , وهذا تم من خلال السطر
PHP كود :
Params[i].DataType := DM1.source.Fields[i].DataType; 


لكن ربما يجب ذكر نوع بيانات كل parameter على حدة, اي هكذا بدون الحلقة

PHP كود :
  
أيضًا, هل خانة الdate في جدول destination بها خاصية Not null؟

السلام عليكم 

ياخي لا توجد خاصية not null 
جربت الكود و دائما نفس المشكل في حقل تاريخ الفراغ (les valeurs nulles) يعوضه بلتاريخ 30/12/1899
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك

الرد
#15
ما هي مكونات الاتصال التي تستخدمها؟
هل يمكنك مشاركة الكود لتسهيل حل المشكل؟
الرد
#16
(18-04-2018, 10:10 PM)Ben.Ja كتب : ما هي مكونات الاتصال التي تستخدمها؟
هل يمكنك مشاركة الكود لتسهيل حل المشكل؟

السلام عليكم استعمل ما يلي  TQuery, TffQuery
[صورة: coa2cnsnjo8e.png]
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك

الرد
#17
السلام عليكم جرب هذا
الكود غير مجرب لا امتلك المكونات و لا قاعدة البيانات
طبقت الفكرة التي قلتها سابقا
PHP كود :
var
 
 i: Integer;
begin
Source
.close;
Source.open;
Source.first;

while 
not Source.eof  do
begin
  destination
.SQL.Clear;
 
 destination.SQL.Add('Insert into customer (N°, FIRSTNAME,LASTNAME,CITY,COUNTRY,date_enr)');
 
 destination.SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5, :b6)');

 
 for i:= 0 to Source.FieldCount-1 do
 
 begin
    destination
.Params[i].DataType :=  source.Fields[i].DataType;
 
   if not source.Fields[i].IsNull then
      destination
.Params[i].Value := source.Fields[i].Value
    else
    if source
.Fields[i] is TDateTimeField then
      if not source
.Fields[i].AsDateTime = 0 then
    destination
.Params[i].Value := source.Fields[i].Value
    else
    destination
.Params[i].Value := source.Fields[i].Value;

 
   destination.ExecSQL;
 
 end;
 
  source.next;
end;
end; 
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#18
السلام عليكم
سوف اجرب الكود بارك الله فيك اخي

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

الرد
#19
ممكن توضح اكثر الخطأ لا يزال لا ينقل الـ null و date
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#20
تقريبا نفس الفكرة التي طرحتها اخي FATAH هدا الكود الدي اضعه بين يديكم يعمل جيدا غير ان المشكل الوحيد و العويص هو ان  الفارغات les valeurs nulles في الحقل source تنقل عبارة عن تاريخ (30/12/1899) في destination
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
 
   begin
     
if DM1.source.Fields[i].DataType in [ftDate,ftDateTime] then
       begin
        if DM1
.source.Fields[i].isnull Then
          begin
          Params
[i].Clear;
 
         Params[i].Bound := TRUE;
 
         Params[i].DataType :=  ftDateTime;
 
         end
          else
           Params
[i].DataType := DM1.source.Fields[i].DataType;
 
          Params[i].Value := DM1.source.Fields[i].Value;
 
       end
        else
          Params
[i].DataType := DM1.source.Fields[i].DataType;
 
         Params[i].Value := DM1.source.Fields[i].Value;
 
    end;
 
    ExecSQL;
 
  End;
 
  DM1.source.next;
End; 

هل فهمت المقصود اخي fatah
بكاء العين يفضح وبكاء القلب يذبح والبكاء من خشيه الله يربح اللهم اجعلنا ممن يبكى من خشيتك

الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم