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

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

علا يوجد طريقة اخرى اسرع وافضل منه
او عن طريق 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('Êã äÞá ÌãíÚ ÇáÈíÇäÇÊ');
السلام عليكم

بإستخدام الـ 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
بالتوفيق
مشكور جدا
هذا الكود نفذ معي حتي يستفيد انه الاعضاء
كود :
ADOQuery1.Close; ADOQuery1.SQL.Text:='INSERT INTO t_emp1 SELECT * from t_emp'; ADOQuery1.ExecSQL;

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

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

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

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

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

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

ماهي رسالة الخطأ؟
السلام عليكم
أو بهذه الطريقة أخي

كود :
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;
بالنسبة ل select into فهي ستنسىء جدولا آخر وتضع فية البيانات المختارة...ابحث في google هنالك العديد من الأمثلة

بالتوفيق .