Hallo zusammen,
ich habe in AC 2010 ein Navigationsformular [frmStartNavi] mit verschiedenen Navigationsunterformularen [ufrmNavigation] erstellt. In einem Unterformular befindet sich das Formular [frmReErfassen], in dem neue Datensätze erfasst werden. Anschließend soll für den neuen Datensatz ein Laufzettel geöffnet werden. Dazu habe ich eine Abfrage erstellt, die Datenquelle für den Bericht [rptLaufzettel] ist.
Es soll also über einen Button im Formular [frmReErfassen] ein Bericht geöffnet werden, der nur bestimmte Daten zu dem gerade erfassten (oder aufgerufenen) Datensatz enthält.
Ich habe zwei Filtermethoden probiert, die beide nicht funktionieren:
in der Kriterienzeile der Abfrage habe ich über den Ausdrucksgenerator über die geladenen formulareden Filter gesetzt:
Formulare![frmStartNavi]![ufrmNavigation].Formular![ID_Rechnung]
Beim Ausführen erhalte ich ein Parameter-Eingabefeld für den oben genannten Ausdruck. Der Wert für die REB-Nr. (AutoWert) soll aber aus dem Eingabeformular kommen.
Also Ausdruck wieder gelöscht und neuer Versuch per Berichtsfilter.
Folgenden Code habe ich bei der "Beim Klicken"-Eigenschaft des Buttons eingegeben:
DoCmd.OpenReport "rptLaufzettel", acViewPreview, , "REB_Nr=" & _
Forms!frmStartNavi!ufrmNavigation.Form!ID_Rechnung
hier erhalte ich folgende Fehlermeldung:
Laufzeitfehler '40036':
Die Methode 'Item' für das Objekt 'Forms' ist fehlgeschlagen
Was mache ich falsch?
Hallo,
das Erfassungs-Form hat in diesem Zusammenhang gar nichts mit dem Navigations-Form zu tun.
Mit einer Schaltfläche ("btnLaufzDrucken") im Erfassungs-Form:
Sub btnLaufzDrucken_Click()
DoCmd.OpenReport "rptLaufzettel", acViewPreview, , "REB_Nr=" & Me!ID_Rechnung
End Sub
Hallo,
bist du sicher, dass "ufrmNavigation" der Name des Unterformular-Steuerelements im Navigationsformular ist?
Zitat von: DF6GL am Februar 24, 2015, 15:09:20
Hallo,
das Erfassungs-Form hat in diesem Zusammenhang gar nichts mit dem Navigations-Form zu tun.
Mit einer Schaltfläche ("btnLaufzDrucken") im Erfassungs-Form:
Sub btnLaufzDrucken_Click()
DoCmd.OpenReport "rptLaufzettel", acViewPreview, , "REB_Nr=" & Me!ID_Rechnung
End Sub
Danke, ja so funktioniert es. Allerdings habe ich mich in meier Situationsbeschreibung ungenau ausgedrückt, weil ich der Meinung war, dass se unbedeutend ist, sorry.
Im Button [cmdLaufzettel] öffne ich ein Formular, in dem ich Textbausteine auswähle, die zu den Daten aus dem Formular [frmReErfaassen] in einem Unterbricht in den Laufzettel eingebaut werden. In diesem Formular öffne ich dann den Laufzettel für den Datensatz aus [frmReErfaassen]. "Me." aus deinem Vorschlag habe ich durch "frmReErfaassen" ersetzt:
Private Sub btnLZOeffnen_Click()
DoCmd.OpenReport "rptLaufzettel", acViewPreview, , "REB_Nr=" & _
frmlReErfassen!ID_Rechnung
End Sub
Jetzt kommt wieder ein Laufzeitfehler:
Laufzeitfehler '424':
Objekt erforderlich
Hi,
du solltest ja auch Me!ID_Rechnung schreiben.
Aber wenn der Bericht aus einem anderen Formular als "frmReErfassen" geöffnet wird, brauchst du natürlich den vollen Zugriffspfad.
Wie lautet denn deine Antwort auf meine oben gestellte Frage nach dem Steuerelementnamen?
@MaggieMay
deshalb habe ich das Me durch den Formularnamen ersetzt.
[uformNavigation] ist der Name von dem Rahmen, in dem das Formular [frmReErfassen] enthalten ist. Der Ausdrucksgenerator setzt diesen Namen ein.
Dem Ausdrucksgenerator würde ich nicht trauen, damit kannst du alles mögliche zusammenklicken.
Aber der Rahmen sollte schon das Ufo-Steuerelement sein und wenn der so heißt wie du sagst, hast du ihn wohl umbenannt, denn standardmäßig erstellt Access ein Ufo namens "Navigationsunterformular".
Wenn die Bezeichnungen alle korrekt sind, sollte dies funktionieren:
Forms!frmStartNavi!ufrmNavigation.Form!ID_Rechnung
Überprüfe das noch einmal ganz genau, denn du hast dich hier im Text auch schon mehrfach verschrieben.
Richtig, ich habe den Standardnamen des Ufo von "Navigationsunterformular" in "ufrmNavigation" umbenannt.
Ich habe auch die Schreibweise mehrfach überprüft, trotzdem bleibt es bei dem erstgenannten Laufzeitfehler.
Zitatich habe den Standardnamen des Ufo von "Navigationsunterformular" in "ufrmNavigation" umbenannt.
Hast du tatsächlich beides umbenannt, das Unterformular und das Unterformular-Steuerelement?
Der Unterschied ist dir bewusst?
Ich habe nur ein mal den Namen "Navigationsunterformular" umbenannt (Eigenschaftenblatt, Auswahhltyp: Unterformular/-bericht, Auswahl "ufrmNavigation", Register Andere, Name). Ich weiß, was ein Steuerelement ist, ob ich hier aber richtig getroffen habe, ist mir nicht bewußt. Für mich ist das Navigationsformular neu, ich habe bisher nur mit AC 97 gearbeitet und das ist schon etwas her ...
Ich habe keine andere Erklärung als dass eine der Bezeichnungen falsch ist, naheliegenderweise das nachträglich umbenannte Navigationsunterformular.
Aber wenn du das Unterformular-Steuerelement und nicht das Unterformular selbst umbenannt hast, weiß ich auch nicht mehr weiter.
Dann kannst du höchstens noch die DB hochladen, damit man sich das mit eigenen Augen ansehen kann.
Danke erstmal, ich muß nun noch eine Besprechung für morgen vorbereiten. Die Datenbank werde ich dann morgen Mittag hochladen.
Leider kann ich die DB nicht hochladen, weil die max. Größe für Dateianhänge auf 1000 KB begrenzt ist.
DB komprimieren/reparieren, dann zippen und hochladen....
Hi,
am besten vorher auch noch alles rauswerfen, was für dieses Problem keine Rolle spielt.
Das habe ich alles gemacht, ich bekomme die DB nicht kleiner als 1026 KB.
Auch gezippt nicht?! ??? Und hast du auch allen Ballast rausgeworfen?
Gibt es Bilder in der DB, die sie nicht weiter schrumpfen lassen?
Das hatte ich auch alles schon gemacht. Ich habe nun noch mehr rausgeschmissen, dafür bitte ggf. die Fehlermeldungen beim Start von frmStartNavi und nach nicht vorhandenen Querys ignorieren, ggf. können dann im Laufzettel Angaben nicht gefüllt werden.
Unter dem Navigationsbutton "neue RE" ist die Schaltfläche für den Laufzettel zu finden. Vorher muss eine REB-Nr. ausgewählt werden (2, 3, 12, 13, oder 14). In dem sich dann öffnenden Fenster tritt der Fehler auf, wenn man auf die Schaltfläche "zum Laufzettel" klickt.
In der dazugehörigen Abfrage [qryLaufzettel] habe ich ebenfalls den nicht funktionierenden Ausdruck in der Kriterienzeile eingetragen. Ich weiß, dass der Filter nur an einer der beiden Stellen gesetzt werden muss. Der Fehler beim Klick der Schaltfläche tritt aber unabhängig davon auf, ob der Ausdruck in der Abfrage gesetzt ist oder nicht.
Mist, jetzt darf der Anhang plötzlich nur noch 300KB groß sein. Das ist dann bei meiner DB unmöglich >:(
Ein Zip-File mit einer Größe von 300KB ist schon recht heftig für eine simple Beispiel-DB.
Was machst du da nur? Wie groß ist denn die Beispiel-DB ungezippt?
Die abgespeckte Version hat 2332 KB, was mache ich falsch?
Ich vermute, du komprimierst nicht vor dem Zippen.
Das ist eine Access-Funktion im Ribbon "Datenbanktools".
Doch, ich habe es über Menue "Datei", "Komprimieren und reparieren" gemacht, was das gleiche Ergebnis hat wie über das Ribbon "Datenbanktools".
Ich verstehe es auch nicht, warum die DB nicht kleiner werden will. Habe dann mal alle Objekte in eine neue DB importiert, danach war sie etwa um die Hälfte geschrumpft und ließ sich auf < 100 KB komprimieren.
Nachdem ich dann die DB kompiliert und den Fehler in frmStartNavi beseitigt hatte, klappte es auch mit dem Öffnen des Berichts. Das Kompilieren des Codes vor dem Testen sollte also nicht vernachlässigt werden.
Außerdem:
Setze stets Option Explicit in den VBA-Modulen ein und setze den Haken bei der VBA-Option "Variablendeklaration erforderlich".
BTW:
Du filterst bereits in der zugrunde liegenden Abfrage, dann brauchst du es beim Öffnen nicht mehr zu tun. Entscheide dich für eins von beidem.
Ja, jetzt funktioniert es genau so, wie ich es mir vorgestellt hatte.
Das kommt davon, wenn man etwas Anderes ausprobiert und dann den nicht mehr benötigten Code nicht sofort herauslöscht. Deinen Tip mit dem Kompilieren habe ich natürlich bisher auch sträflich vernachlässigt, sonst hätte ich auch von selber drauf kommen können.
Das ich den Filter nur einmal brauche, war mir klar, das hatte ich ja auch weiter oben schon geschrieben. Ich hatte den Filter in der Abfrage stehen gelassen, damit man den Fehler nachvollziehen kann.
Jetzt werde ich die Objekte meiner Original-DB auch mal in eine neue DB importieren und hoffen, dass sie dann kleiner wird.
Herzlichen Dank für die Hilfe besonders an dich, aber auch an @DF6GL.