1 form voor meerdere query's

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
Een vraag voor een vereenvoudiging van mijn db.
In een form komt drie keer uit 1 tabel 3 maal de gegevens.
Het enige verschil in de te tonen gegevens is de criteria.
In de tabel staat een veld met veldnaam ronde.
Er zijn 3 rondes. De selectie query is dan ook een 1 of 2 of een 3.
Ik heb drie dezelfde forms gemaakt. Met elk de query waarbij in de criteria de ronde wijzigt.
Ik wil 1 form met een opdrachtknop die toont ronde 1, 2 of 3
Met de volgende vba code heb ik dit geprobeerd. Alleen het werkt niet.
De VarNr(ronde) moet naderhand vanaf het form(knop) ingevuld worden.
De tabel is Tbl_Overzicht.
Wat doe ik fout.?


Code:
Dim dbs As Database
Set dbs = DBEngine.Workspaces(0).Databases(0)
Dim strSQL As String
Dim VarNr
VarNr = 2

strSQL = "Select * from [Tbl_Overzicht] Where (ronde='" & VarNr & "');" _
& "ORDER BY ronde, baan; "

Forms!Frm_Uitslagen.Refresh
DoCmd.RepaintObject acForm, "Frm_Uitslagen"
 
Sowieso is de gedachte om daar 3 formulieren voor te maken natuurlijk een foute. Ben blij dat je dat zelf ook inziet :). Jij hebt het over 'vereenvoudiging', ik denk dan: nodeloos ingewikkeld gemaakt bij de start :). Gegevenssets die in beginsel gebaseerd zijn op één en dezelfde bron, laat je natuurlijk altijd in één formulier zien. Hooguit bepaal je dan met Filters wélke informatie getoond moet worden. In dit geval zou ik dan een keuzelijst maken op dat formulier, waarin je de gewenste ronde selecteert. En op basis van die keuzelijst filter je dan het formulier. De code daarvan ziet er zo uit, waarbij ik er vanuit ga dat je de keuzelijst cboRonde hebt genoemd, en het veld [Ronde] a) op het formulier staat, en b) numeriek is. Dat laatste lijkt bij jou, gezien je code, niet het geval te zijn overigens. Wat dan weer vreemd is, want er staan getallen in. Maar goed, met tekst mag het uiteraard ook. Dus onder die voorwaarden, ziet het er zo uit:
Code:
With Me
    If .cboRonde = "" Then
        .Filter = ""
        .FilterOn = False
    Else
        .Filter = "Ronde =" & .cboRonde.Value
        .FilterOn = True
    End If
End With
 
Octafish, weer bedankt voor je snelle reactie.
Ik ga het uitvoeren.
 
Meestal wordt een filter goed uitgevoerd (en zie je de resultaten). Gebeurt dan niet, zet dan onder de End If nog een .RePaint; dan wordt het formulier opgebouwd met de nieuwe dataset.
 
Nogmaals bedankt.
Ik heb het met een groepsvak en jouw code gemaakt.
Werkt perfect.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan