ปัญหา เปลี่ยนที่อยู่ be แล้วเปิดไฟล์ไม่ได้
กระทู้เก่าบอร์ด อ.Yeadram

 971   3
URL.หัวข้อ / URL
ปัญหา เปลี่ยนที่อยู่ be แล้วเปิดไฟล์ไม่ได้

ก่อนหน้านี้ทำการ Split ไฟล์ค่ะ ทำให้มีไฟล์แยกมา 2 ตัว

ตัวแรก เป็น พวก F. ฟอร์ม, Q.คิวรี่, R.รีพอร์ท ค่ะ (โดย Link ข้อมูลจาก T อีกไฟล์)
ตัวสอง เป็น T ตารางข้อมูล ค่ะ (be)

ต่อมา ทำการ ย้ายที่อยู่ ของ ไฟล์ be ทำให้ ไม่สามารถเข้าถึงข้อมูลได้ค่ะ
การใช้ F. Q. R. ยังคง Link table ไปยังที่อยู่เดิมค่ะ

ปัญหาคือ ไม่ทราบวิธีการ Link ที่อยู่ของ ไฟล์ be กรณีที่มีการเปลี่ยนแปลงใหม่ค่ะ
รบกวน ผู้รู้ช่วยแนะนำด้วยค่ะ

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R23177
ลองนำไปปรับใช้ดูนะครับน่าจะตรงตามที่คุณต้องการ
VDO
2 @R23178
ถ้าต้องการเปลี่ยนพาธตารางที่ลิ้งค์ที่ละตัวก็ใช้ฟังก์ชั่นนี้ครับ
Public Function ChangeLinkedMDB()
    Dim DB As DAO.Database
    Dim TD As DAO.TableDef
    Dim FileName As String, PathName As String
' ------------------------------------------------------------------------------------------
    FileName = "tb_Customer" ' ชื่อตารางเป้าหมายที่ต้องการเปลี่ยน
    PathName = "C:\Data\A.mdb" ' ชื่อพาธไฟล์เป้าหมายที่ต้องการเปลี่ยน
'-------------------------------------------------------------------------------------------
On Error GoTo Err_Handler
    Set DB = CurrentDb
    Set TD = DB.TableDefs(FileName)
        If (TD.Attributes And dbAttachedTable) = dbAttachedTable Then
            TD.Connect = ";DATABASE=" & PathName
            TD.RefreshLink
        End If
Exit_Handler:
    DB.Close: Set DB = Nothing
    Exit Function
Err_Handler:
    Select Case Err.Number
        Case 3024&, 3044&
            MsgBox "ไม่พบไฟล์ในพาธที่กำหนด", , "พาธไฟล์ผิดพลาด"
        Case 3011&
            MsgBox "ไม่พบชื่อตารางเป้าหมายในไฟล์ที่กำหนด", , "ชื่อตารางผิดพลาด"
    End Select
End Function


แต่หากต้องการเปลี่ยนตารางลิ้งค์ทั้งหมดไปไฟล์และพาธเดียวกันหมดเลยก็ใช้แบบ ลูปทุกตารางที่ลิ้งค์ได้เลย แบบนี้ครับ
Public Function ChangeLinkedMDB()
    Dim DB As DAO.Database
    Dim TD As DAO.TableDef
    Dim FileName As String, PathName As String
' ------------------------------------------------------------------------------------------
    PathName = "C:\Data\A.mdb" ' ชื่อพาธไฟล์เป้าหมายที่ต้องการเปลี่ยน
'-------------------------------------------------------------------------------------------
On Error GoTo Err_Handler
    Set DB = CurrentDb
    For Each TD In DB.TableDefs
        If (TD.Attributes And dbAttachedTable) = dbAttachedTable Then
            TD.Connect = ";DATABASE=" & PathName
            TD.RefreshLink
        End If
    Next TD
Exit_Handler:
    DB.Close: Set DB = Nothing
    Exit Function
Err_Handler:
    Select Case Err.Number
        Case 3024&, 3044&
            MsgBox "ไม่พบไฟล์ในพาธที่กำหนด", , "พาธไฟล์ผิดพลาด"
        Case 3011&
            MsgBox "ไม่พบชื่อตารางเป้าหมายในไฟล์ที่กำหนด", , "ชื่อตารางผิดพลาด"
    End Select
End Function


- จากนั้นก็สั่ง ChangeLinkedMDB ได้เลยครับ ถ้าพาธไฟล์ และชื่อตารางใส่ถูกต้องการจะเปลี่ยนลิ้งค์ทันทีครับ ปรับใช้ดู
3 @R23182
ขอบคุณมากค่ะ ได้คำตอบที่ต้องการค่ะ

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3593s