Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 13 van 13

Onderwerp: functie

  1. #1
    Vraag is niet opgelost

    functie

    Hallo,

    Ik ben een functie aan het maken, die op basis van een bepaalde dag van de week bepaald hoeveel rocords er voor die dag aangemaakt moeten worden.
    Nu wil ik dit doen op basis van de dagnaam, bv maandag of zaterdag

    De functie is nog maar in zijn beginfase, maar ik loop tegen het feit aan dat ik de opmaak van de nieuwe datum die ik aanmaak de weergave 00:00:00 geeft ipv maandagh, dinsdag ect.
    Nu heb ik een formuliertje gemaakt en daar de opmaak van de weekdag op dddd gezet. Maar deze blijft zaterdag weergeven.
    Dus lijkt het niet in de opmaak te zitten, maar ergens anders.

    Kom er niet uit.
    Code:
    Function fplanningdag()
    On Error Resume Next
    
        Dim ddatum As Date
        Dim ddag As Date
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
            
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset("Tplanning")
        ddatum = DMax("datum", "Tplanning") + 1
        MsgBox ddatum
        ddag = Format(ddatum, "dddd")
        MsgBox ddag
            
        With rst
            .AddNew
            !datum = ddatum
            !weekdag = ddag
            !aangemaakt = Date
            .Update
        End With
            
        rst.Close
        dbs.Close
    
    End Function
    Mocht de database nodig zijn, dan hoor ik het graag.

  2. #2
    Mega Senior NoellaG's avatar
    Geregistreerd
    10 april 2019
    Locatie
    Melsele
    de uitkomst van de format functie is een string, niet een datum.
    SQL DBA
    (just like a normal person - only way cooler)

  3. #3
    Hoi,

    En hem in de functie dis ook als string definiëren.

    Bedankt

  4. #4
    Nog een vervolgvraag mbt mijn initiële vraag.

    Het probleem is opgelost en de juiste weekdag wordt nu aan de tabel toegevoegd.
    Nu heb ik ook een tabel met weekdagen en een aantal. bv maandag 1, vrijdag 5
    Nu wil ik dus dat er op maandag een record wordt gemaakt en op vrijdag 5
    In de functie wil ik dus met DLOOKUP het juiste aantal uit de tabelhalen dat bij de weekdag hoort.
    Ik krijg echter ten alle tijden nu het getal 0.
    Het lijkt erop dat format(ddatum,"dddd") voor bv 3 januari 2023 een maandag, dit niet herkend als het woord maandag in mijn tabel met weekdagen en aantallen.
    Hij wordt wel als het woord maandag in de tabel toegevoegd.

    Is dit een format dingetje?

    Dit is mijn huidige functie

    Code:
    Public Function fplanningdag()
    On Error Resume Next
    
        Dim ddatum As Date
        Dim aantal As Integer
        Dim i As Integer
        
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
            
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset("Tplanning")
        ddatum = DMax("datum", "Tplanning") + 1
        
        aantal = DLookup("aantal", "Tweekdag", "weekdag =" & Format(ddatum, "dddd"))
        MsgBox aantal                   'tijdelijk om te testen
        MsgBox Format(ddatum, "dddd")   'tijdelijk om te testen
        aantal = 2                      'tijdelijk om te testen
           
        For i = 1 To aantal
            With rst
                .AddNew
                !datum = ddatum
                !weekdag = Format(ddatum, "dddd")
                !aangemaakt = Date
                .Update
            End With
        Next
        rst.Close
        dbs.Close
    
    End Function

  5. #5
    Senior Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Quote Origineel gepost door HankMegens Bekijk Bericht
    Ik ben een functie aan het maken, die op basis van een bepaalde dag van de week bepaald hoeveel rocords er voor die dag aangemaakt moeten worden.
    Ik snap het aanzetje van je "functie" (die eigenlijk een procedure is) niet. Ik zie dat je de hoogste datum bepaalt en daar een dag bij optelt. Met die datum leg je een record vast. Over het bepalen van het aantal records per dag van de week zie ik (nog) niets.

    In het record leg je bovendien de weekdag redundant vast. Die kan je immers afleiden uit de datum en behoor je dus niet vast te leggen.
    Laatst aangepast door xps351 : 31 januari 2023 om 17:08
    Groeten,

    Peter

  6. #6
    Mega Senior NoellaG's avatar
    Geregistreerd
    10 april 2019
    Locatie
    Melsele
    Check of bovenaan je module het volgende staat:
    Code:
    Option explicit
    Anders kan je dat toevoegen, dan kan je geen fouten maken door variabelen te gebruiken die niet gedeclareerd zijn

    vervolgens:

    Code:
    Public Function fplanningdag()
    On Error Resume Next
    
        Dim ddatum As Date
        dim strWeekDag as string
        Dim aantal As Integer
        Dim i As Integer
        
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
            
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset("Tplanning")
        ddatum = DMax("datum", "Tplanning") + 1
        strWeekDag = Format(ddatum, "dddd")
        aantal = DLookup("aantal", "Tweekdag", "weekdag =""" & strWeekDag & """")
        MsgBox aantal                   'tijdelijk om te testen
        MsgBox Format(ddatum, "dddd")   'tijdelijk om te testen
        aantal = 2                      'tijdelijk om te testen
           
        For i = 1 To aantal
            With rst
                .AddNew
                !datum = ddatum
                !weekdag = strWeekDag
                !aangemaakt = Date
                .Update
            End With
        Next
        rst.Close
        dbs.Close
    
    End Function
    SQL DBA
    (just like a normal person - only way cooler)

  7. #7
    Quote Origineel gepost door xps351 Bekijk Bericht
    Ik snap het aanzetje van je "functie" (die eigenlijk een procedure is) niet. Ik zie dat je de hoogste datum bepaalt en daar een dag bij optelt. Met die datum leg je een record vast. Over het bepalen van het aantal records per dag van de week zie ik (nog) niets.

    In het record leg je bovendien de weekdag redundant vast. Die kan je immers afleiden uit de datum en behoor je dus niet vast te leggen.
    Dat ik hem nu vast is een tijdelijk iets. Deze zal uiteindelijk niet gebruikt worden, maar zoals jij zegt, afgeleid worden van de datum.
    Het lijkt mij door het aantal dat ik voor een werkdag heb vastgelegd, kan gebruiken om het aantal records dat moet worden aangemaakt te bepalen. Toch?


    Hank

  8. #8
    Quote Origineel gepost door NoellaG Bekijk Bericht
    Check of bovenaan je module het volgende staat:
    Code:
    Option explicit
    Anders kan je dat toevoegen, dan kan je geen fouten maken door variabelen te gebruiken die niet gedeclareerd zijn

    vervolgens:

    Code:
    Public Function fplanningdag()
    On Error Resume Next
    
        Dim ddatum As Date
        dim strWeekDag as string
        Dim aantal As Integer
        Dim i As Integer
        
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
            
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset("Tplanning")
        ddatum = DMax("datum", "Tplanning") + 1
        strWeekDag = Format(ddatum, "dddd")
        aantal = DLookup("aantal", "Tweekdag", "weekdag =""" & strWeekDag & """")
        MsgBox aantal                   'tijdelijk om te testen
        MsgBox Format(ddatum, "dddd")   'tijdelijk om te testen
        aantal = 2                      'tijdelijk om te testen
           
        For i = 1 To aantal
            With rst
                .AddNew
                !datum = ddatum
                !weekdag = strWeekDag
                !aangemaakt = Date
                .Update
            End With
        Next
        rst.Close
        dbs.Close
    
    End Function
    Deze werkt. Bedankt. Ga hem eens goed bekijken en zien waar ik de mist in gegaan ben.
    option explicit was aanwezig

  9. #9
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Quote Origineel gepost door xps351 Bekijk Bericht
    Ik snap het aanzetje van je "functie" (die eigenlijk een procedure is) niet.
    Volgens Google Translate (en nog een paar woordenboeken) is de vertaling van “function” echt wel “functie”, en niet procedure. Het Engels voor ‘procedure’ is daarentegen… ‘procedure’. Verwarrend? Niet echt .
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  10. #10
    Senior Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Als je een functie gebruikt zoals functies bedoeld zijn, retourneert een (ingebouwde of zelfgemaakte) functie één waarde, die je dan bijvoorbeeld aan een variabele toekent.
    Een procedure (in VBA een Sub) voert een aantal handelingen uit. Bijvoorbeeld het aanmaken van een aantal records.

    Valt me tegen dat iemand die normaalgesproken zo strikt in de leer is deze nuances niet aanvoelt.
    Groeten,

    Peter

  11. #11
    Mega Senior NoellaG's avatar
    Geregistreerd
    10 april 2019
    Locatie
    Melsele
    Quote Origineel gepost door HankMegens Bekijk Bericht
    Deze werkt. Bedankt. Ga hem eens goed bekijken en zien waar ik de mist in gegaan ben.
    Het probleem zat hem in de dlookup:
    DLookup("aantal", "Tweekdag", "weekdag =" & Format(ddatum, "dddd"))
    Aangezien het resultaat van de format functie een string is moet deze tussen aanhalingstekens staan
    In VBA kan je één aanhalingsteken typen door "", maar heel het criterium moet ook tussen zijn eigen aanhalingstekens staan, vandaar
    "Weekdag =""" & strWeekDag & """"
    De vetjes gedrukte aanhalingstekens zijn degenen die voor VBA aanduiden dat wat ertussen staat een string is, de andere zijn de dubbele quotes die in het resultaat als één getypte quote vertaald worden, het resultaat:

    Weekdag = "zaterdag"
    SQL DBA
    (just like a normal person - only way cooler)

  12. #12
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Quote Origineel gepost door xps351 Bekijk Bericht
    Valt me tegen dat iemand die normaalgesproken zo strikt in de leer is deze nuances niet aanvoelt.
    Valt mij dan weer tegen dat je gevoel voor humor ergens op zolder is blijven liggen….
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  13. #13
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Omdat je er 100% zeker van kan zijn dat er geen enkele quoots in de naam van de dag zitten, kan het ook simpeler:
    Code:
     aantal = DLookup("aantal", "Tweekdag", "weekdag =‘" & strWeekDag & "’")

    (De verkeerde quootjes komen door de iPad )
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

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 en business

Partners
Sponsoren