delphi4arab منتديات دلفي للعرب

نسخة كاملة : تحويل التسجيلات من جدول الى اخر باستعمال براميتر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
السلام عليكم
في برنامجي واجهة نفس الامر هناك حل و هو عدم نقل القيمة مع شرط تحديد نوع البرامتر كما قال الاخ
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 لا تقم بنقل القيمة غير ذلك انقل القيمة
بالتوفيق
(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 لا تقم بنقل القيمة غير ذلك انقل القيمة
بالتوفيق

السلام عليكم و رحمة الله و بركاته
اولا اشكرك على الاهتمام اخي ولكن ما فهمت قصدك ممكن توضح اكثر و جزاك الله الف خير
كما قال الاخ
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; 
(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
ما هي مكونات الاتصال التي تستخدمها؟
هل يمكنك مشاركة الكود لتسهيل حل المشكل؟
(18-04-2018, 10:10 PM)Ben.Ja كتب : [ -> ]ما هي مكونات الاتصال التي تستخدمها؟
هل يمكنك مشاركة الكود لتسهيل حل المشكل؟

السلام عليكم استعمل ما يلي  TQuery, TffQuery
[صورة: coa2cnsnjo8e.png]
السلام عليكم جرب هذا
الكود غير مجرب لا امتلك المكونات و لا قاعدة البيانات
طبقت الفكرة التي قلتها سابقا
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; 
السلام عليكم
سوف اجرب الكود بارك الله فيك اخي

السلام عليكم
اخي جربت الكود اخي لا يعمل
ممكن توضح اكثر الخطأ لا يزال لا ينقل الـ null و date
تقريبا نفس الفكرة التي طرحتها اخي 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 2 3