Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 20 van 20

Onderwerp: vergelijk 2 velden met getal

  1. #1
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Vraag is opgelost

    vergelijk 2 velden met getal

    Het zal wellicht simpel zijn maar ik kom er toch niet uit.
    In mijn form heb ik twee velden waarin in elk veld een getal wordt ingevuld.
    Er is een derde veld die ik vul met een getal middels een TempVars.
    In voorbeeld is dit het getal 13.
    Nu moet 1 van de twee velden aan dit getal voldoen.
    Voldoen beide velden hieraan niet dan wordt dit middels een msgbox vermeld.
    Voldoet één van de velden hieraan gaat de procedure verder.
    Anders stopt de Functie.
    Ik dacht opgelost te hebben met
    Code:
    if Forms!MyForm!veld1 <> 13 Or Forms!MyForm!veld2 <> 13 then
    MsgBox "Fout"
    End if
    Maar door Or krijg ik toch altijd de melding.

  2. #2
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Ik zou andersom redeneren:
    Code:
    If Not Me.veld1.Value = 13 And Not Me.veld2.Value = 13 Then
         MsgBox "Fout"
         Exit Sub
    End if
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  3. #3
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Iets betere methode:
    Code:
    Dim iCheck As Integer
    
        iCheck = TempVars("Controlegetal")
        Select Case iCheck
            Case Nz(Me.veld1.Value, 0) = iCheck
                GoTo Verder
            Case Nz(Me.veld2.Value, 0) = iCheck
                GoTo Verder
            Case Else
                 MsgBox "Fout"
                 Exit Sub
        End Select
    
    Verder:
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  4. #4
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Octafish,
    wederom bedankt.
    Jouw oplossing ziet er een stuk beter uit en werkt dacht ik.
    Maar als mijn TempVars(zit in VarUitslag) gelijk is aan iCheck wordt toch de msgbox getoond.
    In S1 zit het getal van veld 1 en S2 heeft de inhoud van veld2.
    Als beiden velden niet de inhoud hebben van de TempVars komt terecht het MsgBox bericht.

    Maar als één van de velden wel voldoet aan het TempVars getal wordt ook de MsgBox getoond.
    Met F8 de stapjes nagelopen en de andere oplossing ook geprobeerd maar helaas.

    Code:
    Dim iCheck As Integer
        iCheck = VarUitslag
        Select Case iCheck
            Case Nz(S1, 0) = iCheck
                GoTo Verder
            Case Nz(S2, 0) = iCheck
                GoTo Verder
            Case Else
        MsgBox "U moet een uitslag invullen die gelijk is aan het ingestelde getal"
                 Exit Function
        End Select
    Verder:
    Laatst aangepast door Sytse1 : 26 april 2021 om 17:54

  5. #5
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    En vooral: flexibeler . Tenminste: als je TempVar van waarde wisselt.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  6. #6
    Senior Member
    Geregistreerd
    15 mei 2006
    of op deze wijze:


    Code:
    Dim z As Long
    Dim pl As Integer
    
        z = TempVars("Controlegetal")
            If Me.Waarde1 = z Or Me.waarde2 = z Then pl = 1
            If pl = 1 Then Exit Sub
            
        MsgBox "Fout"
    
    End Sub

    Gr. Cor

  7. #7
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    @pletter: dat is de oplossing die ik al in bericht #2 had neergezet. Later aangevuld met de TempVar i.p.v. de vaste waarde. Dan kan het natuurlijk nog een heel stuk simpeler:
    Code:
        If Me.Waarde1 = TempVars("Controlegetal") Or Me.Waarde2 = TempVars("Controlegetal") Then GoTo Verder
        MsgBox "Fout"
        Exit Sub
    
    Verder:
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  8. #8
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Zie mijn bericht bij #4
    Wellicht willen jullie nog een poging doen.
    Laatst aangepast door Sytse1 : 26 april 2021 om 18:26

  9. #9
    Senior Member
    Geregistreerd
    15 mei 2006
    OctaFish,

    Het gaat er niet om dat het simpeler, korter kan, maar om mogelijke manieren aan de TS te geven.

    Gr. Cor

  10. #10
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Quote Origineel gepost door Sytse1 Bekijk Bericht
    Nu moet 1 van de twee velden aan dit getal voldoen. Voldoen beide velden hieraan niet dan wordt dit middels een msgbox vermeld. Voldoet één van de velden hieraan gaat de procedure verder.
    Niet om het een of ander, maar mijn laatste code voldoet volkomen aan jouw vraag. Ik heb 'm (we hebben de db niet) zo getest:

    Code:
    Sub test()
        TempVars.Add "Controlegetal", 13
        TestWaarde 12, 14
    End Sub
    Resultaat: Tekst "Fout!"

    Code:
    Sub test()
        TempVars.Add "Controlegetal", 13
        TestWaarde 12, 13
    End Sub

    Resultaat: Tekst "En hoe nu?"

    Code:
    Function TestWaarde(Waarde1 As Integer, Waarde2 As Integer)
    
        If Waarde1 = TempVars("Controlegetal") Or Waarde2 = TempVars("Controlegetal") Then GoTo Verder
        MsgBox "Fout!"
        Exit Function
    
    Verder:
    MsgBox "En hoe nu?"
        
    End Function
    Kortom: volgens mij doet-ie het gewoon. Tenzij je toch iets anders bedoelt....
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  11. #11
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Quote Origineel gepost door Pletter Bekijk Bericht
    Het gaat er niet om dat het simpeler, korter kan, maar om mogelijke manieren aan de TS te geven.
    Dan graag mogelijke andere manieren, en niet een andere schrijfwijze van dezelfde .
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  12. #12
    Senior Member
    Geregistreerd
    15 mei 2006
    Sytse1,

    Verander geen voorgaande bericht, dan loopt u het risico dat deze niet gelezen wordt.

    Als je goed gekeken zou hebben naar de oplossingen zou je kunnen zien dat een veldnaam in uw geval (S1, S2) vooraf moet gaan met Me. dus Me.S1 En Me.S2.

    Tenzij de controle in een ander formulier plaats vindt, dan krijgen we een heel ander verhaal.

    Gr. Cor
    Laatst aangepast door Pletter : 26 april 2021 om 18:58

  13. #13
    Senior Member
    Geregistreerd
    15 mei 2006
    OctaFish,

    Er is duidelijk een verschil, maar dat doet er niet toe, u mag het laatste woord van mij hebben.

    Gr. Cor

  14. #14
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Pletter,
    Om mijn code op dit platform zo kort mogelijk te houden heb ik de variable s1 en s2 gemaakt waarin ik de inhoud van de beide velden stop. Het is een Function waarin dan met Forms! enz wordt gewerkt. Evens om het kort te houden de Tempvars in een korte variabele. Het ging mij er om dat mijn code met or(of) steeds hetzelfde bericht gaf. Ook al werd aan de voorwaarde voldaan.

  15. #15
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Octafish,
    Bij Case Nz(Forms!Frm_Uitslagen!UitslagTegenSpelers.Value, 0) = iCheck (een juiste vergelijking)
    of als ik Forms!Frm_Uitslagen!UitslagTegenSpelers in een variabele zet Var2, die is dan ook 13 wordt bij Case Var2 = iCheck
    Is de vergelijking juist: 13 = iCheck
    Toch wordt GoTo Verder overgeslagen en krijg ik de msgbox
    Hieronder alle door mij uitgeprobeerde en niet juist werkende code.

    Code:
    Dim VarUitslag
    VarUitslag = Nz([TempVars]![Max])
    
    If Forms!Frm_Uitslagen!UitslagSpelers <> " " And Forms!Frm_Uitslagen!UitslagTegenSpelers <> " " Then
    S1 = Forms!Frm_Uitslagen!UitslagSpelers
    s2 = Forms!Frm_Uitslagen!UitslagTegenSpelers
    End If
    
    'S1 of S2 moet gelijk zijn aan het cijfer in het veld wedstrijd, de wedstrijd stop bij dit cijfer Then
    If S1 = VarUitslag Or s2 = VarUitslag Then GoTo Verder
    MsgBox "U moet een uitslag invullen die gelijk is aan het ingestelde getal"
    Exit Function
    Verder:
    
    'of deze code
    
    If S1 <> [TempVars]![Max] And s2 = [TempVars]![Max] Then GoTo Verder
    If S1 = [TempVars]![Max] And s2 <> [TempVars]![Max] Then GoTo Verder
    MsgBox "U moet een uitslag invullen die gelijk is aan het ingestelde getal"
    Exit Function
    Verder:
    
    Dim iCheck As Integer
        iCheck = TempVars("Max")
        Select Case iCheck
            Case Nz(Forms!Frm_Uitslagen!UitslagSpelers.Value, 0) = iCheck
                GoTo Verder
            Case Nz(Forms!Frm_Uitslagen!UitslagTegenSpelers.Value, 0) = iCheck
                GoTo Verder
            Case Else
                 MsgBox "Fout"
                 Exit Function
        End Select
    Verder:
    Laatst aangepast door Sytse1 : 26 april 2021 om 21:21

  16. #16
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Quote Origineel gepost door Pletter Bekijk Bericht
    zou je kunnen zien dat een veldnaam in uw geval (S1, S2) vooraf moet gaan met Me. dus Me.S1 En Me.S2.
    Dat is dus niet verplicht; laat je het weg, dan doet de code het ook prima. Alleen heb je dan geen IntelliSense.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  17. #17
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Stop met het aanhalen van de formuliernaam, maar gebruik Me. Dat is veruit het makkelijkst, en houdt je code leesbaar. En je hebt dus het voordeel van IntelliSense. Ik weet niet wat je aan het doen bent met je code, maar ik snap best dat het niet klopt:
    Code:
        If Me.UitslagSpelers.Value <> " " And Me.UitslagTegenSpelers.Value <> " " Then
            S1 = Me.UitslagSpelers.Value
            s2 = Me.UitslagTegenSpelers.Value
        End If
    Je test namelijk op spaties. Je wilt toch op een lege cel, of op getallen testen? Dan mag daar geen spatie in staan.

    Je vraag had al lang en breed opgelost geweest als je een voorbeeldje had gepost. Nu maak je de verwarring met elk bericht alleen maar groter .
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  18. #18
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Opgelost. Nogmaals bedankt.

  19. #19
    Senior Member
    Geregistreerd
    15 mei 2006
    Nog een andere manier:

    Code:
    Dim pl As Integer
    
        pl = StrComp(Me.Waarde1, Me.Waarde2, TempVars("Controlegetal"))
         
            Select Case pl
                Case -1, 0
                    Exit Sub
                Case 1
                    MsgBox "Fout"
            End Select
        
    End Sub
    Gr. Cor

  20. #20
    Senior Member Sytse1's avatar
    Geregistreerd
    9 augustus 2007
    Pletter, bedankt.
    Het zat in integer.
    Ik vergeleek tekst met getal. Tja dan werkt het niet. Dom of even een blinde vlek.

  21. Dit topic is automatisch gesloten omdat er sinds vier maanden niet meer op gereageerd is.

    Indien gewenst kan de topicstarter een verzoek tot heropening indienen.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren