weekdag bijtellen

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
Hallo
Ik heb volgende code:

SQL = "UPDATE Betalingen SET BETAALD = True, Nog_te_betalen = 0, " _
& "Datum_betaling = Date(), Manier = '" & Waarde & "' WHERE (pingping = True);"
CurrentDb.Execute SQL, dbFailOnError

Datum_betaling wordt vervangen door de datum van vandaag
Maar ik wil dat, als de datum van vandaag in een weekend valt, er 1 bij de datum geteld wordt als we een zondag zijn, en 2 als we een zaterdag zijn, zodat in het Datum_betaling veld nooit een weekend voorkomt maar, indien de situatie zich voordoet, de datum van de maandag na het weekend ingevuld wordt.

Hoe pas ik bovenstaande code dan best aan?

Bedankt
JP
 
Gebruik een variabele voor de telwaarde, en vul die op basis van de functie WeekDay.
 
Moet ik die variabel eerst declareren? Dim nieuwedatum as date...??
 
Ik zou het zo doen:
Code:
Dim nDatum As Date
    If WeekDay(Date - 1, vbMonday) > 5 Then
        nDatum = DateAdd("d", (8 - WeekDay(Date, vbMonday)))
    Else
        nDatum = Date
    End If
    SQL = "UPDATE Betalingen SET BETAALD = True, Nog_te_betalen = 0, " _
    & "Datum_betaling = CDate(" & CDbl(nDatum) & "), Manier = '" & Waarde & "' WHERE (pingping = True);"
    CurrentDb.Execute SQL, dbFailOnError
 
Michel,
Ik krijg op een van mijn computers een compileerfout bij DataAdd
"Het argument is niet optioneel"
op een andere computer loopt de code zonder foutmelding
Hoe los ik dit op?
Bedankt
 
Je zult die db een keer moeten compileren; ergens zit een fout (die niets met DateAdd te maken heeft overigens) en dat komt vermoedelijk door een afwijkende bibliotheek op die pc. Compileren (en bibliotheken nalopen) vindt de fouten meestal wel die je dan kunt repareren.
 
ik compileer... zelfde foutmelding, maar wat bedoel je met "de bibliotheken nalopen"?
Bedankt voor de hulp
JP
 
Meestal krijg je fouten als een bibliotheek ontbreekt. Dus in je VBA venster <Extra>, <Verwijzingen>.
 
hoe weet ik welke ik nodig heb? er staan er 5 aangevinkt
 
de aangevinkte verwijzingen zijn, op de computer waar de code wel werkt:
Visual basic for applications
Microsoft access 14.0 object library
OLE Automation
Microsoft Office 14.0 object Library
Microsoft Office 14.0 Access database engine object library

de computer waar het niet werkt heeft net dezelfde verwijzingen alleen is er hier sprake van een versie 15.0

JP
 
Dan heb je dus te maken met twee computers die verschillende Office versies gebruiken. De 14 library is van Office 2010 en 15 is van Office 2015. Dat hoeft geen probleem te zijn, tenzij de ene versie 32 bits is, en de ander 64 bits. Want dat bijt elkaar.
 
office 2013, natuurlijk ;)
dat klopt... maar wat doe ik hier aan?
Hoe zie ik welke versie ik heb 32 of 64 bits
Bedankt voor je hulp
JP
 
Als je in <Bestand> op <Help> klikt, zie je rechts een overzicht. Daarin staat de Office versie, en daarachter staat of het de 32 bits versie is of de 64 bits.
 
Eén van de 2 de prullenbak in :). Bij voorkeur de 64 bits versie, die Microsoft zelf ook afraad. Dus waarom dat prachtige advies eigenlijk genegeerd? In het kort komt het er op neer dat de 64 bits versie a) net zo goed werkt als de 32 bits versie, b) geen bit sneller werkt, en c) niet compatibel is met de 32 bits versie. Dus je moet wel héle goede redenen hebben (gehad) om het advies van Microsoft te negeren, en tóch de 64 bits versie te installeren :D. Of, en dat lijkt mij waarschijnlijker, je hebt even niet opgelet en gedacht: 64 bits moet wel beter zijn als 32 bits...
Er zit volgens mij niks anders op dan de versies gelijk te trekken, en er dus één te vervangen door dezelfde versie als op de andere pc staat. En als je compatibel wilt blijven met de rest van de wereld, lijkt mij de 32 bits versie de enige juiste.
En als je de kans hebt om de 2013 versie te vervangen door een 2010 versie, dan zou ik 3 keer naakt om het huis rennen van geluk en dat ook doen :D.
 
dus, de enige manier waarop ik dit kan oplossen is die office 2013 van de PC zwieren en er de office 2010 opzetten... is wel heel eigenaardige manier om om deze foutmelding heen te komen toch?? is er dan echt geen andere manier?
JP
 
Jawel, in ieder geval de 64 bits versie vervangen door een 32 bits. En aangezien de 2010 superieur is aan 2013, raad ik je aan om die te pakken :).
 
Ok... En dan hopen dat het euvel opgelost is... Job voor morgeb! Thanks
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan