Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Rigoletto am Februar 24, 2015, 14:54:47

Titel: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 24, 2015, 14:54:47
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?

Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag 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
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 24, 2015, 15:11:44
Hallo,

bist du sicher, dass "ufrmNavigation" der Name des Unterformular-Steuerelements im Navigationsformular ist?
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 24, 2015, 16:05:40
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
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 24, 2015, 16:12:55
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?
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 24, 2015, 16:22:51
@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.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 24, 2015, 16:39:56
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.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 24, 2015, 16:58:24
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.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 24, 2015, 17:01:52
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?
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 24, 2015, 17:13:28
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 ...
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 24, 2015, 17:29:58
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.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 24, 2015, 17:38:05
Danke erstmal, ich muß nun noch eine Besprechung für morgen vorbereiten. Die Datenbank werde ich dann morgen Mittag hochladen.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 11:44:36
Leider kann ich die DB nicht hochladen, weil die max. Größe für Dateianhänge auf 1000 KB begrenzt ist.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: DF6GL am Februar 26, 2015, 11:54:08
DB komprimieren/reparieren, dann zippen und hochladen....
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 26, 2015, 12:23:07
Hi,

am besten vorher auch noch alles rauswerfen, was für dieses Problem keine Rolle spielt.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 12:55:15
Das habe ich alles gemacht, ich bekomme die DB nicht kleiner als 1026 KB.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 26, 2015, 13:03:09
Auch gezippt nicht?!  ??? Und hast du auch allen Ballast rausgeworfen?

Gibt es Bilder in der DB, die sie nicht weiter schrumpfen lassen?
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 13:52:15
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.
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 13:55:55
Mist, jetzt darf der Anhang plötzlich nur noch 300KB groß sein. Das ist dann bei meiner DB unmöglich >:(
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 26, 2015, 14:14:42
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?
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 14:42:13
Die abgespeckte Version hat 2332 KB, was mache ich falsch?
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 26, 2015, 14:45:34
Ich vermute, du komprimierst nicht vor dem Zippen.
Das ist eine Access-Funktion im Ribbon "Datenbanktools".
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 15:02:59
Doch, ich habe es über Menue "Datei", "Komprimieren und reparieren" gemacht, was das gleiche Ergebnis hat wie über das Ribbon "Datenbanktools".
Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: MaggieMay am Februar 26, 2015, 15:45:04
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.


Titel: Re: Zugriff auf Elemente imNavigationsunterformular
Beitrag von: Rigoletto am Februar 26, 2015, 16:53:23
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.