Toon posts:

[Access 2003] query snapt globale variabele niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met een probleem waar ik na urenlang zoeken nog niet uit ben gekomen. Ik ben bezig met het opzetten van een database, waarbij een uitgebreid zoekformulier moet komen. Hiervoor heb ik: een invulformulier gemaakt; een query met daarin de selectie moet maken en een opgemaakt rapport voor de zoekresultaten.

De zoekargumenten wil ik door middel van een globale variable overzetten naar de query, naar voorbeeld van dit artikel http://www.blueclaw-db.co...meter_global_variable.htm. Echter wil ik niet alleen een zoekwaarde waarde overbrengen, maar een geheel stuk sql code. Dit stuk code moet achter de bestaande query komen, wat met het onderstaande stuk SQL code is gedaan. Deze opstelling werkt echter niet, de query houdt geen rekening met argumenten die ik via de globale variable meegeef.

SQL van de query:
code:
1
SELECT ...... HAVING (Get_Global("CritereaWon"));


Het formulier stelt eerst de globale variable in met de slectie die in having moet komen, voor testdoeleinden is nu een standaard regel gebruikt, die ook niet naar behoren werkt.

VBA van het formulier van de verzendknop
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Knop0_Click()
On Error GoTo Err_Knop0_Click

    Dim stDocName As String

   'Bij ZoekCritereaWon moet later dus hele uitgebreide selectie komen, waarbij onder andere = vervangen kan worden door ">" "<" via het formulier'
    ZoekCritereaWon = "((Projecten.Projectnummer)=21)) AND ((Projecten.Plaats) Like ""*"")"
    stDocName = "Woningenselectie"
    DoCmd.OpenReport stDocName, acPreview

Exit_Knop0_Click:
    Exit Sub

Err_Knop0_Click:
    MsgBox Err.Description
    Resume Exit_Knop0_Click
    
End Sub


Functie voor het aanroepen van de globale variable
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Compare Database

Global ZoekCritereaWon As String

Public Function Init_Globals()
ZoekCritereaWon = "((Projecten.Projectnummer)> 0))"
End Function

Public Function Get_Global(gbl_parm)
Select Case gbl_parm
    Case "CritereaWon"
        Get_Global = ZoekCritereaWon
End Select
End Function


Het aanroepen van de globale variabele door de query werkt prima. Het probleem zit hem mijns inziens in het niet correct verwerken/intepreteren van de variabele. Voor de duidelijkheid, ik ben helaas geen goede programmeur vandaar deze vraag ;)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?

Access hoort in OFF ;)

PRG >> OFF

[ Voor 5% gewijzigd door RobIII op 12-02-2007 11:28 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 22-07 13:36
Heb je ooit wel eens van WHERE-criteria gehoord? Is veel makkelijker en volgende keer als je gaat programmeren nog begrijpelijk.

Het rapport baseer je op: SELECT * FROM tblMijnTabel (of gewoon op de tabel...)
En je opent het rapport:
code:
1
docmd.OpenReport rptMijnRaport, acViewPreview, , "((Projecten.Projectnummer)=21)) AND ((Projecten.Plaats) Like ""*"")"

of iets dergelijks

Je kan je criteria ook verpakken in een string, en dat is precies wat jij wil:
code:
1
docmd.OpenReport rptMijnRaport, acViewPreview, , strCriteria


Overigens moet je wel oppassen met je dubbele quote's

[ Voor 39% gewijzigd door Witte op 12-02-2007 14:33 ]

Houdoe


Verwijderd

Topicstarter
Dit had ik idd als eerste geprobeerd, en het werkte toen ondanks diverse aanpassingen niet. Echter heb ik het nogmaals succesvol geprobeerd, het werkt! Waarschijnlijk was het een probleem met haakjes Heel heel erg bedankt!

Maar ik wil toch even vragen wat dan een betere manier is om haakjes in een variabele te krijgen, want een andere methode kan ik niet zo snel vinden.