Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Query Aufruf mit Parameterübergabe

Begonnen von cyberchris, Juni 16, 2011, 07:19:51

⏪ vorheriges - nächstes ⏩

cyberchris

Hallo,

ich habe mir eine Abfrage gebastelt und möchte diese per VBA aufrufen und dabei ein Parameter übergeben.
Mein Entwurf sieht wie folgt aus: (Den Parameter habe ich mal hart definiert, soll aber später aus einem Textfeld kommen)
=> In der Abfrage gibt es eine Spalte mit dem Namen "IDoWAG"

Private Sub Befehl0_Click()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

Set db = CurrentDB
Set qdf = db.QueryDefs("PMDB-ErweiterungA")
qdf.Parameters!IDoWAG = "00100010"

qdf.Execute
qdf.Close: Set qdf = Nothing
Set db = Nothing
End Sub


Abfrage im SQL-Format:
SELECT [PMDB-Erweiterung].Serial, [PMDB-Erweiterung].Feld1, [PMDB-Erweiterung].Feld2, [PMDB-Erweiterung].Feld3, [PMDB-Erweiterung].IDoWAG
FROM [PMDB-Erweiterung]
ORDER BY [PMDB-Erweiterung].Serial, [PMDB-Erweiterung].Feld1;


Beim Aufruf kommt diese Fehlermeldung. Wisst ihr, was hier falsch ist?
=> Fehlermeldung: Laufzeitfehler: 3265 "Element in dieser Auflistung nicht gefunden"

Vielen DANK!
Gruß Christoph

Jonny

Hallo Christoph,

auf den ersten Blick kann man nicht erkennen welches Feld fehlt.

Sind wirklich alle Felder so benannt? Vor allem Feld1, Feld2 kommen mir komisch vor.
So benennt man ja keine Felder.

Gruß

Johann

DF6GL

Hallo,


die Abfrage sollte (bei dieser Konstellation) in etwa so aussehen:

Parameters IDoWAG Text (255);
SELECT [PMDB-Erweiterung].Serial, [PMDB-Erweiterung].Feld1, [PMDB-Erweiterung].Feld2, [PMDB-Erweiterung].Feld3, [PMDB-Erweiterung].IDoWAG
FROM [PMDB-Erweiterung]
ORDER BY [PMDB-Erweiterung].Serial, [PMDB-Erweiterung].Feld1;




wobei die Verwendung von Execute (gilt für Aktions- und nicht für Auswahlabfragen) nicht sinnvoll ist.


Insgesamt stellt sich die Frage, für was das Ganze überhaupt gut ist, bzw. verwendet werden soll.


cyberchris

Hallo,

ich habe die Felder nun umbenannt.

Leider funktioniert das noch immer nicht.
Wenn ich die Abfrage aufrufe, funktioniert es: Es Kommt eine Abfrage der "IDoWAG"; anschließend das Ergebnis.

Wenn ich dies aber über eine Eregnisprozedur eines Formulars aufrufen möchte kommt die Meldung: "Eine Auswahlabfrage kann nicht ausgeführt werden"

Abfrage:
PARAMETERS IDoWAG Text ( 255 );
SELECT [PMDB-Erweiterung].ID, [PMDB-Erweiterung].[Serien-Nr], [PMDB-Erweiterung].[Prüfmittel-Nr], [PMDB-Erweiterung].IdentNr, [PMDB-Erweiterung].Nennmaß, [PMDB-Erweiterung].Genauigkeitsgrad, [PMDB-Erweiterung].Bemerkung
FROM [PMDB-Erweiterung]
ORDER BY [PMDB-Erweiterung].ID, [PMDB-Erweiterung].[Serien-Nr];

Eregnisprozedur:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

Set db = CurrentDB
Set qdf = db.QueryDefs("PMDB-ErweiterungA")
qdf.Parameters!IDoWAG = "00100010"

qdf.Execute
qdf.Close: Set qdf = Nothing
Set db = Nothing



gruß Christoph

DF6GL

Hallo,

Du hast die beiden letzten Sätze in meinem letzten Post nicht gelesen....

cyberchris

Hallo,

habe ich gelesen.

zu 1. Habe keine andere Lösung
zu 2. Ich kann versuchen es zu erklären, jedoch kompliziert:
Ich habe Werkzeuge, die in einer Tabelle gelistet sind. Zu manchen Werkzeugen gibt es Einzelteile, die ich auch auflisten (in einer weiteren Tabelle) möchte. Und ich möchte mit dieser Abfrage darauf zugreifen können. Ich benötige hierfür kein Formular.

Gruß Christoph

DF6GL

Hallo,


1:   die Lösung kann ich Dir sagen:  benutz anstelle "Execute" "Openrecordset"  und weise dieses Recordset einem Listenfeld oder Unterform zu:

Set Me!lstListenfeld1.Recordset = qdf.OpenRecordset
oder
Set Me!Ufo_Steuerelementname.Form.Recordset = qdf.OpenRecordset



2:  Da ist nichts kompliziert. Vermutlich machst Du es Dir halt nur..  "Ich benötige hierfür kein Formular" ist nicht empfehlenswert.  Abfragen nur in Abfrageansicht (für den User-Betrieb) zu präsentieren, ist nicht angebracht. Die Daten sollten besser in einem Listenfeld  oder in diesem Fall noch besser mit einem Unterform (Verwenden der Eigenschaften "Verknüpfen von/nach")  angezeigt werden. Dafür brauchst Du die ganze Paramters-Geschichte nicht.

cyberchris

Dachte halt um die Dateigröße (mdw) von bereits mittlerweile 12 MB nicht noch mehr aufzublähen.

Versuche mich dann doch an einem Formular.

Danke
gruß Christoph

DF6GL

Hallo,


da könnte ein "Komprimieren/Reparieren von Zeit zu Zeit helfen...

cyberchris

mache ich auch immer und das niedrigste sind eben ca. 12 MB.

Gruß Christoph

DF6GL

Hallo,

naja, wenn das nichts nützt, dann ist die DB halt "voll" mit Code, wenn nicht nebenbei noch Bilder irgendwo eingebettet sind, oder OLE-Objekte verwendet werden.

Andererseits sind ja 12MB nur als relativ groß zu sehen. Soooo viiieeel ist das ja nun auch wieder  nicht.
.