none
Access 2010 schliesst Report ohne diesen zu speichern obwohl Report verändert wurde - VBA RRS feed

  • 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 With

    On 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

    Freitag, 2. September 2011 06:44

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


    • Bearbeitet petkla Freitag, 2. September 2011 10:02
    • Als Antwort markiert petkla Dienstag, 6. September 2011 07:07
    Freitag, 2. September 2011 09:56

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


    • Bearbeitet petkla Freitag, 2. September 2011 10:02
    • Als Antwort markiert petkla Dienstag, 6. September 2011 07:07
    Freitag, 2. September 2011 09:56
  • HI,

     

    meine Umgeheungsmöglichkeit schein die einzige Möglichkeit zu sein, Access dazu zu bewegen einen Report IMMER ab zu speichern.

    Schliesse den Thread damit.

    meci

    Dienstag, 6. September 2011 07:07