Problemen met Dlookup

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Goede morgen ontwikkelaars

Ik heb volgende code om gegevens op te zoeken in een tabel waar ik drie resultaten zou moeten hebben. Ik krijg echter alleen maar varX en varZ in mijn MSgbox

Code:
Dim varX, varY, varZ As Variant

varX = DLookup("[Username]", "[TabelCorrespondenten]", "[Usertype]=1")
varY = DLookup("[TVoornaam]", "[TabelCorrespondenten]", "[Usertype]=1")
varY = DLookup("[Telefoonnummer kort]", "[TabelCorrespondenten]", "[Usertype]=1") ' And "[Prio Graad]=1")

MsgBox "Gelieve uw Paswoord in te voeren" & vbLf & vbLf & "S'il vous plaît entrer votre Mot de Passe" & vbLf & vbLf & _
"Of neem contact op met de App beheerder" & vbLf & vbLf & varX & varY & varZ, vbOKOnly, "OPGELET!! - ATTENTION!!"

Ik zou ook een tweede criteria willen toevoegen aan de Dlookup maar dat lukt ook niet, desondanks de vele opzoekingen met voorbeelden op het net...

vb :

Code:
varX = DLookup("[Username]", "[TabelCorrespondenten]", "[Usertype]=1" And [Prio Graad] = 1")

ben ten einde raad...


Kan mij iemand verlossen?

Thanks

Greetz

Pascal
 
Dit zou moeten werken:
Code:
     varX = DLookup("[Username]", "[TabelCorrespondenten]", "[Usertype]=1 And [Prio Graad] = 1")

In je eerste voorbeeld vul je twee keer VarY. Dan is er dus ook geen VarZ :)
 
Octafish,

Inderdaad, je zit dan voortdurend je code af te speuren om de fout te zoeken en dan is het zo simpel... Gewoon niet gezien... :rolleyes:

Bedankt voor de oplossing. :thumb:

Tot de volgende.

Greetz

Pascal
 
Stel dat je de waarden niet hard inprogrammeert, zoals je nu doet, maar uit twee keuzelijsten haalt, dan heb je wél een constructie nodig met aanhalingstekens. Dan krijg je dit:
Code:
     varX = DLookup("[Username]", "[TabelCorrespondenten]", "[Usertype]=" & Me.cboUsertype & " And [Prio Graad] = " & Me.Priograad)

Nóg ingewikkelder wordt het als de keuzelijsten geen getallen leveren, maar tekst. (in dit geval uiteraard niet). Maar dan ziet de code er zo uit:
Code:
     varX = DLookup("[Username]", "[TabelCorrespondenten]", "[User]=""" & Me.cboUser & """ And [Prio Graad] = """ & Me.Priograad & """")
 
OctaFish,

Om eerlijk te zijn zat ik eigenlijk in dit geval. Gemengd eigenlijk.

Het eerste criteria is numeriek (ComboBox) en tweede criteria een Tekstveld (met cijfers als gegeven:confused:). Ik heb dan de code als volgt aangepast (als test) :

Code:
varX = DLookup("[Username]", "[TabelCorrespondenten]", "[Usertype]=1 And [Prio Graad] ='" & "1" & "'")

Voor een criteria met tekst werken velen met enkele haakjes, en uw voorbeeld is allemaal met dubbele haakjes. Maakt dat een verschil?

Ik heb wel het data type veranderd naar numeriek, maakt het dan ook eenvoudiger (en logischer).


Bedankt voor de oplossing en de extra info, ik kan er alleen maar wijzer van worden... :thumb::D

Greetz

Pascal
 
Voor een criteria met tekst werken velen met enkele haakjes, en uw voorbeeld is allemaal met dubbele haakjes. Maakt dat een verschil?
Enkele haakjes, zoals je ze nu gebruikt, zijn prima te gebruiken in dit geval. In essentie hebben enkele haakjes en dubbele haken hetzelfde effect: vaststellen waar de string begint en eindigt. Maar er is (uiteraard) wel een verschil, en wil inhoudelijk als praktisch. Wat dat laatste betreft: de dubbele haak wordt óók gebruikt om strings in code te definiëren. Deze regel levert dus een foutmelding op:
Code:
     varX = DLookup("[Username]", "[TabelCorrespondenten]", "[User]="" & Me.cboUser & "" And [Prio Graad] = "" & Me.Priograad & """)
VBA 'denkt' dan dat er twee markeringscodes in de code staan, en dat mag niet. Vandaar dat je bij gebruik van het dubbele aanhalingsteken het aanhalingsteken moet herhalen. Het eerste aanhalingsteken functioneert dan als 'waarschuwing' dat het volgende teken letterlijk moet worden genomen. Vandaar:
Code:
     varX = DLookup("[Username]", "[TabelCorrespondenten]", "[User]=[B][COLOR="#FF0000"]"[/COLOR][COLOR="#0000FF"]"[/COLOR]"[/B] & Me.cboUser & "[COLOR="#FF0000"]"[/COLOR][COLOR="#0000FF"]"[/COLOR] And [Prio Graad] = [B][COLOR="#FF0000"]"[/COLOR][COLOR="#0000FF"]"[/COLOR]"[/B] & Me.Priograad & [B]"[COLOR="#FF0000"]"[/COLOR][COLOR="#0000FF"]"[/COLOR]"[/B])

In dit voorbeeld is het rode aanhalingsteken dus de notificatie dat het blauwe aanhalingsteken als tekst moet worden gebruikt.

Nu de inhoudelijke reden :). Zoals ik al zei: bij numerieke waarden (die als tekst worden gebruikt) zul je van het verschil niet veel merken, maar bij pure tekst soms wel. En dan moet je aan (plaats)namen denken, zoals 's Hertogenbosch of 's Gravenhage. Een string die dit oplevert:
Code:
varX = DLookup("[Username]", "[TabelCorrespondenten]", "[City]=''s Gravenhage' And [Prio Graad] ='1'")
levert geheid een foutmelding op.
Deze code
Code:
varX = DLookup("[Username]", "[TabelCorrespondenten]", "[City]="'s Gravenhage" And [Prio Graad] ="1"")
werkt altijd. Vandaar dat ik nooit het enkele teken gebruik, maar altijd het dubbele. Dan kun je nooit de teil in gaan. Bovendien hoef je dan ook niet meer na te denken over de schrijfwijze, want als je de dubbele eenmaal gewend bent, werkt-ie net zo makkelijk als de enkele.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan