2016-07-07 4 views
0

私はMS Accessでリンクテーブルを追加するプロセスを自動化しようとしています。vbaで一意のレコード識別子を動的に選択していますか?

私は、リンクテーブルを追加するなど、これまでに動作するように

' RUN ME 
Sub testItOut() 

    Dim loginInfo As New AuthInfoz 

    loginInfo.workgroup = "E:\xxxdatas\SEC\Secured.mdw" 
    loginInfo.username = "XXXXX" 
    loginInfo.password = "XXXX" 
    loginInfo.dbs = "E:\xxxdatas\username\Report.mdb" 

    Call DeleteRelinkToViewAndRename(loginInfo, "sometable", "ServiceProvision_Schema.hrpersnl") 
End Sub 

' Deletes the old table and relinks it 
' to the new schema 

Sub DeleteRelinkToViewAndRename(loginInfo As AuthInfoz, tblName, tblTarget) 
    Dim objAccess As Access.application 

    Dim view_ucp_consumers2_qf As DAO.QueryDef 

    ' Open the thing manually first... 
    'Shell """C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE""" & " " & loginInfo.dbs 
    Set objAccess = GetObject(loginInfo.dbs).application 

    objAccess.CurrentDb 

    ' Delete the Linked Table...THIS WORKS UNCOMMENT LATER... 
    objAccess.DoCmd.DeleteObject acTable, tblName 

    ' Relink the old table to the new schema 
    ' THIS IS WHERE THE DIALOG APPEARS 
    objAccess.DoCmd.TransferDatabase _ 
     acLink, _ 
     "ODBC Database", _ 
     "ODBC;DSN=MEDSN;Database=MEDATABASE;Trusted_Connection=Yes", _ 
     acTable, _ 
     tblTarget, _ 
     tblName 
    ' Close out... 
    objAccess.Quit acQuitSaveAll 

End Sub 

それを得ている...しかし、その後のダイアログボックスは、主キーを要求するポップアップするか、それが一意なレコード識別子それを呼び出すよう。とにかくこれの周りにはありますか?

+1

'tblTarget'にPKがあり、アクセスがそれを無視していますか?またはPKが全くありませんか? – Brad

+0

いいえ、本当に古いデータベースです。 – leeand00

+0

'Mid $(CreateObject(" Scriptlet.TypeLib ")。GUID、2,36)'がGUIDとして返されます。 – Jeeped

答えて

2

これまでのMS-Accessフォーラムで回答が見つかりました。この方法を使用すると、ちょうどテーブルまで、尋ねていない質問...なし主キー...

' Deletes the old table and relinks it 
' to the new schema 
Sub DeleteRelinkToViewAndRename(loginInfo As AuthInfoz, tblName, tblTarget) 

    Dim objAccess As Access.application 
    Dim db As DAO.database 

    Dim tdf As DAO.TableDef 

    ' Open the thing manually first... 
    'Shell """C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE""" & " " & loginInfo.dbs 
    Set objAccess = GetObject(loginInfo.dbs).application 
    Set db = objAccess.CurrentDb 

    ' Delete the Linked Table...THIS WORKS UNCOMMENT LATER... 
    objAccess.DoCmd.DeleteObject acTable, tblName 

    ' Relink the old table to the new schema 
    Set tdf = db.CreateTableDef(tblName, 0, tblTarget, "ODBC;DSN=MEDSN;Database=MEDATABASE;Trusted_Connection=Yes") 

    ' Add the new table def 
    db.TableDefs.Append tdf 

End Sub 

あなたはprimary key programmatically as wellを設定することができますをリンクします。

+0

リンクは機能しますが、PKなしでテーブルを使って何かできるのですか?更新/削除/挿入? – Brad

+0

@Brad読み込み中です。 – leeand00

+0

Gotcha、よく聞こえる – Brad

関連する問題