Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: henfoni am April 12, 2012, 16:41:07

Titel: Abfragen mit Parametern ausführen
Beitrag von: henfoni am April 12, 2012, 16:41:07
Moin,
ich habe folgendes Problem. Ich habe 5 Abfragen, die allesamt die gleichen 3 Parameter benötigen.
Ich möchte diese nun mit einem Formualar starten. Das Formular ist ganz simpel, 3 Textfelder (um die Parameter einzutragen) und 1 Ausführ-Button.
Ich hab versucht, die Abfragen nach Buttonklick mit dem Makro-Generator zu starten. Ohne Parameter klappt das alles natürlich kinderleicht, nur mit Parametern klappts irgendwie nicht!
Kann jmd helfen?
Titel: Re: Abfragen mit Parametern ausführen
Beitrag von: Stapi am April 12, 2012, 17:18:14
Hallo henfoni

Hier wurde ein fast gleiches Problem wie du angefragt hast schon gelöst.

http://www.access-o-mania.de/forum/index.php?topic=15642.msg90279#msg90279

schau mal
Titel: Re: Abfragen mit Parametern ausführen
Beitrag von: Beaker s.a. am April 12, 2012, 21:54:26
Hallo Stefan,
Alternativ kannst Du auch mal hier nachlesen:
http://www.donkarl.com?FAQ6.16 (http://www.donkarl.com?FAQ6.16)
hth
gruss ekkehard
Titel: Re: Abfragen mit Parametern ausführen
Beitrag von: henfoni am April 13, 2012, 09:21:19
Hey,
dank euch für die schnellen Antworten. Das Öffnen der Abfragen habe ich gestern auch noch ergoogelt ^^ Habs genau wie du es beschrieben hast gemacht: einfach die gewünschten Felder mit [Formulare]![Formular1]![txtName] belegt. Das klappt jetzt auch alles wunderbar.

Nun bin ich aber bei einem anderen Problem, ich versuch gerade zwei Dinge:
1. eine PassThrough-Abfrage mit VBA-Code erstellen
2. die Ergebnisse der PassThrough-Abfrage ggf. auf dem Formular wiedergeben.

Ich bin in Sachen VBA blutiger Anfänger. Ich habe versucht erstmal eine ganz einfache PassThrough-Abfrage zum SQL-Server via ODBC zu erstellen:

Private Sub btnSuchen_Click()
Dim db As DAO.Database
Dim qdExtData As QueryDef
Dim strSQL As String

Set db = CurrentDb
strSQL = "SELECT * FROM M_VERFAHREN"
Set qdExtData = db.CreateQueryDef("")
qdExtData.Connect = "ODBC;DSN=test-ODBC-KOPF;database=test;UID=test;PWD=test;"
qdExtData.SQL = strSQL
qdExtData.Execute

qdExtData.Close
db.Close
Set db = Nothing
End Sub

Wenn ich eine PassThrough-Abfrage über access mit dem obigen ODBC-String erstelle, klappt alles. Nur leider bekomme ich hier folgende Fehlermeldung: Fehler 3065 Eine Auswahlabfrage kann nicht ausgeführt werden.
Eine andere Frage: man kann Querys ja auch mit Namen erstellen, die dann gespeichert werden: db.CreateQueryDef("test")
Wo wird diese test-Query dann genau gespeichert!? In der currentdb, also der access-Datei/Projekt?

So, das wars erstmal ;) Ich würd mich über Hilfe sehr freuen!

Viele Grüße
Titel: Re: Abfragen mit Parametern ausführen
Beitrag von: Beaker s.a. am April 13, 2012, 21:27:06
Hallo henfoni,
ZitatNur leider bekomme ich hier folgende Fehlermeldung: Fehler 3065 Eine Auswahlabfrage kann nicht ausgeführt werden.
Nimm die Zeile
qdExtData.Execute
aus dem Code.
Wenn Du mit der Abfrage arbeiten willst öffne einen Recordset darauf.
.Execute funzt nur mit Aktionsabfragen (UDDATE, INSERT, DELETE),
will sagen, nur solche Abfragen können ausgeführt werden (execute).
gruss ekkehard
Titel: Re: Abfragen mit Parametern ausführen
Beitrag von: henfoni am April 16, 2012, 08:20:28
Moin, ah danke für den Tipp. Habs nu mitm Recordset versucht:

Set rs = qdExtData.OpenRecordset

Nun kriege ich die Fehldermeldung, dass der ODBC-Aufruf fehlschlägt. Aber ich hab den ODBC-String ja aus einer PassThrough-Abfrage kopiert, in der alles funktioniert. Komisch!