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

نسخة كاملة : كيف يمكن نقل سجيلات من جدول الى اخر باستعمال الفلترة مع العلم ان DatabaseName مختلفة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
انت تقوم بجلب المعلومات المراد تصدريها عن طريق dataset مثل adoquery adotable  ibquery .... الخ.
هذا dataset يمكن التعامل معها سطرا سطرا بواسطة حلقة while.
هل أكمل؟
(05-04-2018, 01:57 PM)أبو معاذ كتب : [ -> ]انت تقوم بجلب المعلومات المراد تصدريها عن طريق dataset مثل adoquery adotable  ibquery .... الخ.
هذا dataset يمكن التعامل معها سطرا سطرا بواسطة حلقة while.
هل أكمل؟

يمكن ان تكمل ادا كان ممكن بتسمية source et destination و بارك الله فيك
طيب ،
لنفرض أن ال Source تحوي الاستعلام التالي :

Select Code1 , Code2
From Table1
Where  c1= c2

ال Destination  تحوي الاستعلام التالي :

Insert into Table2 (A1,A2) Values (:b1 , :b2)

لنجري الآن عملين نقل البيانات :
كود :
Source.close; Source.open; While   Not  Source.eof  do  //  eof = End Of File Begin destination.close; ;destination.paramettre('b1').value := source.Code1.value ;destination.paramettre('b2').value := source.Code2.value destination.execSql; source.next; End;

إن شاء الله تكون مفيدة. Blush
(05-04-2018, 07:56 PM)أبو معاذ كتب : [ -> ]طيب ،
لنفرض أن ال Source تحوي الاستعلام التالي :

Select Code1 , Code2
From Table1
Where  c1= c2

ال Destination  تحوي الاستعلام التالي :

Insert into Table2 (A1,A2) Values (:b1 , :b2)

لنجري الآن عملين نقل البيانات :
كود :
Source.close; Source.open; While   Not  Source.eof  do  //  eof = End Of File Begin destination.close; ;destination.paramettre('b1').value := source.Code1.value ;destination.paramettre('b2').value := source.Code2.value destination.execSql; source.next; End;

إن شاء الله تكون مفيدة. Blush
بارك الله فيك اخي ابو معاد 
لكن هدا الجدول يحتوي على اكثر من 25 حقل 
و اظن ان كتابة اكثر من 25 سطر كثير نوعا ما بالاضافة انه لم يسبق لي ان استعملت براميتر و لكن هدا لا يهمني يمكن فهمه بسرعة 
المشكل عدد السطور الثي سوف انفدها في برماجي و خاصة انني اريد نقل معطيات 7  جداول بنفس الطريقة
هل من طريقة اسهل و اخف
ما في مشكلة ،
عوضا عن تسمية الحقول باسمها الحقيقي ، يمكنك ان تستعمل ترتيبها.
بمعنى ، عندك جدول فيه الحقول التالية :
C1 ,C2,C3...
لاستدعائها ، اما نستعمل اسم الحقل ، او ترتيبه.
Source.fields [o]  هو الحقل C1  وهكذا....
While not source.eof do
Begin
For i:=o to 25 do
Begin
Destination.close

Destination.parametrs[i]  := source.fileds[i]
Destination.exexsql
Source.next
End
 عذرا على الأخطاء لاني اكتب بواسطة  هاتفي.
وفقك الله.
(05-04-2018, 09:49 PM)أبو معاذ كتب : [ -> ]ما في مشكلة ،
عوضا عن تسمية الحقول باسمها الحقيقي ، يمكنك ان تستعمل ترتيبها.
بمعنى ، عندك جدول فيه الحقول التالية :
C1 ,C2,C3...
لاستدعائها ، اما نستعمل اسم الحقل ، او ترتيبه.
Source.fields [o]  هو الحقل C1  وهكذا....
While not source.eof do
Begin
For i:=o to 25 do
Begin
Destination.close

Destination.parametrs[i]  := source.fileds[i]
Destination.exexsql
Source.next
End
 عذرا على الأخطاء لاني اكتب بواسطة  هاتفي.
وفقك الله.

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

PHP كود :
begin

DM1
.Source.close;
DM1.Source.open;

While 
Not DM1.Source.eof  do  //  eof = End Of File

Begin

with DM1
.destination do

 
     begin
      Active
:=False;
 
     SQL.Clear;
 
     SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)');
 
     SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)');
 
     Params[0].Value := DM1.SourceID.Value;
 
     Params[1].Value := DM1.SourceFIRSTNAME.Value;
 
     Params[2].Value := DM1.SourceLASTNAME.Value;
 
     Params[3].Value := DM1.SourceCITY.Value;
 
     Params[4].Value := DM1.SourceCOUNTRY.Value;
 
     ExecSQL;
 
     end;
DM1.source.next;
End; 

و لكن للاسف الطريقة الثانية والثى هدفها هو ان يكون الكورس مختصر لم تمشي معي الكود و الخطأ فيمايلى


PHP كود :
var
i : integer;
Begin

DM1
.Source.close;
DM1.Source.open;

While 
Not DM1.Source.eof  do  //  eof = End Of File

Begin

for i:= 0 to 4 do

with DM1.destination do

 
     begin
      Active
:=False;
 
     SQL.Clear;
 
     SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)');
 
     SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)');
 
     Params[i].Value := DM1.source.Fields[i].Value;
 
     ExecSQL;
 
     end;
DM1.source.next;
End; 
[صورة: xfigrtons4i7.png]
السلام عليكم

ما سبب هدا الخطأ

PHP كود :
var
i : integer;
Begin

DM1
.Source.close;
DM1.Source.open;

While 
Not DM1.Source.eof  do  //  eof = End Of File

Begin

for i:= 0 to 4 do

with DM1.destination do

 
     begin
      Active
:=False;
 
     SQL.Clear;
 
     SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)');
 
     SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)');
 
     Params[i].Value := DM1.source.Fields[i].Value;
 
     ExecSQL;
 
     end;
DM1.source.next;
End; 



[صورة: xfigrtons4i7.png]
حاول إضافة
PHP كود :
params[1].DataType:= ftString; 


قبل

PHP كود :
Params[i].Value := DM1.source.Fields[i].Value; 
(09-04-2018, 10:55 PM)Ben.Ja كتب : [ -> ]حاول إضافة
PHP كود :
params[1].DataType:= ftString; 
قبل
PHP كود :
Params[i].Value := DM1.source.Fields[i].Value; 

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

PHP كود :
While Not DM1.Source.eof  do  //  eof = End Of File

Begin

for i:= 0 to 4 do

with DM1.destination do

 
     begin
      Active
:=False;
 
     SQL.Clear;
 
     SQL.Add('Insert into customer (id, FIRSTNAME,LASTNAME,CITY,COUNTRY)');
 
     SQL.Add('Values (:b1 , :b2 , :b3 , :b4 , :b5)');
 
     params[0].DataType:= ftAutoInc ;
 
     params[1].DataType:= ftString;
 
     params[2].DataType:= ftString;
 
     params[3].DataType:= ftString;
 
     params[4].DataType:= ftString;
 
     Params[i].Value := DM1.source.Fields[i].Value;
 
     ExecSQL;
 
     end;
DM1.source.next;
End; 


[صورة: mldv3etkjmy9.png]
الصفحات : 1 2 3