# Abfrage ausführen über String in ACCESS + VBA



## stella stellaris (5. Mai 2006)

Hallo,

ich bekomme, wenn ich in einem Formular auf einen Button klicke dynamisch eine Anweisung zusammengebastelt. Diese wird in einem String gespeichert. Wie kann ich daraufhin ein Abfragefenster mit dem String-Inhalt ausführen?

Standard ist:

```
stDocName = "MeineAbfrage"
DoCmd.OpenQuery stDocName, acNormal, acEdit
```
Dort wird aber nur eine bereits gespeicherte Abfrage geöffnet.

Ich möchte gerne:

```
stDocName = "meinStringMitAbfrage"
DoCmd.OpenQuery stDocName, acNormal, acEdit
```
Dann gibt es jedoch eine Fehlermeldung "Dokument meinStringMitAbfrage" wurde nicht gefunden. Wie bekomme ich das hin?

DANKE im Voraus!


----------



## Alex F. (5. Mai 2006)

Hi Stella 

Das Problem ist mit docmd.openquery öffnet man ansichten (vorbelegte Sichten auf tabellen) unter Access habe ich es nicht auf die schnelle hinbekommen eine neue Ansicht "View" anzulegen auf dem Sql-Server macht man das mit CreateView würde dann also in deinem Beispiel so aussehen


```
Deinstring = "Select * From Tabelle1"
    Call DoCmd.RunSQL("Create view [MeineAbfrage] as " & Deinstring)
    Call DoCmd.OpenQuery("MeineAbfrage")
```

aber wie gesagt MS hält sich da leider nicht an die normen 

aber vielleicht hilft dir das ja schon mal weiter wenn mir noch etwas einfällt kommt das gleich 


Grüsse bb


----------



## stella stellaris (5. Mai 2006)

Hallo ...

vielen Dank erstmal

Habe den Code mal in meinen kopiert. 
Tja ...Access sagt dazu:

Laufzeitfehler 3290
Fehler in CREATE TABLE-Anweisung (Debugger zeigt auf die 2. Zeile deines Codes)

:-/

Hast du noch einen Tipp?


----------



## Nirraven (8. Mai 2006)

Das call vor dem DoCmd is falsch... so auf die schnelle gesagt


----------



## If_Then_Else (16. Mai 2006)

Was musst du denn genau machen

Du könntest auch den SQL String zusammensetzten und ihn der RowSource-Eigenschaft eines Listenfeldes zuweisen:


```
strSQL = "Select * From ...."

 Listenfeld.RowSource = strSQL
 Listenfeld.Requery
```

Bringt auch ein tolles Ergebnis. Aber was musst du genau machen?


----------



## Alex F. (4. März 2008)

Nirraven hat gesagt.:


> Das call vor dem DoCmd is falsch... so auf die schnelle gesagt



Tja erst denken dann posten das Call ist definitv nicht falsch


----------

