Queryvelden deels bepalen door formulierkeuze

Status
Niet open voor verdere reacties.

M.Broere

Gebruiker
Lid geworden
4 okt 2000
Berichten
75
Beste,

Ik wil een Query bouwen op basis van een tabel/query.
Deze basis heeft oa de volgende velden : Straat, huisnummer, ligging, perceeltype.

Nu wil ik via een keuze in een formulier de output bepalen van de query.
Wordt voor ligging gekozen dan moet de output zijn: Straat, huisnummer, ligging.
Wordt voor perceeltype gekozen dan moet de output zijn: Straat, huisnummer, perceeltype.

Dit is erg simpel op te lossen door 2 verschillende query's te bouwen maar de eigenlijke keuze bestaat uit een stuk of 8 verschillende velden dus zou ik hiervoor alleen al 8 verschillende querys krijgen.

De vraag is dus: kan een query gemaakt worden die afhangkelijk van de menukeuze verschillende velden wel of niet laat zien ?
 
Dat kun je doen met VBA door een procedure te maken bij de gebeurtenis <Na bijwerken> van de keuzelijst. In deze procedure bouw je dan de SQL string op die je wilt gebruiken, en die koppel je vervolgens aan de opgeslagen query. Je hebt dan dus maar één query nodig voor de verschillende opties.
 
SQL string - koppelen aan query

Beste Michel

Bedankt voor je antwoord, een Query aanroepen via VBA lukt me wel maar hoe bouw ik in VBA een SQL string op ?
Kun je aangeven welke commando's je daarvoor gebruikt/kan gebruiken en hoe ik dat vervolgens koppel aan de query ?
(dat scheelt mij een hoop zoekwerk)
;)
 
Dat kun je op deze manier doen:

Code:
Dim strSQL As String, sQuery As String
Dim db As Database
Dim qTemp As QueryDef
Set db = CurrentDb()
Set qTemp = db.QueryDefs("[B][COLOR=red]qSelectie[/COLOR][/B]")
strSQL = "SELECT Straat, huisnummer, " & Me.[B][COLOR="red"]cboType [/COLOR][/B]& " FROM [[B][COLOR=red]Tabelnaam[/COLOR][/B]]"
qTemp.SQL = strSQL
sQuery = qTemp.Name
DoCmd.OpenQuery sQuery, acNormal, acEdit

Nog wel even de query alvast aanmaken, want anders krijg je een foutmelding. En uiteraard de namen aanpassen van tabel en query...
 
Nog even een variant met een foutroutine, voor als de query niet bestaat:
Code:
Private Sub cboLijst_AfterUpdate()
Dim strSQL As String, sQuery As String
Dim db As DAO.Database
Dim qTemp As DAO.QueryDef
    Set db = CurrentDb()
    On Error GoTo GeenTemp
    Set qTemp = db.QueryDefs("qSelectie")
    strSQL = "SELECT Straat, huisnummer, " & Me.cboLijst.Value & " FROM [tAdres]"
    MsgBox strSQL
    qTemp.SQL = strSQL
    
    sQuery = qTemp.Name
    DoCmd.OpenQuery sQuery, acNormal, acEdit
        
Exit Sub
    
GeenTemp:
    On Error Resume Next
    tmp = db.CreateQueryDef("qSelectie")
    Resume Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan