PDA

View Full Version : حرفه ای: كپي جدولي از يك ديتابيس در يك ديتابيس ديگر



nazanin_90
چهارشنبه 12 بهمن 1390, 10:19 صبح
با سلام
با دستور زير داده هاي جدول يك ديتابيس (ديتابيس سرور) به ديتابيس ديگر(ديتابيس مقصد) با همان نام جدول ديتابيس سرور يا هر نام ديگري منتقل ميشود ، اما مشكلي كه وجود دارد اين است كه محل ديتابيس مقصد حتماً بايد در MyDocuments باشد و اگر آن را در جاي ديگري منتقل كنيم خطاي پيدا نشدن فايل در MyDocuments صادر ميشود.
ضمناً همينجا لازم است از جناب آقاي پيروز مهر(با نام كاربري ZeroDefect) بخاطر راهنمائي مفيد و موثرشان در خصوص مقدمه اين سوال كه به نوعي ديگر مطرح كرده بودم تشكر و قدرداني نمايم.
با تشكر


Dim s As String
s = "Select * INTO [DataBaseName].[TableName] From ( Select * from [DataBaseName].[TableName])alias;"
DoCmd.RunSQL s

DoCmd.RunSQL s

Abbas Amiri
چهارشنبه 12 بهمن 1390, 19:00 عصر
قالب ککلی دستور به این شکل است :


SELECT field1[, field2[, ...]] INTO newtable externaldatabase]
FROM source



که عبارت externaldatabase مسیر فایل مقصد می باشد

aromega65
چهارشنبه 12 بهمن 1390, 23:59 عصر
جواب دوستمون آقای امیری مثل همیشه درسته
از طرف خودم و بقیه افرادی که از پاسخهای شما استفاده میکنن تشکر ویژه میکنم
خدا قوت

nazanin_90
پنج شنبه 13 بهمن 1390, 10:03 صبح
قالب ککلی دستور به این شکل است :


SELECT field1[, field2[, ...]] INTO newtable externaldatabase]
FROM source



که عبارت externaldatabase مسیر فایل مقصد می باشد


با سلام و تشکر از جناب آقای امیری
ممکن است خواهش کنم کد فوق را در قالب یک نمونه ارائه فرمائید .
با تشکر

aromega65
پنج شنبه 13 بهمن 1390, 11:24 صبح
سلام
با اجازه آقای امیری
نمونه بزارید من اصلاحش کنم

nazanin_90
پنج شنبه 13 بهمن 1390, 13:07 عصر
سلام
با اجازه آقای امیری
نمونه بزارید من اصلاحش کنم
سلام
نمونه ضمیمه گردید
با تشکر

aromega65
پنج شنبه 13 بهمن 1390, 18:38 عصر
سلام
اینم فایل اصلاح شده
81927

nazanin_90
جمعه 14 بهمن 1390, 13:04 عصر
سلام
اینم فایل اصلاح شده
81927
با سلام و تشکر از ارائه نمونه اصلاح شده
در خصوص این موضوع یک سوال دیگر مطرح است و آن اینکه اگر دیتابیس مقصد دارای پسورد باشد کد باید به چه صورتی نوشته شود
البته خودم در اینترنت سرچ کردم و کدی بصورت زیر پیدا کردم ولی نتوانستم آن در نمونه اصلاح شده دوستمون aromega65بکار ببرم.
اگر در این مورد هم راهنمائی فرمائید ممنون میشوم
با تشکر


SELECT * INTO newTable IN ' ' [;Database=E:\Databases\myDb.mdb;pwd=myPassword] FROM sourceTable;

aromega65
جمعه 14 بهمن 1390, 14:33 عصر
سلام
من خیلی روش کار کردم
سرچ هم کردم
با Select نمیشه..

Abbas Amiri
جمعه 14 بهمن 1390, 15:13 عصر
لینک زیر راهنمای بازکردن فایل اکسس با پسورد می باشد.
باکمی دستکاری مثلا ارسال یک رکوردست به روال مندرج و سپس از طریق یک حلقه رکوردهارا کپی کنید

