PDA

View Full Version : سوال: آدرس دهي جداول لينك شده با كدنويسي



zzzzzza
سه شنبه 31 فروردین 1389, 12:54 عصر
اساتید معظم سلام/
یک سئوال در مورد اکسس داشتم:
من دو فایل اکسس دارم یکی از آنها بعنوان سرور عمل میکند یکی دیگر به عنوان یوزر
فایل یوزر به فایل سرور اسپلیت شده است(تیبلهای آن از سرور لینک گرفته اند). برای مثال فایل سرور من در درایو دی وجود دارد و فایل یوزر من در درایو اف.
با فرض اینکه من فایل سرور را در مسیر دیگری مثلا سی قرار دهم چگونه میتوان از طریق کد نویسی در یک فرم مسیر فایل سرور را که در درایو سی قرار گرفته را جهت آپدیت شدن تیبلها معرفی کرد.
با سپاس

مهدی قربانی
سه شنبه 31 فروردین 1389, 22:52 عصر
سلام
http://barnamenevis.org/forum/showthread.php?t=199543
(http://http//barnamenevis.org/forum/showthread.php?t=199543)

zzzzzza
چهارشنبه 01 اردیبهشت 1389, 06:57 صبح
لینک بالا کار نمیکند

mohammadsaleh
چهارشنبه 01 اردیبهشت 1389, 08:48 صبح
سلام دوست عزيز

اين سئوال مهم براي من هم پيش آمد و بيشتر جوابهايي كه دريافت كردم بازسازي پيوند جداول برنامه به صورت دستي انجام مي شد و بالاخره با تلاش فراوان راه حل زير رو براي شما عزيز و ساير دوستان پيشنهاد مي كنم

در اين روش در فرم استارت آپ برنامه كه به هيچ يك از جداول ارتباطي نداره كدهاي زير را وارد مي كنيد و در صورت تغيير درايو يا تغيير نام پوشه اصلي برنامه ' پيوند جداول بدون دخالت شما باجداول اصلي كه در ديتابيس هستند بازسازي خواهد شد.





Option Compare Database
Dim boolChange As Boolean




Private Sub Form_Open(Cancel As Integer)

'Me.Form.Visible = False
' Tests a linked table for valid back-end.
On Error GoTo Err_Form_Open
Dim strTest As String, db As Database
Dim td As TableDef
Set db = CurrentDb
For Each td In db.TableDefs

If Len(td.Connect) > 0 Then ' Is a linked table.
On Error Resume Next ' Turn off error trap.
strTest = Dir(Mid(td.Connect, 11)) ' Check file name.
On Error GoTo Err_Form_Open ' Turn on error trap.

If Len(strTest) = 0 Then ' No matching file.
boolChange = True
End If

If boolChange = True Then
' DoCmd.OpenForm "Form1" ' Open prompt form.




Dim OfficeDbsPath As String
Dim Masir As String
Masir = Access.CurrentProject.Path
OfficeDbsPath = Access.CurrentProject.Path & "LinkTblsDbs\OfficeDbs.mdb"

' logfile OfficeDbs
DoCmd.DeleteObject acTable, "logfile"
DoCmd.TransferDatabase acLink, "Microsoft Access", OfficeDbsPath, acTable, "logfile", "logfile", False





Exit Sub
End If
End If

Next ' Loop to next tabledef.
DoCmd.Close acForm, Me.name

db.Close

'open the Main Form
'DoCmd.OpenForm "frmMain"
'MsgBox "ÇÏÇãå ÈÑäÇãå"
' DoCmd.OpenForm "login"
Exit_Form_Open:
Exit Sub
Err_Form_Open:
MsgBox Err.Description
Resume Exit_Form_Open
End Sub


OfficeDbs ديتابيسي است كه جدول logfile از آن به برنامه لينك شده است و شما مسير اين جدول را در كد بالا مي توانيد اصلاح بفرمائيد.
بديهي است براي همه جداول بايد رديف يك تا هشت را منظور كنيد . البته مي توانيد اين بخش در يك مدول نوشته و تابع مربوطه را فراخواني نماييد.

موفق باشيد