So aktualisieren Sie die Tabellenliste mit vba im Zugriff 2007

So aktualisieren Sie die Tabellenliste mit vba in Access 2007 . Ich mache Tabelle im Sql Code mit vba :

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

Fehlermeldung: Microsoft Office Access kann die objecttabelle nicht finden2, wenn Pause RefreshDatabaseWindow und refresh manuell drücken Sie F5 und laufen zurück, um korrekt zu arbeiten. Wie man es automatisch macht? In Access 2003 funktionieren korrekt, wenn Tabellenliste aktiv ist.

Ich versuche Pause, aber nicht Arbeit:

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

Dies ist, was ich zum Anfügen von SQL / server-Tabellen verwenden. Ich lösche sie dann re-Link sie mit diesem Code. Offensichtlich musst du den letzten Abschnitt für jeden Tisch wiederholen. Ich weiß nicht, ob das mit einem ADP arbeiten wird. Meine Umgebung verwendet kein 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 

Works in Access 2007, 2010 (Projekt .ADP ):

 RefreshDatabaseWindow DoCmd.SelectObject acTable, "table2", True DoCmd.TransferDatabase ... 

Diese Arbeit gut in Access2010

Rufen Sie diese function zwischen Tabellenerstellung und TransferDataBase auf

function refrescarconexionBBDD ()

 Dim cadenaConexion As String cadenaConexion = Application.CurrentProject.BaseConnectionString Application.CurrentProject.CloseConnection Application.CurrentProject.OpenConnection cadenaConexion 

Endfunktion