Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Doming am Juni 19, 2025, 12:05:45

Titel: Formular (keine Daten) als Datei speichern
Beitrag von: Doming am Juni 19, 2025, 12:05:45
Hallo,

ich möchte ein Formular mit dem dahinterliegenden Code als Datei speichern, um es auch in zukünftigen DB verwenden zu können.
Wie ich eine Datei in eine andere DB exportiere weiß ich, aber kann man solch ein Formular auch irgendwo abspeichern, um es dann wie ein Modul als Datei in einer anderen DB zu importieren?

Gruß
 Doming
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Josef P. am Juni 19, 2025, 12:18:22
Hallo!

Du kannst mit Application.SaveAsText das Formular als Textdatei exportieren und mit Application.LoadFromText wieder importieren.

Gruß
Josef
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Doming am Juni 19, 2025, 13:13:26
Hallo und danke für den Tipp, Josef.

Man kann den Formular-Code vom VBA-Editor aus exportieren (CLS-Format), importieren lässt sich das dann aber nicht.

Mit Josefs Befehlen werde ich mir die Formulare nun wegspeichern und bei Bedarf dann mittels ein paar kleinen Prozeduren eigenständig ins neue Projekt einbinden.

Gruß
 Doming
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: andyfau am Juni 19, 2025, 15:08:45
Hallo Doming,
wieso erstellst Du nicht einfach eine "StandardDB.accdb" aus der Du dann einfach Standardobjekte importierst?
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Doming am Juni 19, 2025, 17:50:40
Hallo Andreas,

exportieren würde gehen, Import ist mein Problem.
Ich werde meine ,,Standardmodule und Formulare" als txt exportieren und mit einer Public-Prozedur nachinstallieren.
Morgen, wenn ich wieder am betreffenden Rechner bin.
Ich werde das dann hier nachreichen und zum Zerfleddern freigeben  ;)

Gruß
 Doming
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Knobbi38 am Juni 19, 2025, 18:52:15
Wenn man zwei DBs gleichzeitig ausmacht, kann man auch Drag&Drop zwischen diesen machen. Da braucht man nicht immer extra etwas importieren  ;)

Nur mal so ...

Knobbi38
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Josef P. am Juni 19, 2025, 20:16:24
Hallo!

Der Export als Textdatei hat den guten Nebeneffekt, dass man die Datei mit einem Versionsverwaltungssystem nutzen kann.

Ich verwende für meine wiederverwendbaren Codemodule ein Access-Add-In, mit dem ich auch die Abhängigkeiten auflöse.
Im Codemodule schreibe ich dafür in einen XML-Block, welche anderen Codemodule benötigt werden.

Gruß
Josef



Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Doming am Juni 20, 2025, 08:05:03
Hallo,
folgenden Code habe ich mir zusammengebastelt:
Public Sub AllesDa()
    IstVorhanden "tabelle1"
    IstVorhanden "tabelle2"
    IstVorhanden "frmformular1"
    IstVorhanden "frmformular2"
    IstVorhanden "frmformular3"
End Sub
'-----------------------------------------------------------------------
Private Function IstVorhanden(SuchName As String) As Boolean
    On Error GoTo Fehler
    If DCount("[Name]", "MSysObjects", "[Name] = '" & SuchName & "'") = 1 Then
        IstVorhanden = True
    End If
   
    If IstVorhanden Then
        Debug.Print SuchName & " ist vorhanden"
    Else
        If Left(SuchName, 3) = "frm" Then
            If Not HolFormular(SuchName) Then
                Debug.Print "Ich habe Probleme beim Import von " & SuchName
            Else
                Debug.Print SuchName & " ist jetzt vorhanden!"
            End If
        Else
            Debug.Print SuchName & " ist NICHT vorhanden"
        End If
    End If
    Exit Function
Fehler:
    Debug.Print Now, SuchName, Err.Number, Err.Description
