PDA

Vollständige Version anzeigen : Felder für Abfrage dynamisch ermitteln


gmc
24.03.2006, 21:08
Hallo zusammen,
ich hänge gerade total an folgender Problemstellung:
Ich möchte mittels Checkbox zusamenstellen, aus welchen Feldern eine Abfrage bestehen soll.
Also z.B. Name, Anschift, Tel, Mail können angeclickt werden und die dann mittels Button gestartete Abfrage soll nur die ausgewählten Felder enthalten.
Wie kann ich das sinnvoll einrichten?
Danke vorab!
Vielen Grüße
gmc

Nouba
24.03.2006, 21:47
Du könntest in die Marke-Eigenschaft der Chekbox den Feldnamen schreiben, der im Falle einer gesetzten Checkbox verwendet werden soll.

Dim c As Control
Dim sFelder As String

For Each c in Me
if c.ControlType = acCheckBox And Len(Nz(c.Tag)) Then
sFelder = sFelder & ", " & c.Tag
End If
Next c
If Len(sFelder) Then
MsgBox "SELECT" & Mid$(sFelder, 2) & " FROM Tabellenname"
End If

gmc
25.03.2006, 09:40
Oh Danke, das haut hin.
Aber wie bekomme ich im Script die Abfrage erstellt, mit runsql kann man ja kann man ja keine reinen SELECT-Statements verwenden?
Viele Grüße
gmc

Nouba
25.03.2006, 12:34
Wenn ich Dich richtig verstehe, willst Du die Abfrage in der Datenbank speichern.

'Kode aus Beitrag #2
Dim db As DAO.Database 'in VBA den Verweis auf die DAO Bibliothek setzen
Dim qdf As DAO.Querydef
Const QryName = "Hier_den_Abfragenamen_einsetzen"

If Len(sFelder) Then
'MsgBox "SELECT" & Mid$(sFelder, 2) & " FROM Tabellenname"

Set db = CurrentDb()
On Error Resume Next
Set qdf = db.QueryDefs(QryName)
If Err.Number <> 0 Then Set qdf = db.CreateQueryDef(QryName)
qdf.Sql = "SELECT" & Mid$(sFelder, 2) & " FROM Tabellenname"
qdf.Close
db.QueryDefs.Refresh
Set qdf = Nothing
Set db = Nothing

DoCmd.OpenQuery QryName
End If

gmc
26.03.2006, 19:19
und wenn ich die Abfrage gar nicht speichern will, nur direkt aufrufen?
Ich suche einen analogen Befehl zu runsql ...

Nouba
26.03.2006, 19:29
Du trägst die Spalteninformationen zusammen und was soll dann damit nun geschehen? Willst Du die Daten exportieren? Wenn ja, wohin in welchem Format?

gmc
26.03.2006, 20:03
Ich will einfach nur den zusammengestellten SQL-Befehl auf die Datenbank loslassen und die Auswertung angezeigt bekommen.
(Ist bestimmt ganz banal nur ich komm nicht drauf)
Gruß
gmc

Nouba
26.03.2006, 20:17
Du kannst beim Schließen des Formulars die geöffnete Abfrage zuerst schließen und anschließend die Abfrage köschen.

gmc
31.03.2006, 13:24
Hallo nouba,

danke nochmal für deine Hilfe!

Viele Grüße
gmc