السلام عليكم....
استخدم الكود التالي لنسخ محتويات جدول الى جدول اخر في قاعدة بيانات اخرى ويعمل بدون مشاكل على فرض ان القاعدتين في نفس مسار البرنامج
كود :
ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('INSERT INTO Table1 IN "other_DB" SELECT * FROM DB');
ADOQuery1.ExecSQL();
حيث ان Table1 هو اسم الجدول المراد نسخه و DB هي قاعدة البيانات المراد النسخ منها و other_DB هي قاعدة البيانات المراد النسخ اليها وهما قواعد بيانات اكسس..
ولكن لو كانت قاعدة البيانات الاخرى أي المراد نسخ الجدول اليها تحتوي على باسوورد يظهر خطأ مفاده ان الباسوورد خطأ فما هو التعديل على الكود لتمرير الباسوورد وتجاوز ظهور الخطأ علما ان ال ADOQuery1 مربوطة بقاعدة البيانات الاولى أي المراد النسخ منها وتم تمرير الباسوورد لها عند الربط...
_____
مشكور أخ kachwahed على الرد
أخي انا سؤالي كان بخصوص قاعدة البيانات المراد نسخ الجدول اليها وهي غير مربوطة بكائن ال ADOQuery1 لكون قاعدة البيانات المنسوخ منها مربوطة بذلك الكائن... تحياتي
السلام عليكم
حسب علمي لا يمكن ،
لأن بارامتر Password يوضع في connectionstring وهي وحيدة لكل DataSet أي لا يمكنك أن تتصل بقاعدتين بـ DataSet واحدة/ connectionstring واحدة
(و الله أعلم ) .
بينما في الـ SQLSERVER يمكن (طبعا مع الصلاحيات)
كود :
INSERT Db2010.yourlogin.yourtable
SELECT *
FROM Db2009.yourlogin.yourtable
أي سيكون العمل يدويا
بالتوفيق
Lam.Abdeldjalil كتب :حسب علمي لا يمكن ،
لأن بارامتر Password يوضع في connectionstring وهي وحيدة لكل DataSet أي لا يمكنك أن تتصل بقاعدتين بـ DataSet واحدة/ connectionstring واحدة
(و الله أعلم ) .
طيب اخي لكن الامر ينفذ على القاعدتين طبيعي بدون مشاكل اذا كانت القاعدة المنسوخ اليها لاتحتوي باسوورد , اعتقد انه يجب ان يمرر الباسوورد كشيء من هذا القبيل :
كود :
ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('INSERT INTO Table1 IN "other_DB" [color=Red]"password=123"[/color] SELECT * FROM DB');
ADOQuery1.ExecSQL();
لكن لم تفلح الطريقة على الرغم من عدم ظهور خطأ املائي للأمر فقط يظهر بان الباسوورد خطأ...
____
السلام عليكم
إقتباس :طيب اخي لكن الامر ينفذ على القاعدتين طبيعي بدون مشاكل اذا كانت القاعدة المنسوخ اليها لاتحتوي باسوورد
حين قلت " حسب علمي لا يمكن ، " في حالة وجود باسوورد
إقتباس :اعتقد انه يجب ان يمرر الباسوورد
ذلك هو المشكل
جرب الطريقة المذكورة في الرابط (بإستخدام odbc)
كود :
http://support.microsoft.com/kb/200427
بالتوفيق
مشكور اخ Lam.Abdeldjalil على المتابعة
للأسف هذه الطريقة لاتنفع لكون الربط بطريفة ODBC وانا لااستخدمها...
والحمد لله بعد التجارب الكثيرة جداً واخذ جميع الاحتمالات توصلت الى هذه الكود والذي يعمل بدون اي مشاكل
كود :
ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('INSERT INTO [;Database=DB2.mdb; PWD=123].Table1 SELECT * FROM Table1');
ADOQuery1.ExecSQL();
على فرض ان ADOQuery1 مربوطة بقاعدة بيانات تحتوي على جدول Table1 ويراد نسخ محتوياته الى الجدول Table1 الموجود في قاعدة بيانات اخرى باسم DB2.mdb والمحمية بباسوورد "123" ...
تحياتي وشكراً للردود...
وهل يلزم ADOUERY آخر لربط القاعدة الثانية DB2.mdb أم إستعملت 2* ADOconnection؟
لآني وجدت بعض الغموض في ما يخص إتصالك بقاعدتين في نفس الوقت
السلام عليكم
بارك الله فيك أخ mohd على العودة لنا بالحل
إقتباس : وهل يلزم ADOUERY آخر لربط القاعدة الثانية DB2.mdb أم إستعملت 2* ADOconnection؟
لا هذه ولا تلك ، فكرتها نفس فكرة التصدير للـ Excel بالـ ADO
يمكن ايضا تنفيذها بـ ADOConnection أو ADOCommand
كود :
ADOConnection1.Execute('INSERT INTO [;Database=bd2.mdb; PWD=123456].Table1 SELECT name FROM Table1');
بالتوفيق
نعم كما قال أخ Lam.Abdeldjalil القاعدة الثانية ليست مربوطة بشيء...
ويبارك فيك أخي...
__