stLinkCriteria probleem

Status
Niet open voor verdere reacties.

Ramp

Gebruiker
Lid geworden
1 aug 2014
Berichten
11
Hallo, ik ben relatief nieuw met Access 2007.
Bij het ontwerpen van een planten database kom ik nu met een probleem te zitten.
Wanneer ik vanuit een lijst formulier, een bewerkingsformulier wil openen krijg ik de foutmelding "Syntaxisfout (operator ontbreekt) in query expressie [VARIETY]='...
Het probleem doet zich enkel voor wanneer er een deel van de naam tussen enkele of dubbele haakjes staat (bv: Amami Fuuran 'Princess Masako' AM AOS x "Crystal Palace" AM AOS)

Dit is de VBA die ik gebruik:

Private Sub EDIT_VARIETY_Click()
On Error GoTo Err_EDIT_VARIETY_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "2014 VARIETY CARD INDIVIDUAL 1"

stLinkCriteria = "[VARIETY]=" & "'" & Me![VARIETY] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_EDIT_VARIETY_Click:
Exit Sub

Err_EDIT_VARIETY_Click:
MsgBox Err.Description
Resume Exit_EDIT_VARIETY_Click

End Sub

Kan iemand mij hiermee helpen a.u.b.
 
Laatst bewerkt:
Welkom bij HelpMij! Leuk dat je de code een andere kleur hebt gegeven, maar je kunt code het beste opmaken met de CODE knop ( # ) die je ziet als je op de knop <Ga geavanceerd> gebruikt. Of, wat veel mensen doen, typ de code vóór en ná de code met de tags. Je typt dan aan het begin [ code] (zonder spatie) en achter de code [ /code] (ook weer zonder de spatie).
Je probleem wordt veroorzaakt door de tekens in je tekstveld, die de string beïnvloeden. Een tekst als variabele staat altijd tussen "" of ''. En je snapt het al: zodra je één van die tekens in de tekst zelf hebt staan, en je bouwt het filter op, dan staat er in de tekst zelf een teken dat als einde van de string wordt behandeld. Je filteropbouw is overigens ingewikkelder dan noodzakelijk is:
Code:
stLinkCriteria = "[VARIETY]='" & Me.VARIETY & "'"
Wellicht dat het filter beter werkt met een keuzelijst; als ik de objectnaam bekijk gebruik je nu een tekstveld.
 
Verbaast me nog steeds niks, want zoals ik al zei: de tekens ' en " werken als groeptekens voor de string. En daar heb je er dus teveel van in je tekst. Enige oplossing is: vervangen van de tekens door iets anders.
 
Nogmaals bedankt.

Is er mischien een andere manier om dit probleem te omzeilen?
 
Nee. Zolang die tekens er in staan, zul je hiermee te maken krijgen. Overigens gebruik je niet de handigste manier om een formulier te openen, want je kunt veel beter het sleutelveld van de tabel gebruiken. Dan heb je namelijk nergens last van. In dat geval raad ik keuzelijst (met invoervak) aan waarin je het sleutelveld verbergt (gebeurt standaard als je hem aanmaakt) en waarin je zoekt op het veld [Variety].
 
Begrijp ik, maar de bedoeling is dat een lijst wordt weergegeven met nog extra info, waaruit dan een keuze kan gemaakt worden.
Kan ik dan bv het ID veld gebruiken in de VBA, ook al wordt dit niet gebruikt in het formulier, maar wel in de query die de gegevens voor het formulier zoekt?
 
Laatst bewerkt:
Je moet het veld op je formulier hebben staan, al mag hij onzichtbaar zijn. Records filteren doe je bij voorkeur op sleutelvelden. Tenzij je wilt zoeken op delen van tekstvelden, maar dan werkt je huidige filter ook wel.
 
Ik heb de code aagepast en een Id veld op beide formulieren + Query aangepast.
Nu krijg ik de foutmelding "Gegevenstypen komen niet overeen in criteriumexpressie.

Ik heb de code zo veranderd;

Code:
stLinkCriteria = "Id=" & "'" & Me!Id & "'"

In Query
Criterium voor Id is: [Is Not Null]
Voor variety is: [Oplopend sorteren]
 
Een ID is doorgaans numeriek, en dan heb je geen quootjes nodig.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan