PDA

Vollständige Version anzeigen : per VBA temporäre Abfrage generieren


Ace
10.08.2001, 13:28
Hallo Mädels und Jungs,

ich habe ein SQL-Statement in einem String gespeichert (war n ganz schönes Stück Arbeit! :-}), jetzt möchte ich diesen auch ausführen und auf das Ergebnis einen Bericht laufen lassen. Der Bericht existiert bereits und das ist gut so, jedoch möchte ich die Abfrage nur für die Zeit der Betrachtung des Berichts existent haben und danach keine Abfrage in Access übrig behalten, blabla.
Kurz: Wie generiere ich ne Abfrage mit einem SQL-String über VBA ohne eine Abfrage zu benutzen, die bereits in meiner Datenbank existiert.
Danke schonmal.

René

SiggiG
10.08.2001, 13:39
Hi René,

vielleicht hilft Die das weiter.

Set dbs = CurrentDb ' Bezug auf aktuelle Datenbank zurückgeben.
dbs.QueryDefs.Refresh ' QueryDefs-Auflistung aktualisieren.
' Abfrage "Parameterabfrage" löschen, falls sie existiert.
For Each qdf In dbs.QueryDefs
If qdf.Name = "Parameterabfrage" Then
dbs.QueryDefs.Delete qdf.Name
End If
Next qdf
strSQL = "PARAMETERS [CRNR1] Long; SELECT * FROM Kalkulation " _
& "WHERE ([CR_Nr] = [CRNR1]);" ' SQL-Zeichenfolge zusammenstellen.
Set qdf = dbs.CreateQueryDef("Parameterabfrage", strSQL) ' Neues QueryDef-Objekt erstellen.
qdf.Parameters![CRNR1] = [CR_Nr] ' Werte für die Parameter zuweisen.
Set rst = qdf.OpenRecordset ' Recordset für QueryDef-Objekt öffnen.

Viel Spaß

marmic55
10.08.2001, 13:44
Hallo,

die Stringvariable ist also schon prall gefüllt.
Ebenso gibt es einen Bericht, der die Felder der (variablen) Abfrage besitzt.

Dann öffne doch den Bericht und gebe im Bericht "Beim Öffnen" an:
Me.Recordsource = strSQL

(je nachdem, wie langlebig Deine Variable ist).

Michael

Ace
10.08.2001, 13:59
@Siggi: ... hab ich nicht verstanden, sorry.

@marmic55: klasse Idee, hat funktioniert. Die einfachen Lösungen übersieht man gerne mal, wenn man den ganzen Tag nur Code runterrattert.
Danke.

maba
10.08.2001, 14:02
ganz einfach

currentdb.Execute ("dann hier dein sql string",[optional hier öffnungsmodus bestimmen])

gruß