datum met vba en sql

Status
Niet open voor verdere reacties.

manueld

Gebruiker
Lid geworden
12 feb 2012
Berichten
216
ik wil graag met een vba sql code een datum wegschrijven in een sql server. op zih gaat dat allemaal goe behalve dat hij datum formaat niet herkent. ik schrijf een date now in een variabele die als date is gedimensioneerd. ik wil deze in een datetime2(1) veld op de sql server wegschrijven. hoe doe ik de conversie naar het juiste datum/tijd formaat. als ik de time1 variabele uitlees (die door de now() gevuld word ) krijg ik DD-M-YYY hh:mm:ss en ik moet naar YYYY-MM-DD hh:mm:ss.


ter info de overige dingen werken het gaat puur om de datum die niet goed gaat

Code:
   Dim Time1 As Date
 Dim timestr As Date
  Time1 = Now()
  timestr = Format(Time1, "YYYY-MM-DD hh:mm:ss")

  
 Dim strSQL As String
    Dim rs As Recordset
        strSQL = "UPDATE dbo_tblActiveSO SET dbo_tblActiveSO.[MeaSoNumber1] = '" & So1 & "', dbo_tblActiveSO.[Meastarttime1] = ' Time1  ' WHERE (((dbo_tblActiveSO.[MeaDuration]) Is Null));"
        DoCmd.runsql (strSQL)
 
De echte inhoud van een Date is een getal en dus niet DD-M-YYY hh:mm:ss. Vandaag, 14-09-2015 is 42262. Als je het wilt opslaan als YYYY-MM-DD hh:mm:ss zal je dat naar een String moeten doen, maar dat lijkt me niet zinvol. Pas bij een rapport of tonen in een scherm bepaal je hoe deze moet worden getoond.
 
ik wil het ook niet opslaan als een datum string. echter moet ik wel aangeven wat het is. als ik puur een variabele pak en deze dim als date. vervolgens deze met de now funktie vul dan accepteerd de sql server de datum niet ondanks dat het sql veld een datetime2(1) veld is. hij geeft aan "microsoft access didn't update 1 field due to a type conversion failure" ik wil idd pas in een rapport de datum een format mee geven
 
Vul hem met Date in plaats van Now. Welk datatype heb je voor dat veld in die tabel gebruikt?
 
ik wil de gehele datum en tijd hebben dus 15-09-2015 9:05:01

date is dan ook niet geschikt volgensmij
datatype is datetime2(1) welke in acces toont als datetime. als ik in de tabel een datum en tijd in het format dd-MM-yyyy hh:mm:ss typ dan pakt hij dat. de datum die de now funktie meegeeft is MM/dd/yyyy h:mm:ss AM

daar zit volgensmij ook het probleem maar ik weet de oplossing nog niet
 
15-09-2015 9:05:01 is niet opgeslagen als dd-MM-yyyy hh:mm:ss maar zoals ik al eerder zei als een getal.
In dit geval is dat dan: 42262,38
 
ik snap dat een datum is opgeslagen als een getal. waar het om gaat is dat de database snapt wat je hem verteld. ik heb inmiddels de oplossing. ik moet de varianele dimensioneren als string. vervolgens het format(now, datum en tijd formaat) comando gebruiken om de datum als de juiste string weer te geven en vervolgens kan ik deze variabele in de sql syntax plaatsen en gaat het goed. rechtstreeks als datum/tijd pakt hij dus niet.
 
Je oplossing kan volgens mij nog een stuk simpeler, en ik zou ook absoluut geen tekststring gebruiken als dat niet nodig is. VBA werkt, zoals je al gemerkt hebt, met Amerikaanse datumnotatie en je moet je conversie dus in de query laten uitvoeren, niet ervoor. Ik doe het meestal (zag maar gerust: altijd) zo:
Code:
Dim strSQL As String
    strSQL = "UPDATE dbo_tblActiveSO SET [MeaSoNumber1] = """ & So1 & """, [Meastarttime1] = CDate(" & CDbl(Now()) & ") WHERE ([MeaDuration]) Is Null);"
    CurrentDb.Execute strSQL, dbFailOnError
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan