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


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - S.FATEH - 18-04-2018

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


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

(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 لا تقم بنقل القيمة غير ذلك انقل القيمة
بالتوفيق

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


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - مبرمج حر - 18-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 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; 



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

(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


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

ما هي مكونات الاتصال التي تستخدمها؟
هل يمكنك مشاركة الكود لتسهيل حل المشكل؟


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

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

السلام عليكم استعمل ما يلي  TQuery, TffQuery
[صورة: coa2cnsnjo8e.png]


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - S.FATEH - 18-04-2018

السلام عليكم جرب هذا
الكود غير مجرب لا امتلك المكونات و لا قاعدة البيانات
طبقت الفكرة التي قلتها سابقا
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; 



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

السلام عليكم
سوف اجرب الكود بارك الله فيك اخي

السلام عليكم
اخي جربت الكود اخي لا يعمل


RE: تحويل التسجيلات من جدول الى اخر باستعمال براميتر - S.FATEH - 19-04-2018

ممكن توضح اكثر الخطأ لا يزال لا ينقل الـ null و date


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

تقريبا نفس الفكرة التي طرحتها اخي 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