Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: tragger am Oktober 03, 2014, 22:35:45

Titel: Export von Access Tabellen aus Backend in neue Datei und ggf. später Einbindung
Beitrag von: tragger am Oktober 03, 2014, 22:35:45
Hallo Access-Experten,

ich hänge mal wieder an einem Problem. Ich mache zum Jahresabschluss immer einer Sicherung der Buchungstabelle. Diese befindet sich im Backend. Ich mache das aus dem Grunde, damit die eigentliche Tabelle von der Größe begrenzt bleibt. Nun habe ich festgestellt, dass bei dem ersten Jahresabschluss in die neu erzeugte accdb (Abschluss2013) nicht die Tabellen aus dem backend kopiert wurden, sondern einfach nur eine Verknüpfung entstanden ist und die eigentlichen Daten, wie geplant in meinem Backend ersetzt wurden.

Was mache ich falsch, damit die Tabellen aus dem Backend kopiert werden?


[...]' 4. Exportieren der Tabellen Buchungen und Rückbuchung
    pfad = CurrentProject.Path & "\Abschluesse\Abschluss" & abschlussjahr & ".accdb"
    Set dbnew = DBEngine.Workspaces(0).CreateDatabase(pfad, dbLangGeneral)
    DoCmd.CopyObject pfad, "tabBuchungen", acTable, "tabBuchungen"
    dbnew.Close
    Set sbnew = Nothing
    ' 5. Löschung Inhalt der Tabellen Buchungen und Rückbuchung
    Set db = CurrentDb
    db.Execute "DELETE * FROM tabBuchungen"
[...]


Und nun zur zweiten Frage: Wie binde ich diese Tabelle wieder ein? Bsp. wenn ich von einer Person die Buchungen des Vorjahres mittels VBA über eine SQL-Anweisung aufrufen möchte? Ich müsste alle gezahlten Buchungen aufsummieren oder ähnliches?

Edit: Einbindung habe ich hinbekommen. Wen es interessiert:


Dim dbi As Database
Dim rs2 as DAO.Recordset
Dim SQL2$
    Set dbi = OpenDatabase(CurrentProject.Path & "\Abschluesse\Abschluss2014.accdb")
    SQL2 = " SELECT * FROM tabBuchungen2"

    Set rs2 = dbi.OpenRecordset(SQL2)
    rs2.MoveLast
    MsgBox rs2![BuchungsNr]
    rs2.Close
    Set rs2 = Nothing
    Set dbi = Nothing


Ich danke vorab wieder für euer Engagement und eure Hilfe und hoffe, dass ihr mir mal wieder helfen könnt.

Tragger
Titel: Re: Export von Access Tabellen aus Backend in neue Datei und ggf. später Einbindung
Beitrag von: ebs17 am Oktober 04, 2014, 08:50:32
Sichern ist eine gute Maßnahme. Sinnvollerweise würde man das öfters als einmal im Jahr vornehmen.

ZitatIch mache das aus dem Grunde, damit die eigentliche Tabelle von der Größe begrenzt bleibt.
Da Du vermutlich nicht mehrere Millionen Buchungen  pro Jahr erzeugst, ist das unnötig. Eine Datenbank kann sehr gut mit sehr vielen Datensätzen auf einmal umgehen, wenn der Entwickler einige Grundregeln kennt und anwendet. Stichwort Indexnutzung.

Zur Frage: Dein Code läuft im Frontend. Dort gibt es nur eine Verknüpfung auf die Tabelle, und das CopyObject wird daher nur die Verknüpfung erfassen.

Du müsstest daher bei gleichem Ablauf auf das Backend referenzieren:
BackendApplication.DoCmd.CopyObject ...

Oder aber Du machst eine Tabellenerstellungsabfrage und beachtest da, dass es sich um verschiedene Datenbanken handelt:
dbnew.Execute "SELECT.* INTO tabBuchungen" & _
     " FROM [" & FullPathOldBackend & "].tabBuchungen"


Die Tabellenerstellungsabfrage kann aber auch mit der verknüpften Tabelle ausgeführt werden, etwa ...
CurrentDb.Execute "SELECT.* INTO [" & FullPathNewBackend & "].tabBuchungen" & _
     " FROM tabBuchungen"