Foutmelding bij keuze van een Ja/Nee vakje

Status
Niet open voor verdere reacties.

BasHD

Gebruiker
Lid geworden
2 dec 2008
Berichten
99
In het volgende satukje VBA gaat er iets fout als ik kies voor het vakje Gestopt.

Gestopt is een selectievakje in een tabel. Gegevenstype van die vakje is Ja/Nee

Nu dacht ik dat je dan in plaats van ja/nee met -1 en 0 zou moeten werken. Alleen dat krijg je de fout melding dat de gegevenstypen niet overeenkomen. Fout 3464.

Moet het gegevenstype van het selectievakje op nummeriek gezet worden of zijn er nog andere mogelijkheden.

He ook al met een If lus geprobeerd dat als Keuze = Gestopt dat dan de criteria waarde 0 zou hebben. Ook dat levert foutmelding op.

Ook als je Criteria opgeeft als Dim as Integer lukt het niet.

Iemand een tip?

Groet,

BB
Code:
Private Sub KeuzeLijst_AfterUpdate()
Dim locatie, DBase, strSQL
Dim Leden, Keuze, Criteria
Dim Message, Title, default

Keuze = Me.KeuzeLijst.Value

Message = "de gemaakte keuze is: " & Keuze & Chr(10) & Chr(10) & _
          "aan welke criteria moet de keuze voldoen?"
              
    default = ""

  Criteria = InputBox(Message, Title, default)
 

DoCmd.RunSQL "DELETE * From TabelKeuzeLijst"
DoCmd.RunSQL "DELETE * From TabelKeuzeLijstNiet"


DoCmd.RunSQL "INSERT INTO TabelKeuzeLijst (StudiegroepCode, Keuze) SELECT StudiegroepCode, " & Me.KeuzeLijst.Value & " FROM Leden WHERE [" & Keuze & "] ='" & Criteria & "'"
DoCmd.RunSQL "INSERT INTO TabelKeuzeLijstNiet (StudiegroepCode, Keuze) SELECT StudiegroepCode, " & Me.KeuzeLijst.Value & " FROM Leden WHERE [" & Keuze & "] <>'" & Criteria & "'"



strSQL = "SELECT StudiegroepCode, " & Me.KeuzeLijst.Value & " FROM Leden"
MsgBox strSQL
    
End Sub
 
Ik zie in je hele code geen verwijzing naar Gestopt. Waar kan ik die terugvinden?
 
antwoord

Hallo Octafish,

Sorry, ben niet duidelijk geweest. Keuze, dus het resultaat van Me.KeuzeLijst.Value Kan Gestopt zijn. KeuzeLijst is een tabel in Access met daarin een aantal items die in een formulier worden weergegeven als keuzelijst met invoervakje. De items die je kunt kiezen zijn weer vakjes die in een tabel staan.

Op het moment dat ik dus in de lijst kies dat ik Gestopt kies, dit is een vakje in een tabel met de gegevens eigenschap Ja/nee dan verschijnt de fout. Kies ik bijvoorbeeld voor ProjectNaam met eigenschap tekst dan gaat het goed. Ook projectnaam is een vakje in de tabel.

Groet,

BB
 
Ik snap het nog steeds niet.... Je gebruikt dus een keuzelijst [KeuzeLijst] om een veldnaam te selecteren? En vervolgens wil je in dat gekozen veld een waarde opslaan? En die waarde is gebaseerd op het criterium [Criteria]? En als je Gestopt kiest, dan is het criterium 0 of -1?

Om te beginnen is je criterium niet consistent:
WHERE [" & Keuze & "] ='" & Criteria & "'"
is alleen gebouwd voor Tekstwaarden, en niet voor een Ja/Nee veld. In die vergelijking mag je geen quootjes om de waarde zetten.
Het criterium wordt dan: WHERE [" & Keuze & "] =" & Criteria

Verder is de Insert ook niet goed: je slaat namelijk de gekozen Waarde uit de keuzelijst op, dus in het geval van Gestopt probeer je met
"INSERT INTO TabelKeuzeLijst (StudiegroepCode, Keuze) SELECT StudiegroepCode, " & Me.KeuzeLijst.Value " in het veld Gestopt (in de variabele Keuze) de waarde "Gestopt" uit de keuzelijst te zetten. Je geeft zelf al aan, dat Gestopt een Ja/Nee veld is, dus daar kan je geen tekst in zetten. Vandaar de foutmelding.
Je moet dus op een moment de keuze Gestopt vertalen naar een getal (0 of -1) en een check inbouwen op de waarde die je wilt opslaan. Daarbij heb je voor Tekst dus quootjes nodig, en voor getallen niet. Je kunt dat wel afvangen met een extra If...Then...Else...End If
 
Bedankt

Hallo Octafish,

Ondanks dat je het niet begreep is je oplossing duidelijk. Ik had inderdaad een if lusje gemaakt dat al de gemaakte keuze Gestopt zou zijn er 0 als criteria uit kwam.

Na het proberen foutmelding. Ik dacht dus dat dat niet werkte. Echter bij WHERE [" & Keuze & "] ='" & Criteria & "'" liet ik de quootjes staan terwijl ik niet meer met tekst werkte.

Nu is dat ook aangepast met een if lus en werkt het perfect.

Dank voor de hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan