PDA

Vollständige Version anzeigen : Formularaufruf mit neuer Datenherkunft


ChristophP
24.09.2003, 10:47
Hallo Forum,
folgendes Problem: Ich möchte von einem Formular aus ein anderes Formular per Klick öffnen. Dieses andere Formular hat eine eingestellte Datenherkunft, die sich aber mit dem Klick in eine übergebene SQL-Abfrage ändern soll.
Habe dafür eine Schaltfläche gebaut mit folgendem Code:

Dim sql As String

DoCmd.OpenForm "frmFormular2"
sql = "SELECT tblXY.* FROM tblXY WHERE
(((tblXY.txtABC)='diesunddas'));"
Me.RecordSource = sql

Leider wird aber immer nur frmFormular2 geöffnet mit seiner alten RecordSource, die SQL-Anweisung interessiert nicht. Wo liegt der Fehler? Danke für die Hilfe.
Grüße von
Christoph

Arne Dieckmann
24.09.2003, 10:50
Wenn sich die Datenherkunft nur durch das Kriterium unterscheidet, dann versuche mal:

DoCmd.OpenForm "frmFormular2",,,"[txtABC]='diesunddas'"

ChristophP
24.09.2003, 11:46
Aha, ja das funktioniert. Ist ja eigentlich auch einfacher. Herzlichen Dank.
Aber trotzdem nochmal die Frage: Haut die Änderung der RecordSource dann in so einem Fall grundsätzlich nicht hin oder wenn doch, dann wie?

Arne Dieckmann
24.09.2003, 11:51
Prinzipiell geht es schon. Wenn Du Deinen Code anschaust, dann wird durch
Me.RecordSource=sql
die Datenherkunft des aufrufenden Formulares geändert.

Du könntest die sql-Anweisung evtl. auch als Filter übergeben - s. dazu die VBA-Onlinehilfe zu DoCmd.OpenForm.

Interessant ist auch der letzte Parameter "Öffnungsargumente", den man dann im aufgerufenen Formular im Formularereignis "Beim Öffnen" auswerten könnte ...

ChristophP
24.09.2003, 14:39
Werde mich in der Richtung schlau machen, vielen Dank nochmal.

ChristophP
25.09.2003, 09:31
Pardon, jetzt muss ich doch noch mal nachfragen:
Solange man die Suchkriterien direkt in VBA eingibt, klappt es wunderbar. Wenn ich aber eine Variable als Suchkriterium an das "frmFormular2"
anhängen will, etwa in der Form:

DoCmd.OpenForm "frmFormular2" + ",,," + sql

kriege ich die zwei Anführungszeichen in der Mitte nicht hin. Wenn ich sie durch Hochkammata ersetze, wird die Anweisung trotzdem falsch zusammengesetzt:

DoCmd.OpenForm "'frmFormular2'" + ",,,'" + sql + "'"

Wie müsste mans richtig schreiben? Danke für einen Tipp.

Arne Dieckmann
25.09.2003, 09:38
Für die Übergabe einer Variable würde ich die Öffnungsargumente verwenden, die man dann im aufgerufenen Formular mit Me.OpenArgs auswerten könnte:

DoCmd.OpenForm "frmFormular2", , , , , , sql

ChristophP
25.09.2003, 11:06
Hm, wenn ichs richtig verstehe steckt OpenArgs schon in diesem OpenForm mit drin, oder? So jedenfalls funktioniert es nicht. Und wenn ich im zu öffnenden Formular die Varable auswerten soll, woher kennt das Formular die denn? Me.OpenArgs bezieht sich ja meines Erachtens wieder auf das Aufgangsformular?

Arne Dieckmann
25.09.2003, 11:16
OpenArgs ("Öffnungsargumente) ist der letzte Parameter in der OpenForm-Anweisung (bitte schaue Dir noch einmal die Syntax in der VBA-Onlinehilfe an). Me.OpenArgs bezieht sich innerhalb des aufgerufenen Formulares auf eben das aufgerufene Formular, wenn Du diese in dem Modul in dem aufgerufenen Formular auswertest ... .