รบกวนเรื่อง การ Link Database
กระทู้เก่าบอร์ด อ.Yeadram

 1,908   3
URL.หัวข้อ / URL
รบกวนเรื่อง การ Link Database

จาก Code การ Link Database ดังนี้

Me.Caption = "กำลังลิงค์ฐานข้อมูล..."
Dim Table(2) As String
Table(1) = "tblPerson"
Table(2) = "tblSubjects"

Dim i As Integer

For i = 1 To 2
    
    DoCmd.TransferDatabase acLink, "Microsoft Access", "D:\NYK ITF Project\Access_Test_Link_Database\Data.mdb", acTable, Table(i), Table(i), False, True

Next i

DoCmd.OpenForm "FormMain", acNormal
DoCmd.Close acForm, "FormLink"

ประเด็นปัญหาคือ
1. กรณี ถ้าผมต้องการ Link ทุก Table (เนื่องจากมีหลาย Table มาก) ต้องทำอย่างไรครับ
#################################

จาก Code ในการเปิดหา File mdb ปลายทาง ดังนี้

    Dim strPictFile As String
    Dim strFileType As String, strFileTypeDesc As String
    
    strFileType = "*.mdb, *mde"
    strFileTypeDesc = "Pict Files (*.mdb, *mde)"
    
    strPictFile = GetOpenFile(strFileType, strFileTypeDesc)
    If strPictFile <> "NoFile" Then
    ' File has been selected
        Caption = strPictFile
        Me.PictFile = strPictFile
            
    End If

ประเด็นปัญหาคือ
2. เมื่อ Click ปุ่ม Command จะแสดง Dialog ไปที่ My Document
แต่ผมอยากให้ Default ไปที่ Dir/Folder ปลายทางที่เราต้องการเลย
เช่น D:\NYK ITF Project\Access_Test_Link_Database

รบกวนพี่ๆ แน่ะนำด้วยครับ
ขอบพระคุณมากๆ ครับ


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

1 @R01542
1.
on error resume next
dim sq as string


sq ="SELECT Name From MsysObject where type=6"

' type = 6 หมายถึง ตารางลิงค์
' ถ้าไม่เคยมีตารางลิงค์มาก่อน ให้ใช้ Where type=1 and left(name,4)<>'Msys'

RS.open sq, Conn,1

do while not rs.eof
docmd.deleteobject actable, rs(0) ' ถ้าเคยมีตารางเก่า ให้ลบออกก่อน
docmd.transferdatabase...................rs(0).........
rs.movenext
loop
rs.close

คร่าวๆ นะครับ ลองดู

2. ฟังก์ชั่น GetOpenFile()
มี properties    initdir หรือเปล่าครับ ถ้ามีใช้มันเลย
หรือไม่ ก็ลองเข้าไปที่ เครื่องมือ>>ตัวเลือก>>ทั่วไป>>โฟลเดอร์เริ่มต้นของฐานข้อมูล    ลองแก้ไขดูครับ

สำหรับผมมักจะ add control เพิ่มเข้ามาสำหรับงานนี้ครับ
COMDLG32.OXC (Microsoft common dialog control 6.0 (SP6) )
ตั้งค่า initdir ไว้รอได้เลยครับ
2 @R01571
ผมใช้แบบนี้ครับ
ลบทุก table
Public Sub DelAllTable()
    Dim tdTable As TableDef
    For Each tdTable In CurrentDb.TableDefs
    If Left(tdTable.name, 4) <> "MSys" Then 'filter out System tables
        DoCmd.DeleteObject acTable, tdTable.name
    End If
    Next tdTable
End Sub


Link เข้ามาทุก table
Public Sub LinkAllTables()
    Dim tdTable As TableDef, dbDataDB As Database
    Dim strMyDataDB As String

    strMyDataDB = "C:\MyProg\MyAccess.mdb"

    Set dbDataDB = OpenDatabase(strMyDataDB)
    For Each tdTable In dbDataDB.TableDefs
        If Left(tdTable.name, 4) <> "MSys" Then
        DoCmd.TransferDatabase acLink, "Microsoft Access", dbDataDB.name, acTable, tdTable.name, tdTable.name
        End If
    Next tdTable
End Sub

รู้สึกว่าจะได้ความรู้นี้มาจาก web ของ อ.สุภาพน่ะครับ
3 @R01572
===================================================
ประเด็นปัญหาคือ
2. เมื่อ Click ปุ่ม Command จะแสดง Dialog ไปที่ My Document
แต่ผมอยากให้ Default ไปที่ Dir/Folder ปลายทางที่เราต้องการเลย
เช่น D:\NYK ITF Project\Access_Test_Link_Database\
===================================================
ใส่ chdir "D:\NYK ITF Project\Access_Test_Link_Database\" ไว้บรรทัดแรก ๆ เลยครับ
เช่น (ของผมใช้เปิด file .zip นะครับ)

Private Sub GetMemberFileBtn_Click()
    ChDir "C:\CSCD_UDC\Inbox"
    Dim strMemberFile As String
    Dim strFileType As String, strFileTypeDesc As String
    
    strFileType = "*.zip"
    strFileTypeDesc = "Zip Files (*.Zip)"
    
    strMemberFile = GetOpenFile(strFileType, strFileTypeDesc)
    If strMemberFile <> "NoFile" Then
        If Mid(File2ImportName(strMemberFile), 6, 4) <> "CDMB" Then
            MsgBox "äÁèãªèá¿éÁ¢éÍÁÙÅÊÁÒªÔ¡·ÕèÃѺÃͧáÅéÇ", vbExclamation, "á¿éÁµÍºÃѺäÁè¶Ù¡µéͧ"
            Me.CSCDMembersFile = ""
            Exit Sub
        Else
            Me.CSCDMembersFile = strMemberFile
        End If
    End If
End Sub
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2605s