http://support.microsoft.com/kb/235422

لازم بذکر است باکمی دستکاری پست 8 باموفقیت عملیات کپی انجام شد:



currentdb.Execute "SELECT * INTO tdfDest IN '' [;Database=E:\myFile.mdb;pwd=MyPassword;] FROM tdfSource;"

aromega65
جمعه 14 بهمن 1390, 15:38 عصر
سلام
کدها به این صورت برای منظوری که دوستمون دارن جوابگو نیست
Option Compare Database
Option Explicit

Sub OpenPasswordProtectedDB()

'Define as Static so the instance of Access
'doesn't close when the procedure ends.
Static acc As Access.Application
Dim db As DAO.Database
Dim strDbName As String
strDbName = "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
Set acc = New Access.Application
acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=nwind")
acc.OpenCurrentDatabase strDbName
db.Close
Set db = Nothing
End Sub

nazanin_90
جمعه 14 بهمن 1390, 21:25 عصر
لازم بذکر است باکمی دستکاری پست 8 باموفقیت عملیات کپی انجام شد:



currentdb.Execute "SELECT * INTO tdfDest IN '' [;Database=E:\myFile.mdb;pwd=MyPassword;] FROM tdfSource;"


سلام جناب آقای امیری!
لطف می کنید کد فوق را در نمونه اصلاح شده قرار بدهید
با تشکر

Abbas Amiri
جمعه 14 بهمن 1390, 21:58 عصر
فایل d1 را بازکنید ودرفرم 1 جدول را کپی کنید

nazanin_90
شنبه 15 بهمن 1390, 18:06 عصر
آفرین به استاد عباس امیری :تشویق:

elahejafari
دوشنبه 17 بهمن 1390, 16:21 عصر
از پاسخ شما ممنون .
من از این روش استفاده کردم و کد مریوطه جدول را در دیتابیس مقصد ساخت و تمام اطلاعات را منتقل کرد ولی کلید اصلی را در جدول مشخص نکرده است لطفا راهنمایی کنید

Abbas Amiri
دوشنبه 17 بهمن 1390, 21:32 عصر
کد زیر را جایگزین کنید:


Private Sub Command0_Click()
On Error GoTo errCopy
Dim ws As Workspace
Dim db As Database
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(CurrentProject.Path & "\d2.accdb", False, False, ";pwd=" & "1234")
DoCmd.TransferDatabase acExport, "Microsoft Access", "" & db.Name & "", _
acTable, "Cities", "Cities", , True
MsgBox "عملیات انتقال انجام شد"
Exit Sub
errCopy:
MsgBox Err.Number & " " & Err.Description
End Sub

elahejafari
جمعه 28 بهمن 1390, 10:31 صبح
میشه کد C# کد فوق را بگویید ممنون میشم

Abbas Amiri
جمعه 28 بهمن 1390, 17:54 عصر
یک نمونه بدون نمایش محیط اکسس با Visual Basic گذاشتم راحت به سی شارپ تبدیل میشه. بنا بر مقتضیات در آن تغییرات بدهید


On Error GoTo errRunAccessProc
Dim strPath As String
Dim AccessApp As Access.Application
Dim db As DAO.Database
Dim strDest As String
strDest = "E:\MyDb.accdb"
strPath = "C:\Users\Abbas\Downloads\db1.mdb"
AccessApp = New Access.Application
db = AccessApp.DBEngine.OpenDatabase(strPath, False, False, ";PWD=;")
AccessApp.OpenCurrentDatabase(strPath)
AccessApp.DoCmd.TransferDatabase(1, "Microsoft Access", "" & strDest & "", 0, "Cities", "Cities", , True)
'AccessApp.Visible = True
AccessApp.Quit()
'System.Runtime.InteropServices.Marshal.ReleaseCom Object(AccessApp)
AccessApp = Nothing
Exit Sub
errRunAccessProc:
AccessApp.Quit()
AccessApp = Nothing
MsgBox("خطا درهنگام بازکردن فایل")