3

で vba を使用してテーブル リストを更新する方法Access 2007Sql次を使用してコードでテーブルを作成しvbaます。

DoCmd.RunSQL "SELECT * INTO table2 FROM table1", True    
RefreshDatabaseWindow
DoCmd.TransferDatabase acExport, "Microsoft Access", "C:\import.mdb", , "table2", tab2, 0

エラー メッセージ: Microsoft Office Access はオブジェクト table2 を見つけることができませRefreshDatabaseWindowF5。自動的に行う方法は?Access 2003 では、テーブル リストがアクティブな場合に正しく動作します。

私は一時停止しようとしますが、うまくいきません:

Private Declare Sub sApiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
...
RefreshDatabaseWindow
Call sApiSleep(4000)
...
4

3 に答える 3

1

これは、SQL/サーバー テーブルをアタッチするために使用するものです。それらを削除してから、このコードで再リンクします。当然のことながら、テーブルごとに最後のセクションを繰り返す必要があります。これがADPで機能するかどうかはわかりません。私の環境では ADP を使用していません。

Dim vConnect As String
Dim td As New TableDef
Dim vtablename As String

vConnect = "ODBC;Driver={SQL Server Native Client 10.0};SERVER=<server>;DATABASE=" <database>; Uid=<user>; Pwd=<pwd>;TrustServerCertificate=yes;encrypt = yes;"

'Delete existing tables
For Each td In CurrentDb.TableDefs
     vattributes = td.Attributes And dbAttachedODBC
     If Left(td.Name, 4) <> "Msys" And vattributes > 0 Then CurrentDb.TableDefs.Delete td.Name
Next
Debug.Print "Old Tables Deleted"

Set td = CurrentDb.CreateTableDef("<your table name>")
td.Connect = vConnect
td.SourceTableName = "<your table name>"
vtablename = td.Name
CurrentDb.TableDefs.Append td
Debug.Print "Attached table: " & vtablename
于 2012-11-26T07:31:48.223 に答える
0

Access 2007, 2010(プロジェクト)で動作し.ADPます:

RefreshDatabaseWindow
DoCmd.SelectObject acTable, "table2", True
DoCmd.TransferDatabase ...
于 2013-01-02T10:55:21.503 に答える