Wie Sie programmgesteuert aktualisieren einer verknüpften Tabelle in Access aktualisieren von Daten-Typen auch?

Arbeite ich mit einem alten Microsoft Access-Datenbank, die wir haben vor kurzem aktualisiert, um verknüpfte Tabellen/SQL-Server-backend.

Mache ich einige änderungen an der Struktur der Daten und möchten programmgesteuert aktualisieren der verknüpften Tabelle zu verweisen.

Allerdings mit dem code, den ich verwende, nach dem tun, was ich erwarten würde wäre, aktualisieren Sie die verknüpften Tabellen bekomme ich nicht aktualisiert Datentypen für einen bestimmten Tisch. Jetzt ist der Datentyp Text, aber wenn ich Externe Daten - > Tabellenverknüpfungs-Manager, und gehen durch diesen Prozess, den Sie aktualisieren von Datum/Zeit.

(Ich hätte gerne eine Funktion, flip zwischen der Entwicklung und der Produktion, so dass ich nicht betrachten Sie die obige route, um eine option sein.)

Access/VB ist nicht meine stärkste skill mehr, aber von der MSDN-Website (diese und diese) scheint es, wie tb.Fields.Refresh erforderlich ist, aber es nicht so funktioniert wie ich es erwarten würde.

Was mache ich falsch?

Function RefreshLinkedTables() As Boolean
    Dim db As DAO.Database
    Dim tb As DAO.TableDef
    Dim fld As DAO.Field

    Set db = CurrentDb

    For Each tb In db.TableDefs
        ' Skip system files.
        If (Mid(tb.Name, 1, 4) <> "MSys" And Mid(tb.Name, 1, 4) <> "~TMP") Then
            Debug.Print tb.Name
            Debug.Print tb.Connect
            If (Mid(tb.Connect, 1, 5) = "ODBC;") Then
                tb.RefreshLink
                If (tb.Name = "Jobs") Then
                    Debug.Print "Refreshing fields data"
                    tb.Fields.Refresh
                End If
            End If
            Debug.Print "=== === ==="
        End If
        db.TableDefs.Refresh
    Next

    Set db = Nothing

    RefreshLinkedTables = True
    Exit Function
End Function
  • Wenn die Aktualisierung der Tabelle link funktioniert nicht zu Ihrer Zufriedenheit haben Sie versucht, löschen Sie die verknüpfte Tabelle und dann neu zu erstellen?
  • Danke @GordThompson. Ich glaube, ich könnte löschen Sie die verknüpfte Tabelle, aber ich würde viel lieber die programmatische Aktualisierung funktioniert wie der standard tut. Ich bin auch nicht 100% wie die DSN auf die verwiesen wurde, wenn die verknüpften Tabellen erstellt wurden, und ich möchte die Auswirkungen auf die Benutzer so wenig wie möglich.
  • Verstanden, und wenn Tabellenverknüpfungs-Manager können es tun, dann hätte ich erwartet, dass tb.RefreshLink wäre in der Lage, es zu tun. Haben Sie versucht, so etwas wie tb.Connect = tb.Connect & "" um die .Connect Eigenschaft "dirty" vor dem Aufruf von tb.RefreshLink?
  • Das ist keine schlechte Idee. Werde ich probieren, wenn ich wieder im Büro ist morgen, und aktualisieren Sie Sie mit, wie gut es funktionierte. Weißt du, ob der tb.Felder.Refresh bietet einen nutzen? Ich bin mir nicht 100% und ich möchte, um es zu entfernen, wenn ich kann.
  • RE: tb.Fields.Refresh - Kann nicht sagen, ich habe noch nie in Benutzung hatte, dass diese spezielle Methode.
  • Leider macht der Connect Eigenschaft dirty hat nicht funktioniert. Zusätzlich zu versuchen, nichts zu ergänzen, ich habe auch versucht, die änderung der Description im Zusammenhang; weder gearbeitet 🙁
  • Sehr seltsam. Ich habe nur bestätigt, dass die unter "normalen" Umständen, eine tb.RefreshLink alle von selbst, ausreichend ist. (Access 2010 und SQL Server 2008)
  • Bevor ich begann, anderen zu helfen, ich war dumping Eigenschaften; an dieser Stelle ich denke, ich werde zu aktualisieren, die durch die Verknüpften Tabellen-Manager und hoffe, dass meine Verbindungsdaten nicht furchtbar Durcheinander gebracht.
  • Vielen Dank für deine Hilfe, Gord. Ich endlich herausgefunden, was die Merkwürdigkeiten waren und gepostet, eine Antwort Detaillierung. Wenn Sie möchten, fügen Sie eine Antwort mit Ihren Kommentaren haben Sie meine +1.

InformationsquelleAutor James Skemp | 2013-06-07
Schreibe einen Kommentar