Benutzer mit den meisten Antworten
Access 2010 schliesst Report ohne diesen zu speichern obwohl Report verändert wurde - VBA

Frage
-
Hi,
plage mich nun schon seit Tagen mit einem Problem im Access 2010 herum.
OS: Windows 7 x64 Pro, Office 2010 x64 Pro
Mein Script stellt die SeitenEigenschaften in einen Report ein, speichert und schliesst diesen. Anschliessend wird der Report zum Drucken wieder geöffnet.
Hintergrund: An Hand des zu vor ausgewählten Druckers sind die SeitenEigenschaften unterschiedlich an zu steuern.
Der Code:
-----------------------------------------------------
DoCmd.OpenReport "R_Adresszettel", acDesign
' , , , acHidden
Set LRpt = Reports("R_Adresszettel")
' --- Druckformat einstellen
With Reports("R_Adresszettel").PRINTER
.TopMargin = (DLookup("PrintOptionsTop", "Format", "ID=" & SEL_FORMAT) * 567) / 10
.BottomMargin = (DLookup("PrintOptionsBottom", "Format", "ID=" & SEL_FORMAT) * 567) / 10
.LeftMargin = (DLookup("PrintOptionsLeft", "Format", "ID=" & SEL_FORMAT) * 567) / 10
.RightMargin = (DLookup("PrintOptionsRight", "Format", "ID=" & SEL_FORMAT) * 567) / 10.RowSpacing = DLookup("GridRowSpacing", "Format", "ID=" & SEL_FORMAT) * 567
.ColumnSpacing = DLookup("GridColumnSpacing", "Format", "ID=" & SEL_FORMAT) * 567.ColorMode = acPRCMColor
.DataOnly = False
.DefaultSize = False
.ItemSizeHeight = DLookup("ColumnSizeHeight", "Format", "ID=" & SEL_FORMAT) * 567
.ItemSizeWidth = DLookup("ColumnSizeWidth", "Format", "ID=" & SEL_FORMAT) * 567
.ItemLayout = acPRVerticalColumnLayout
.ItemsAcross = DLookup("GridNumberofColumns", "Format", "ID=" & SEL_FORMAT)
.Copies = 1
.Orientation = DLookup("PageOrientation", "Format", "ID=" & SEL_FORMAT)
.Duplex = acPRDPVertical
.PaperBin = acPRBNAuto
.PaperSize = DLookup("PageSize", "Format", "ID=" & SEL_FORMAT)
.PrintQuality = acPRPQMedium
End WithOn Error GoTo AdresszettelDrucken_error
DoCmd.CLOSE acReport, "R_Adresszettel", acSaveYes
Set LRpt = Nothing--------------------------------------------------------------------
Erläuterung:
Die Eigenschaften werden aus einer Tabelle Namens "Format" ausgelesen.
Access schliesst den Report ohne Fehlermeldung und man könnte glauben der Report wurde auch gespeichert.
Aus irgend einem Grund glaubt Access beim schliessen des Report, dass dieser nicht verändert wurde und schliesst OHNE speichern.
Der Versuch das schliessen und speichern mit
DoCmd.SAVE ...... und anschliessend mit
DoCmd.CLOSE
führt beim SAVE zu einem Error: 29068 (nicht immer, aber immer öfter)Ich habe das auch manuel nach voll zogen. Habe einen Breakpoint an die Stelle von CLOSE/SAVE gesetzt. Da ich den Report ohne acHidden öffne, sehe ich den Report am Bildschirm, kontrolliere die Veränderunge (wurden korrekt angenommen) und schliesse manuell den Report. Access fragt nicht, ob gespeichert weden soll. D.h. Access glaubt es haben keine Veränderungen statt gefunden.
Leider ist es so, dass in einigen Fällen der Report sehr wohl gespeichert wird - Zufallsprinzip. Ich sage mal von 50 Versuchen 1x.
Meine Frage: Wie kann ich Access dazu zwingen den Report trotztdem zu speichern, auch wenn Access glaubt es habe sich nichts verändert.
Gibt es die Möglichkeit vor dem SAVE/CLOSE ein Report.acChanges.... auf true zu setzen ?
Habe schon einige Foren nach dieser Problematik durch forstet, leider ohne Erfolg.
Vielleicht hat einer von euch schon mal mit diesem Problem Erfahrung oder aber vielleicht eine Umgehungs-Idee des Problemes.
lg
Antworten
-
Hi,
habe vor erst eine Umgehungsmöglichkeit meines Problemes gefunden, indem ich vor dem
DoCmd.CLOSE acReport, "R_Adresszettel", acSaveYes
ein
Reports!R_Adresszettel!ZEILE01.Visible = Reports!R_Adresszettel!ZEILE01.Visible
setze.
Dies ist insofern unlogisch, da die Zelle ZEILE01 sich den Wert den Sie hat, selber setzt. Ist das eine Änderung ??? - Denke nicht.
Obwohl ich eigentlich keine Änderung vorgenommen habe, glaubt Access plötzlich ich hätte etwas verändert und speichert den Report brav ab.
Lasse diesen Thread aber noch offen, vielleicht hat jemand eine saubere (und nicht wie ich eine unlogische) Lösung für mich.
lg
Alle Antworten
-
Hi,
habe vor erst eine Umgehungsmöglichkeit meines Problemes gefunden, indem ich vor dem
DoCmd.CLOSE acReport, "R_Adresszettel", acSaveYes
ein
Reports!R_Adresszettel!ZEILE01.Visible = Reports!R_Adresszettel!ZEILE01.Visible
setze.
Dies ist insofern unlogisch, da die Zelle ZEILE01 sich den Wert den Sie hat, selber setzt. Ist das eine Änderung ??? - Denke nicht.
Obwohl ich eigentlich keine Änderung vorgenommen habe, glaubt Access plötzlich ich hätte etwas verändert und speichert den Report brav ab.
Lasse diesen Thread aber noch offen, vielleicht hat jemand eine saubere (und nicht wie ich eine unlogische) Lösung für mich.
lg