Discussion:
Abfrage mit VBA ändern
(zu alt für eine Antwort)
Ulrike Weber
2004-09-17 10:02:22 UTC
Permalink
Hallo,
ich habe eine Abfrage erstellt ohne Kriterien also nur mit
den Tabellen und den VErknüpfungen. Der BEnutzer soll ein
Formular öffnen und die Felder was er gerade braucht
ausfüllen. In Abhängigkeit der ausgefüllten Felder soll
jetzt die Bedingung erstellt werden.

Also. Mein Suchformular (ist sozusagen meine Suchmaske)
enthält x Controls. Wenn der BEnutzer auf Suchen drückt,
soll in VBA die WHere-Komponente erstellet werden. Bis
dahin zwar schwierig, aber ich glaube, dass ich das
hinkriege. Meine Frage ist nun, wie ich die Where
Komponente in die Abfrage integrieren kann.

Wenn das erfolgt ist, also meine bestehende Abfrage
geändert ist, soll ein Formular geöffnet werden, dass als
RecordSource diese Abfrage erhält. (auch das kriege ich
hin).

Ich hoffe, dass ich jemandem mein Problem habe vertändlich
machen können. Für jede HIlfe bin ich nach wie vor dankbar.

MfG Ulrike
Juergen Frieling
2004-09-17 10:20:54 UTC
Permalink
Hi,
Post by Ulrike Weber
hinkriege. Meine Frage ist nun, wie ich die Where
Komponente in die Abfrage integrieren kann.
Wenn das erfolgt ist, also meine bestehende Abfrage
geändert ist, soll ein Formular geöffnet werden, dass als
RecordSource diese Abfrage erhält. (auch das kriege ich
Du könntest einfach die Abfrage ändern, z.B.

set qdf=Currentdb.Querydefs("qryFuersForm")
qdf.SQL=qdf.SQL & " WHERE " & strKriterien

Das Abschneiden eines schon vorhandenen "WHERE.." überlasse ich Dir als
Übung :-)

Noch einfacher ist aber IMHO, die Kriterien dem Formular als OpenArgs zu
übergeben und dann im Form_Open-Ereignis in die Filter-Eigenschaft zu
schreiben. Da weiss ich jetzt aber nicht, ob das evtl. langsamer ist als
obiges.

Gruss,
Juergen
Philipp Stiefel
2004-09-17 10:40:11 UTC
Permalink
Post by Ulrike Weber
ich habe eine Abfrage erstellt ohne Kriterien also nur mit
den Tabellen und den VErknüpfungen. Der BEnutzer soll ein
Formular öffnen und die Felder was er gerade braucht
ausfüllen. In Abhängigkeit der ausgefüllten Felder soll
jetzt die Bedingung erstellt werden.
Also. Mein Suchformular (ist sozusagen meine Suchmaske)
enthält x Controls. Wenn der BEnutzer auf Suchen drückt,
soll in VBA die WHere-Komponente erstellet werden. Bis
dahin zwar schwierig, aber ich glaube, dass ich das
hinkriege. Meine Frage ist nun, wie ich die Where
Komponente in die Abfrage integrieren kann.
Wenn das erfolgt ist, also meine bestehende Abfrage
geändert ist, soll ein Formular geöffnet werden, dass als
RecordSource diese Abfrage erhält. (auch das kriege ich
hin).
Dann hast du es ja eigentlich schon geschafft. ;-)

Ich würde die Where-Condition gar nicht direkt in die
Abfrage einbauen, sondern die Where-Condition stattdessen
in die Recordsource deines Formulars einbauen. Das ist IMO
einfacher und flexibler.

Also etwa so:

Forms("deinForm").Recordsource = "SELECT * FROM deineAbfrage " & _
" WHERE " & strDeineWhereCond

Gruß
Phil
--
Bitte verwendet für Fragen zu Access mit DBMS-Server-Backends
die Newsgroup microsoft.public.de.access.clientserver! Danke!

Richtig zitieren im Usenet -> http://got.to/quote
Maik Hahmann
2004-09-17 11:00:02 UTC
Permalink
Hallo Ulrike

bastle dir doch den String anhand der Eingaben zusammen.

Dim sqlStr as string
If Not IsNull(Feld1) Then
sqlStr = "WHERE ...Bedingung einfügen"
End If
If Not IsNull(Feld2) Then
If IsNull(sqlStr) Then
sqlStr = "WHERE ...Bedingung einfügen"
Else
sqlStr = sqlStr & " AND ... nächste Bedingung"
End If
End If

und so weiter für alle Felder.
Am Ende Gesamtstring zusammenbauen
sqlStr = "Select ... FROM ... " & sqlStr

und dem neuen Formular als Source zuweisen.

Ich hoffe, das war einigermassen verständlich.
Gruß Maik

Loading...