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

نسخة كاملة : نسخ اكثر من عمود من جدول الى اخر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم جميعا
اريد انشاء زر عند الضغط عليه انسخ خمس اعمدة من جدول الى خمس اعمدة في جدول اخر بنفس التسمية، وبعد ذلكاقوم بتغيير المعلومات في الجدول الاول و عند الضغط عليه مرة اخرى ينسخ المعلومات ويضيفها الى الجدول الثاني
ما نوع قاعدة البيانات؟
(12-10-2017, 08:38 PM)PLANSHARP كتب : [ -> ]ما نوع قاعدة البيانات؟
أكسس
و عليكم السلام و رحمة الله

حلقة تكرارية (أو اثنتان متداخلتان), هل ينفع ؟
يمكنك إنشاء استعلامات تعديل داخل ملف الأكسس فهي سريعة جداً حتى لو كان عدد السجلات كبير أسرع بكثير من استخدام المحرك من الدلفي, أي تكون وظيفة هذا الإستعلام نسخ تلك الأعمدة إلى الجدول الثاني.

طريقة تنفيذ هذا الإستعلام تكون من الدلفي نفسها عن طريق adocommand إذا كنت تستخدم ADO, فيكفي أن تكتب اسم هذا الإستعلام داخل ال Commandtext و تقوم بعمل execute فسيقوم الأكسس بتنفيذه بشكل صامت و سريع.

وفقكم الله.
لم أتوصل الى حل فهل من مساعد.....
أرفق تجربتك لنحاول معك
او يمكنك استخدام مكون FDBatchMove
تم شرح المكون في دروس برنامج المبيعات
https://www.youtube.com/playlist?list=PL...7SoK1kNIVJ
يمكنك إضافة مكون ADOQuery أو FDQuery على حسب ما تستخدم, وفي ال sql الخاص به:

PHP كود :
Insert into table_d
select 
* from table_s 
table_d هو اسم الجدول الذي تريد النسخ إليه
table_s اسم الجدول الذي تريد النسخ منه

أيضا اذا اردت نسخ أعمدة معينة
PHP كود :
Insert into table_d(column1,column2,..)
select * from table_s(column1,column2,..) 

ثم تقوم بتنفيذ الquery:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
FDQuery1
.execute;
end; 
غير fdquery1 الى اسم مكون الاستعلام الخاص بك
مثال استخدمته منذ مدة
يمكنك الاستفادة من هذا المثال و هو خاص بتحيين مخزون

كود :
begin tfjourp.First;     Tfjourp.edit;     while not Tfjourp.EOF Do       begin         tfjour.Active:=true;         Tfjour.edit;         tfjour.First ;         while not tfjour.EOF Do             begin               if tfjourp.FieldValues['n_prod']=tfjour.Fieldvalues['n_prod'] then               begin                 tfjour.Edit;                 if tfjour.FieldValues['q_stok'] +tfjour.Fieldvalues['Q_entre']>= tfjourp.FieldValues['quantete']then                   begin                   tfjour.Fieldvalues['Q_sort']:=tfjourp.FieldValues['quantete'] ;                   tfjour.Fieldvalues['Q_fin']:=tfjour.Fieldvalues['Q_entre']+tfjour.FieldValues['q_stok']-tfjour.FieldValues['q_sort'] ;                   tfjour.Post;                   end                   else               end;               tfjour.next;             end;       tstock.Edit;       tstock.First;       while not Tstock.EOF Do             begin               if tfjourp.FieldValues['n_prod']=tstock.Fieldvalues['n_prod'] then               begin                 tstock.Edit;                 if tstock.Fieldvalues['Quantete']<tfjourp.FieldValues['quantete'] then                   begin                   ShowMessage('الكمية المطلوبة غير موجودة '+#13+#13+'  '+tstock.Fieldvalues['produit']);                   end                   else                   tstock.Fieldvalues['Quantete']:=tstock.Fieldvalues['Quantete']-tfjourp.FieldValues['quantete'] ;                   tstock.Post;               end;               tstock.next;             end;         Tfjourp.Next;   end; end;