Typen komen niet overeen Access 2007

Status
Niet open voor verdere reacties.

TL62

Gebruiker
Lid geworden
12 okt 2005
Berichten
19
Ik heb een database met een zoekformulier. Deze maakt gebruik van een aantal zoekvelden. De zoekvelden wil ik met een standaardwaarde uit een tabel vullen. Echter mijn oplossing geeft de foutmelding typen komen niet overeen:-(

Hier de code waar het fout gaat:
Code:
'Laat het als standaard gekozen veld zien,

    Dim varStandaard As Variant
    Dim varStandaard1 As Variant
    Dim varStandaard2 As Variant

    'Zoek het als standaard aangevinkte veld op.
    varStandaard = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = FALSE")
 [COLOR="darkred"]   varStandaard1 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = TRUE" And StrComp("idZoekItem", varStandaard, vbBinaryCompare) <> 0)[/COLOR]

Bij de rode regel gaat het fout:-( en geeft het de melding typen komen niet overeen, weet iemand wat ik fout doe?
idZoekitem is een autonummeringsveld en ysnZoekItemStandaard is een True False veld

BvD
 
Om te beginnen hoef je een variabele die je als Variant gebruikt niet als zodanig te gebruiken, want dat is een standaardinstelling; bovendien is het beter om het type variabele juist te specificeren, omdat het type Variant ook de grootst mogelijke ruimte inneemt. Wat meer is: met DLookup haal je tekst op, dus je kunt je variabelen beter als String definiëren.
De reden dat de tweede lookup fout gaat, is waarschijnlijk dat je hem verkeerd hebt gedefinieerd. Ik vermoed dat hij zo moet zijn:
Code:
[COLOR=blue]varStandaard1 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = TRUE-1 And StrComp("idZoekItem", varStandaard, vbBinaryCompare) <> 0")[/COLOR]
Probeer overigens het gebruik van DLookup te vermijden, want het is niet de snelste opzoekmethode... Bij een grote tabel ga je dat echt zien.
 
Hoi Michel,

Thx voor je reply. Ik weet dat Dlookup niet een van de snelste methodes is, maar het is alleen maar een kleine tabel met een 35tal records waaruit gezocht moet worden.

Ik heb even gekeken naar jouw code:
Code:
varStandaard1 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = TRUE-1 And StrComp("idZoekItem", varStandaard, vbBinaryCompare) <> 0")
Dit geeft echter bij mij een syntaxtfout aan:-(, Ik snap ook niet helemaal wat de redenatie van de -1 bij de TRUE vergelijking is:-(

Kan je mij een andere richting insturen waarmee ik dit anders zou kunnen oplossen?
Het moet dus eigenlijk gewoon een formulier worden waarmee gezocht kan worden in de hoofdtabel op 3 vrij te kiezen verschillende velden. Hierbij wil ik dus als het formulier geopend word die drie velden alvast met een standaardwaarde invullen.


Mvg Fred
 
Dat komt omdat er iets mis ging met het plakken....

varStandaard1 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = -1 And StrComp("idZoekItem", varStandaard, vbBinaryCompare) <> 0")
 
Dank je, heb hier eens geprobeerd en het blijft op de een of andere manier niet werken.

Nu geeft hij de melding
"De Expressie die u als queryparameter hebt opgegeven, heeft de volgende fout
veroorzaakt:VarStandaard"

Heb het zoekformulier in een kleine database toegevoegd.

Bij voorbaat Dank
 

Bijlagen

  • ZoekForm.zip
    54,3 KB · Weergaven: 33
De code moet volgens mij als volgt zijn:

Code:
varStandaard1 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = 1 And " & StrComp("idZoekItem", varStandaard, vbBinaryCompare) <> 0)

Rebmog
 
Ook dat heb ik geprobeerd, nu echter pakt hij het eerste veld goed, echter ieder volgend veld wordt hetzelfde,. Het is net alsof hij de 2e vergelijking niet meeneemt.

TiA
 
Hoi,
Ik gebruik de code om vanuit een tabel de zoekvelden een standaard waarde mee te geven, en op een zodanige manier dat mocht ik later andere waarden willen hebben ik alleen maar in de tabel het vakje op Ja of Nee hoef te zetten.

Als voorbeeld had ik een database meegestuurd

Mvg Fred
 
Je variabelen varStandaard, varStandaard1 en varStandaard2 vul je met een tekststring.
Je moet dus in je code naar de string verwijzen, dus niet varStandaard maar " & varStandaard & ".

Verder zou ik strComp niet gebruiken.
Deze code werkt wel:

Code:
varStandaard = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = -1")
varStandaard1 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = -1 AND idZoekItem <> " & varStandaard & "")
varStandaard2 = DLookup("idZoekItem", "tblZoekItems", "ysnZoekItemStandaard = -1 AND idZoekItem <> " & varStandaard & " AND idZoekItem <> " & varStandaard1 & "")

Ik zou zelf nooit in je tabel aangeven of een bepaalde kolom de standaardwaarde is of niet.
Zet in je formulier checkboxes voor ieder veld waarop je wilt kunnen zoeken.
Vervolgens laat je een invoerveld of, beter nog, een keuzelijst met invoervak verschijnen per checkbox die is aangevinkt.
Vervolgens bouw je je formulier dynamisch op aan de hand van de in de invoervelden of keuzelijsten ingegeven waarden.

Tardis
 
Hoi Tardis,

JE had gelijk, dat werkte in ieder geval. Houd je aanbevelingen in het achterhoofd voor als ik de database ga verbeteren. Eerst wil ik hem werkend krijgen zoals ik het wens en dan ga ik de aanpassingen verrichten, daar neem ik zeker jouw idee in mee

Thx zover.....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan