Parameterübergabe - Von VBA an SQL-Abfrage

kampfzwergal

Grünschnabel
Hallo Leute,

ich habe folgendes Problem:
Ich will aus einem VBA-Modul in Access eine Abfrage starten. Dieser Abfrage will ich 2 Parameter übergeben. 1 Parameter steht für den Namen des Attributes der Quelltabelle (P_ATTRIBUTE1) und 1 Parameter steht für den Wert dieses Attributes (P_VALUE1). Schwierigkeiten habe ich bei der Übergabe des Parameters, welcher den Namen des Attributes beinhaltet. Hier mein Code:

Die Abfrage sieht momentan wie folgt aus:

INSERT INTO Zieltabelle
SELECT *
FROM Quelltabelle
WHERE [P_ATTRIBUTE1]=[P_VALUE1];

P_ATTRIBUTE1 und P_VALUE1 stellen Parameter dar, die ich beim Aufruf der Abfrage aus meinem VBA-Makro übergeben will.

Der Aufruf aus VBA sieht momentan wie folgt aus:

Dim dbs As Database
Dim qdf1, qdf2 As QueryDef
....

Set qdf2 = dbs.QueryDefs("Suche_DS_Nach_Regel_2") ' Name der SQL-Abfrage

' Parameter setzen
qdf2.Parameters!P_ATTRIBUTE1 = "POF"
qdf2.Parameters!P_VALUE1 = "91"
qdf2.Execute

Wenn ich das VB-Makro ausführe, gibt es keine Fehlermeldung. Leider bleibt auch meine Zieltabelle leer, obwohl es zutreffende Datensätze in der Quelltabelle gibt.

Das Problem liegt meiner Meinung nach an dem Parameter für das Attribut der Tabelle, nämlich P_ATTRIBUTE1. Gebe ich den Namen des Attributes (POF) direkt in der SQL-Anfrage an

INSERT INTO Zieltabelle
SELECT *
FROM Quelltabelle
WHERE POF=[P_VALUE1];

und rufe die Abfrage dann nur mit


....
Set qdf2 = dbs.QueryDefs("Suche_DS_Nach_Regel_2") ' Name der SQL-Abfrage

' Parameter setzen
qdf2.Parameters!P_VALUE1 = "91"
qdf2.Execute

auf, so funktioniert alles.

Es wäre super, wenn mir jemand sagen könnte, woran es hakt. Im Internet finde ich leider keine entsprechenden Infos dazu.

Vielen vielen Dank schon mal im Voraus!

Grüße!
 
Hallo, versuch´s mal so:
Code:
INSERT INTO Zieltabelle
SELECT *
FROM Quelltabelle
WHERE POF = '" & P_VALUE1 & "'" ;
 
Hallo wincnc,

vielen Dank für deine Antwort! Ich glaube, ich habe in meinem ellenlangen Text mein Problem nicht richtig erklärt. Ich möchte im WHERE-Teil der Abfrage mich nicht auf das Attribut POF festlegen, sondern dafür einen Platzhalter einfügen. D.h. ich möchte dieselbe Abfrage für unterschiedliche Attribute und unterschiedliche Werte (der Attribute) verwenden.

Beispiel:

Beim 1. Aufruf der Abfrage möchte ich ... WHERE POF=[P_VALUE1] abfragen.

Beim 2. Aufruf dann z. B. ... WHERE Name=[P_VALUE1]

Beim 3. Aufruf dann z. B. ... WHERE Alter=[P_VALUE1]

POF, Name, Alter möchte ich also ersetzen durch einen Platzhalter, genauso wie ich es schon für [P_VALUE1] gemacht habe.

Hatte mir vorgestellt das ginge mit ... WHERE [P_ATTRIBUTE1]=[P_VALUE1], aber das geht nicht.

Ich hoffe, jetzt ist es verständlicher erklärt :)

Grüße und Danke schon mal,

Claudia
 
dann musst du in wincncs post nur
hier
Code:
WHERE POF = '" & P_VALUE1 & "'"

eine zweite variable einfügen :

Code:
WHERE " & vAttribute1 & "= '" & P_VALUE1 & "'"

Grüsse bb
 
Hallo brainbyte,

vielen vielen Dank für deine Antwort! Jetzt funktioniert's! Sorry, dass ich mir so lange Zeit gelassen habe, hatte Stress mit anderen Aufgaben in der Arbeit.

wincnc - dir auch noch mal herzlichen Dank!

Viele Grüße!

Claudia
 

Neue Beiträge

Zurück