Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Mykis am August 05, 2013, 18:28:50

Titel: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: Mykis am August 05, 2013, 18:28:50
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
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: Mykis am August 06, 2013, 11:49:00
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
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: bahasu am August 06, 2013, 18:26:47
Hi,

probier mal die in http://support.microsoft.com/kb/508050/de beschriebene Methode.

Harald
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: Mykis am August 06, 2013, 22:49:44
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
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: bahasu am August 06, 2013, 22:59:05
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
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: Mykis am August 06, 2013, 23:29:46
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).
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: bahasu am August 06, 2013, 23:58:26
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
Titel: Re: DoCmd.TransferDatabase acExport ohne Überschreiben des vorhandenen Berichts?
Beitrag von: Mykis am August 07, 2013, 09:10:42
Hallo Harald,

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

Vielen Dank
Frank