SQL omzetting in VBA

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
sorry foutje, het is nog niet zoals ik wil, kom er

Ik heb een query gebouwd die precies die records uit een tabel haalt die ik nodig heb. De SQL-weergave is als volgt
Code:
SELECT tblConstatering.ConstateringID
FROM (tlkpOrganisatie INNER JOIN tlkpArbeidsplaats ON tlkpOrganisatie.OrganisatieID = tlkpArbeidsplaats.OrganisatieID) INNER JOIN tblConstatering ON tlkpArbeidsplaats.ArbeidsplaatsID = tblConstatering.MelderID
WHERE (((tlkpOrganisatie.OrganisatieID)=2));
Deze code wil ik ombouwen in VBA, omdat dit onderdeel is van een samengesteld filter die ik in VBA opbouw op basis van verschillende zoekcriteria
In dit geval wil ik alleen die constateringen er uit halen die door werknemers (MelderID) geplaatst op en arbeidsplaats (ArbeidsplaatsID) van een bepaalde organisatie (OrganisatieID) afkomstig is. De organisatieID is één van de zoekcriteria.

Hoe kan ik dit in VBA neerzetten?


mvg
John
 
Laatst bewerkt:
Als je de organisatie uit een keuzelijst haalt, dan bijvoorbeeld zo:
Code:
strSQL = "SELECT tblConstatering.ConstateringID FROM (tlkpOrganisatie " _
    & "INNER JOIN tlkpArbeidsplaats ON tlkpOrganisatie.OrganisatieID = tlkpArbeidsplaats.OrganisatieID) " _
    & "INNER JOIN tblConstatering ON tlkpArbeidsplaats.ArbeidsplaatsID = tblConstatering.MelderID " _
    & "WHERE (tlkpOrganisatie.OrganisatieID=[B][COLOR="#0000CD"]" & Me.cboOrganisatie.Value & "[/COLOR][/B]);"
 
Als ik het filter uitvoer heb ik de volgende gegevens
Code:
    txtTotaalFilter = txtStatusFilter & txtZoekFilter
    Me.Filter = txtStatusFilter & txtZoekFilter
    Me.FilterOn = True

De waarde in Lokale var. scherm
  : txtTotaalFilter : "c"

Ik krijg echter een foutmelding:
Fout 3075 tijdens uitvoering:
Syntaxisfout in query-expressie SELECT tblConstatering.ConstateringID FROM (tlkpOrganisatie INNER JOIN tlkpArbeidsplaats ON tlkpOrganisatie.OrganisatieID = tlkpArbeidsplaats.OrganisatieID) INNER JOIN tblConstatering ON tlkpArbeidsplaats.ArbeidsplaatsID = tblConstatering.MelderID WHERE (tlkpOrganisatie.OrganisatieID=2);.


Moet ik het filter anders instellen? Andere opties ?
 
Als ik het filter uitvoer heb ik de volgende gegevens
Code:
    txtTotaalFilter = txtStatusFilter & txtZoekFilter
    Me.Filter = txtStatusFilter & txtZoekFilter
    Me.FilterOn = True

De waarde in Lokale var. scherm
   : txtTotaalFilter : "SELECT tblConstatering.ConstateringID FROM (tlkpOrganisatie INNER JOIN tlkpArbeidsplaats ON tlkpOrganisatie.OrganisatieID = tlkpArbeidsplaats.OrganisatieID) INNER JOIN tblConstatering ON tlkpArbeidsplaats.ArbeidsplaatsID = tblConstatering.MelderID WHERE (tlkpOrganisatie.OrganisatieID=2);

Ik krijg echter een foutmelding:
Fout 3075 tijdens uitvoering:
Syntaxisfout in query-expressie SELECT tblConstatering.ConstateringID FROM (tlkpOrganisatie INNER JOIN tlkpArbeidsplaats ON tlkpOrganisatie.OrganisatieID = tlkpArbeidsplaats.OrganisatieID) INNER JOIN tblConstatering ON tlkpArbeidsplaats.ArbeidsplaatsID = tblConstatering.MelderID WHERE (tlkpOrganisatie.OrganisatieID=2);.


Moet ik het filter anders instellen? Andere opties ?
 
Je gebruikt dus de variabele txtTotaalFilter niet? Als daar alleen een 'c' in staat lijkt mij dat logisch, al vraag ik mij af of dat niet een beetje weinig is, gezien de formule waarmee je hem vult. Ofwel txtStatusFilter levert die c op, ofwel txtZoekFilter. Maar ergens gaat daar dus iets fout. En waar komt die SQL vandaan? Ik zie daar al helemaal geen filter in terug...
 
Michel,

sorry voor overlast.
Ik heb een veel makkelijker oplossing gevonden. Door ook de OrganisatieID in de query op te nemen die voor dit formulier nodig is, kon ik gebruik maken van
Code:
    If Not IsNothing(Me.kzlOrganisatie) Then
        varWhere = varWhere & IIf(Not IsNothing(varWhere), " AND ", "") & "([OrganisatieID] = " & Me.kzlOrganisatie & ")"
    End If
Nu zorgt access wel voor de juiste filtering bij de formuliergegevens, ipv dat ik zelf moeilijk moet doen in VBA. Klein foutje dus mijnerzijds.
Maar bedankt voor meedenken
vg
John
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan