กระทู้เก่าบอร์ด อ.Yeadram
1,253 5
URL.หัวข้อ /
URL
พอมีตัวอย่างการแก้ไข เทเบิลลิ้งค์แบบ ออโต้ หรือเปล
ท่านอาจารย์ครับ
หลายครั้งที่เราลิ้งค์เทเบิลจาก db อีกตัวหนึ่ง (ซึ่งอยู่ใน Folder เดียวกัน)
แต่พอเปลี่ยนชื่อ Folder หรือ Drive ก็จะทำให้ลิ้งค์เสีย
ไม่ทราบว่ามีคำสั่งให้โปรแกรมหาลิ้งค์เองแบบออโต้หรือเปล่า
หลายครั้งที่เราลิ้งค์เทเบิลจาก db อีกตัวหนึ่ง (ซึ่งอยู่ใน Folder เดียวกัน)
แต่พอเปลี่ยนชื่อ Folder หรือ Drive ก็จะทำให้ลิ้งค์เสีย
ไม่ทราบว่ามีคำสั่งให้โปรแกรมหาลิ้งค์เองแบบออโต้หรือเปล่า
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R01886
ขอบคุณครับอาจารย์
ตอนนี้ผมแก้ไขได้แล้วครับ โดยค้นดูตัวอย่างเก่า ๆ มาปรับใช้
คืองานของผมส่วนใหญ่ จะพัฒนาขึ้นใช้เองในหน่วยงาน
และสาขาอื่น ๆ มักจะขอไปใช้ด้วย จึงทำให้ต้องพัฒนาในลักษณะ
Front-End และ Back-End ให้อยู่ใน Folder เดียวกัน
เพื่อให้ง่ายต่อการ Update และปรับปรุง
ปัญหาที่พบคือเวลา Copy ไปใช้งานที่อื่น
หากนำไปวางผิด Drive หรือ หรือชื่อ Folder เปลี่ยนไป ก็จะทำให้ ลิ้งค์เทเบิลเสีย
ไม่สามารถเปิดโปรแกรมได้
ตอนนี้แก้ไขได้แล้ว จึงทำให้ไม่ต้องห่วงว่า ผู้ใช้จะนำไปวางหรือติดตั้งไว้ใน Drive ไหน
หรือเปลี่ยนชื่อ Folder ผิดไปจากเดิมอย่างไร ก็สามารถเปิดโปรแกรมได้
ตอนนี้ผมแก้ไขได้แล้วครับ โดยค้นดูตัวอย่างเก่า ๆ มาปรับใช้
คืองานของผมส่วนใหญ่ จะพัฒนาขึ้นใช้เองในหน่วยงาน
และสาขาอื่น ๆ มักจะขอไปใช้ด้วย จึงทำให้ต้องพัฒนาในลักษณะ
Front-End และ Back-End ให้อยู่ใน Folder เดียวกัน
เพื่อให้ง่ายต่อการ Update และปรับปรุง
ปัญหาที่พบคือเวลา Copy ไปใช้งานที่อื่น
หากนำไปวางผิด Drive หรือ หรือชื่อ Folder เปลี่ยนไป ก็จะทำให้ ลิ้งค์เทเบิลเสีย
ไม่สามารถเปิดโปรแกรมได้
ตอนนี้แก้ไขได้แล้ว จึงทำให้ไม่ต้องห่วงว่า ผู้ใช้จะนำไปวางหรือติดตั้งไว้ใน Drive ไหน
หรือเปลี่ยนชื่อ Folder ผิดไปจากเดิมอย่างไร ก็สามารถเปิดโปรแกรมได้
3 @R01888
รบกวนขอตัวอย่างด้วยครับ ยังไม่มีครับ หรือถ้าอยู่ใน Gmail
บอก ชื่อ FILE ให้หน่อยก็ได้ครับ
บอก ชื่อ FILE ให้หน่อยก็ได้ครับ
4 @R01890
อืม..หนูสนใจมากเลยค่ะ รบกวนคุณ ภาณุวัฒน์ กรุณาแนะนำด้วยนะค? ว่าคุณแก้ไขได้ด้วยวิธีการอย่างไร เพราะหนูก็เจอปัญหาแบบเดียวกันเลยค่ะ เวลาเปลี่ยนตำแหน่ง Drive ที่ไรก็วุ่นวายทุกทีค่ะ
5 @R01896
ผมใช้แบบนี้ครับ
ลองปรับใช้ดูนะครับ
Public Sub LinkAllTable()
Dim strDataDrive As String, strMyDataDB As String
strDataDrive = DLookup("DataDrive", "TabConfig")
strMyDataDB = strDataDrive & "CSMBSCer\CSMBSCer.dat"
If Len(Dir(strMyDataDB, 2)) = 0 Then
MsgBox "ไม่้พบแฟ้ม CSMBSCer.Dat" & _
"@กรุณากำหนด Drive ของข้อมูลให้ถูกต้อง" & _
"@", vbInformation, "แฟ้มข้อมูลไม่ครบ"
'Call Shell("Notepad C:\Training\Training.ini", 1)
Quit
Else
Dim tdTable As TableDef, DataDB As Database
Set DataDB = OpenDatabase(strMyDataDB)
For Each tdTable In DataDB.TableDefs
If Left(tdTable.Name, 4) <> "MSys" Then 'filter out System tables
DoCmd.TransferDatabase acLink, "Microsoft Access", DataDB.Name, acTable, tdTable.Name, tdTable.Name
End If
Next tdTable
End If
End Sub
ลองปรับใช้ดูนะครับ
Public Sub LinkAllTable()
Dim strDataDrive As String, strMyDataDB As String
strDataDrive = DLookup("DataDrive", "TabConfig")
strMyDataDB = strDataDrive & "CSMBSCer\CSMBSCer.dat"
If Len(Dir(strMyDataDB, 2)) = 0 Then
MsgBox "ไม่้พบแฟ้ม CSMBSCer.Dat" & _
"@กรุณากำหนด Drive ของข้อมูลให้ถูกต้อง" & _
"@", vbInformation, "แฟ้มข้อมูลไม่ครบ"
'Call Shell("Notepad C:\Training\Training.ini", 1)
Quit
Else
Dim tdTable As TableDef, DataDB As Database
Set DataDB = OpenDatabase(strMyDataDB)
For Each tdTable In DataDB.TableDefs
If Left(tdTable.Name, 4) <> "MSys" Then 'filter out System tables
DoCmd.TransferDatabase acLink, "Microsoft Access", DataDB.Name, acTable, tdTable.Name, tdTable.Name
End If
Next tdTable
End If
End Sub
Time: 0.3111s
การจะให้หาใหม่แบบ Auto มันอาจจะช้าครับ เพราะน่าจะเป็นการสแกนทั้งเครื่องเลย
ดังนั้น เมื่อตรวจสอบได้ว่า ลิงค์หาย น่าจะให้ปรากฎ Dialog ขึ้นมาให้ผู้ใช้หาเองดีกว่า
และกรณีอย่างนี้ เราควรบันทึก path ไว้ใน ตาราง หรือไว้ใน text file
เมื่อมีการเปลี่ยน พาธ ก็จะทำการค้นหาแค่ครั้งเดียว ครั้งต่อๆ ไปก็ทำงานได้ตามปกติ จนกว่าจะมีการย้าย พาธอีก ถึงจะได้เรียกใช้ Dialog ตัวนี้