Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?

Begonnen von Mykis, August 05, 2013, 18:28:50

⏪ vorheriges - nächstes ⏩

Mykis

Hallo,

mit folgender Zeile füge ich einer Unterdatenbank einen Bericht hinzu.

DoCmd.TransferDatabase acExport, "Microsoft Access", Gruppenverzeichnis & "AUFNAHME.MDB", acReport, "Herbar_Etiketten", "Herbar_Etiketten", False

Wenn der Bericht "Herbar_Etiketten" schon vorhanden ist, soll dieser aber nicht überschrieben werden. Welcher Zusatzbefehl fehlt mir hier noch?

Vielen Dank im voraus
Frank

Mykis

Ich habe es mal über die ObjectExist Funktion versucht, das gilt aber anscheinend nur für Tabellen, Abfragen, Felder, etc.  
Folgender Code für Berichte funktioniert nicht.

Function Report_Exists(MyDatabase As Database, ObjectName As String) As Boolean
Dim i As Integer
Report_Exists = False
MyDatabase.ReportDefs.Refresh
For i = 0 To MyDatabase.ReportDefs.Count - 1
 If MyDatabase.ReportDefs(i).name = ObjectName Then
    Report_Exists = True
    Exit Function  ' Beende die Funktion, sobald  gefunden wurde.
 End If
Next

End Function


LG
Frank

bahasu

Servus

Mykis

Hi Harald,

danke für deine erste Hilfe. Bei dieser Methode meldet mir das Programm, dass der Bericht vorhanden ist. OK. Aber wie kann ich diese MsgBox auswerten?

If not CheckReport = True Then DoCmd.TransferDatabase acExport....

funktioniert ja nicht (Argument nicht optional).

Frank

bahasu

Hi,

die dort verwendete Funktion "Function CheckReport(db As Database, strReportName As String) As Boolean" ist als boolean deklariert und wird auf true gesetzt, wenn der übergebene Bericht gefunden wurde.

Aufruf in der Art:
if not CheckReport("D:\DeinOrdner\DeineDatei.mdb", "DeinBericht") then DoCmd....

Harald
Servus

Mykis

Mein Code sieht jetzt so aus:

Set db = DBEngine.Workspaces(0).OpenDatabase(Gruppenverzeichnis & "AUFNAHME.MDB")
   MsgBox CheckReport(db, "Herbar_Etiketten")
     
If Not CheckReport(Gruppenverzeichnis & "AUFNAHME.MDB", "Herbar_Etiketten") Then
           
         
   DoCmd.TransferDatabase acExport, "Microsoft Access", Gruppenverzeichnis & "AUFNAHME.MDB", acReport, "Herbar_Etiketten", "Herbar_Etiketten", False
 
   db.Close

       
   End If


Er meckert aber in der Pfadangabe das "&" an (Typen unverträglich).

bahasu

Hi


Set db = DBEngine.Workspaces(0).OpenDatabase(Gruppenverzeichnis & "AUFNAHME.MDB")
     
If Not CheckReport(db, "Herbar_Etiketten") Then         
    DoCmd.TransferDatabase acExport, "Microsoft Access", Gruppenverzeichnis & "AUFNAHME.MDB", acReport, "Herbar_Etiketten", "Herbar_Etiketten", False
End If

db.Close


Die Zeile mit msgbox brauchst Du nicht.

Harald
Servus

Mykis

Hallo Harald,

es sind doch oft die einfachen Dinge über die man stolpert. Es funktioniert!

Vielen Dank
Frank