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
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
Hi,
probier mal die in http://support.microsoft.com/kb/508050/de beschriebene Methode.
Harald
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
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
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).
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
Hallo Harald,
es sind doch oft die einfachen Dinge über die man stolpert. Es funktioniert!
Vielen Dank
Frank