افضل طريقة لنقل البيانات من جدول لاخر
#1
استعمل هذا الكود لنقل البيانات من جدول الي اخر ولكنها بطئية
واحيانا لا يقوم بنقل جميع البيانات

علا يوجد طريقة اخرى اسرع وافضل منه
او عن طريق Query
ولكم جزيل الشكر

كود :
with ADO_emp_f do begin Open; first; while not eof do begin ADO_emp_l.Open; ADO_emp_l.Append; ADO_emp_l.FieldByName('name_emp').AsString:=ADO_emp_f.FieldByName('name_emp').AsString; ADO_emp_l.FieldByName('eligible').AsString:=ADO_emp_f.FieldByName('eligible').AsString; ADO_emp_l.FieldByName('date_birth').AsString:=ADO_emp_f.FieldByName('date_birth').AsString; ADO_emp_l.FieldByName('rec_date').AsString:=ADO_emp_f.FieldByName('rec_date').AsString; ADO_emp_l.FieldByName('date_ret').AsString:=ADO_emp_f.FieldByName('date_ret').AsString; ADO_emp_l.FieldByName('workplace').AsString:=ADO_emp_f.FieldByName('workplace').AsString; ADO_emp_l.FieldByName('grade').AsString:=ADO_emp_f.FieldByName('grade').AsString; ADO_emp_l.FieldByName('profession').AsString:=ADO_emp_f.FieldByName('profession').AsString; ADO_emp_l.FieldByName('no_birth').AsString:=ADO_emp_f.FieldByName('no_birth').AsString; ADO_emp_l.Post; next; end; end; ShowMessage('Êã äÞá ÌãíÚ ÇáÈíÇäÇÊ');
الرد
#2
السلام عليكم

بإستخدام الـ SQL ـ :
كود :
INSERT INTO emp_f (name_emp,eligible,date_birth ... ) SELECT emp_l.name_emp, emp_l.eligible, emp_l.date_birth ... FROM emp_l
بالتوفيق
الرد
#3
مشكور جدا
هذا الكود نفذ معي حتي يستفيد انه الاعضاء
كود :
ADOQuery1.Close; ADOQuery1.SQL.Text:='INSERT INTO t_emp1 SELECT * from t_emp'; ADOQuery1.ExecSQL;

دائما كنت احاول تفيذها بهذه الطريقة ولكن ما كان ينفذ معي
كود :
ADOQuery1.Close; ADOQuery1.SQL.Add(''); ADOQuery1.Open;

اخيرا جاتني فكرة بتفيذها بطريقة اعلاه
الرد
#4
إقتباس :ولكن ما كان ينفذ معي
تنقصك هذه:
كود :
ADOQuery1.Close; [color=Blue] ADOQuery1.SQL.Clear;[/color] ADOQuery1.SQL.Add(''); ADOQuery1.Open;
الرد
#5
نعم
كان يعطيني رسالة خطا
الرد
#6
السلام عليكم

ويمكن كدلك استعمال select into
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#7
مشكور هل تقصد هكذا
كود :
ADOQuery1.Close; ADOQuery1.SQL.Text:='SELECT * from t_emp INSERT INTO t_emp1 '; ADOQuery1.ExecSQL;

لم ينفذ معي يعطيني رسالة خطأ
الرد
#8
format82 كتب :ADOQuery1.SQL.Text:='SELECT * from t_emp INSERT INTO t_emp1 ';

أخي مع select إستعمل OPEN ومع Insert/Update/Delete إستعمل ExecSql

format82 كتب :لم ينفذ معي يعطيني رسالة خطأ

ماهي رسالة الخطأ؟
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
الرد
#9
السلام عليكم
أو بهذه الطريقة أخي

كود :
procedure FDbiCopyTable(hTmpDb: hDbiDb; SrcTableName: string; DestName: string); begin Check(DbiCopyTable(hTmpDb, True, PChar(SrcTableName), nil, PChar(DestName))); end; procedure TForm1.Button1Click(Sender: TObject); begin Table1.Active:=True; Check(dbiInit(nil)); FDbiCopyTable(Table1.dbHandle, 'temp.DB', 'temp1.DB'); Table1.Active:=False; end;
الرد
#10
بالنسبة ل select into فهي ستنسىء جدولا آخر وتضع فية البيانات المختارة...ابحث في google هنالك العديد من الأمثلة

بالتوفيق .
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد


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


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