End Function
'-----------------------------------------------------------------------
Private Function HolFormular(FName As String) As Boolean
 Dim QuellDatei As String
    QuellDatei = "C:\Entwicklung\Module\" & FName & ".txt"
    If Dir(QuellDatei) <> "" Then
        Application.LoadFromText acForm, FName, QuellDatei
        DoEvents
        HolFormular = True
    Else
        Debug.Print "Ich finde das Formular " & FName & " nicht im Module-Verzeichnis"
    End If
End Function
Sieht aus als würde es wie gewünscht laufen.
Schön wäre es noch, wenn er mir nicht nur die Formulare importiert, sondern auch die Tabellenverknüpfungen.

Gruß
Doming
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Josef P. am Juni 20, 2025, 08:47:20
Hallo!

ZitatSchön wäre es noch, wenn er mir nicht nur die Formulare importiert, sondern auch die Tabellenverknüpfungen.
Zuerst dachte ich, du willst wiederverwendbare Formulare bzw. Codemodule exportieren.
Wenn du aber bestehende Tabellenverknüpfungen auch anlegen willst, könnte das auch eine Versionsverwaltung werden.

Als Anregung ein Beispiel, wie so ein Vorhaben mit dem ImportWizard aussehen würde:
https://github.com/AccessCodeLib/AccessCodeLib/blob/master/usability/OptionManagerSetup.bas
Auszug:
'<codelib>
'  <file>usability/OptionManagerSetup.bas</file>
'  <use>usability/OptionManager.cls</use>
'  <ref><name>VBIDE</name><major>5</major><minor>3</minor><guid>{0002E157-0000-0000-C000-000000000046}</guid></ref>
'  <execute>OptionManagerSetup_SetupTable()</execute>
'  <execute>OptionManagerSetup_CreateHelperModule()</execute>
'  <execute>OptionManagerSetup_RemoveSelf()</execute>
'</codelib>
Über die execute-Blöcke werden Prozeduren ausgeführt, die z. B. in diesem Fall eine Tabelle statt einer Verknüpfung erstellen.

Gruß
Josef



Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: Doming am Juni 20, 2025, 09:55:44
Hallo Josef,

Deinen Post habe ich als Anregung genommen noch etwas weiter zu recherchieren und habe meinem Code noch eine weitere Prozedur hinzugefügt
Private Function HolTabelle(Tabelle As String) As Boolean
On Error GoTo Fehler
 Dim QuellDb As String

    Select Case Tabelle
        Case "tblTabelle1", "tblTabelle2": QuellDb = "C:\Daten\BackEnd1.accdb"
        Case "tblTabelle3":                QuellDb = "C:\Daten\BackEnd2.accdb"
    End Select
   
    DoCmd.TransferDatabase acLink, "Microsoft Access", QuellDb, acTable, Tabelle, Tabelle
   
Fehler:
    HolTabelle = Err = 0
    If Err > 0 Then Debug.Print "Fehler HolTabelle: " & Tabelle, Err.Number, Err.Description
End Function

Die Funktion scheint gegeben, ich bin zufrieden

Gruß
 Doming
Titel: Re: Formular (keine Daten) als Datei speichern
Beitrag von: PhilS am Juni 20, 2025, 10:00:26
Zitat von: Doming am Juni 20, 2025, 08:05:03Sieht aus als würde es wie gewünscht laufen.
In deiner IstVorhanden-Prozedur könntest/solltest du noch auf den Typ des Objektes prüfen. Der Objektname allein ist nicht eindeutig.

Zitat von: Doming am Juni 20, 2025, 08:05:03Schön wäre es noch, wenn er mir nicht nur die Formulare importiert, sondern auch die Tabellenverknüpfungen.
Du kannst die knüpften Tabellen mittels DAO.Database.CreateTableDef erstellen. Die erforderlichen Informationen sollten in der MSysObjects-Tabelle vorhanden sein (siehe z.B. Connect, ForeignName).