Avatar billede lasserasch Juniormester
29. november 2006 - 10:58 Der er 11 kommentarer og
1 løsning

Konvertering af dato (Datetime)

Hejsa.

Jeg har en underlig fejl, jeg ikke lige kan se mig ud af!
I en ASP kode, skal jeg indsætte en record til en SQL server.

Jeg indsætter "now()" i feltet. Felttypen er Datetime

På nogle maskiner virker det fint. Andre maskiner fejler min kode, med en meddelelse om at now() ikke kunne formatteres til datetime formatet.

Det undrer mig, da now() vel er tiden på serveren ik'???

Det er denne kode, som fejler på nogle maskiner og virker på andre...


strSQL = "Insert into Goals ("
    strSQL = strSQL & "kundenr, "
    strSQL = strSQL & "buy, "
    strSQL = strSQL & "potential, "
    strSQL = strSQL & "tid, "
    strSQL = strSQL & "debitor, "
    strSQL = strSQL & "visit, "
    strSQL = strSQL & "loyalty, "
    strSQL = strSQL & "satisfaction, "
    strSQL = strSQL & "goal, "
    strSQL = strSQL & "bruger, "
    strSQL = strSQL & "datestamp"
    strSQL = strSQL & ") "

    strSQL = strSQL & "values ("
    strSQL = strSQL & "'" & request.form("kundenr") & "',"
    strSQL = strSQL & request.form("buy") & ","
    strSQL = strSQL & request.form("potential") & ","
    strSQL = strSQL & request.form("tid") & ","
    strSQL = strSQL & request.form("debitor") & ","
    strSQL = strSQL & request.form("visit") & ","
    strSQL = strSQL & request.form("loyalty") & ","
    strSQL = strSQL & request.form("satisfaction") & ","
    strSQL = strSQL & "'" & request.form("goal") & "',"
    strSQL = strSQL & "'" & strUser & "',"
    strSQL = strSQL & "'" & now() & "'"
    strSQL = strSQL & ")"

    Conn.Execute(strSQL)


Er der en som kan forklare mig hvorfor det virker fint nogle steder mens koden fejler på andre maskiner, og hvad man kan gøre for at undgå fejl.


Mvh.
Lasse
Avatar billede gertp Nybegynder
29. november 2006 - 11:04 #1
har du prøvet med date() i stedet for
Avatar billede fennec Nybegynder
29. november 2006 - 11:09 #2
Vil tro det er LCID'en der driller. Smid:
session.LCID = 1030

i toppen af dine sider.
Avatar billede fennec Nybegynder
29. november 2006 - 11:12 #3
Og formater så dine dato til et format som SQL-Server vil acceptere (yyyymmdd):

function DBDate(fDate)
dim fDay, fMon, fYear
  fYear= Year(fDate)
  fMon= Month(fDate)
  fDay= Day(fDate)
  fDay= right("0"&fDay, 2)
  fMon= right("0"&fMon, 2)
  DBDate = fYear & fMon & fDay
end function
Avatar billede fennec Nybegynder
29. november 2006 - 11:13 #4
Som en helt anden løsning kunne du jo også bare bruge SQL-Servers indbygget dato funktion. Ændre:
strSQL = strSQL & "'" & now() & "'"

til
strSQL = strSQL & "getDate()"
Avatar billede ldanielsen Nybegynder
29. november 2006 - 11:28 #5
Eller bruge CONVERT

strSQL = strSQL & "CONVERT(datetime, '" & Now() & ", 105)"

Jeg skriver 105, fordi jeg regner med at Now() vil returnere formatet dd-mm-yyyy, fordi du sætter Session.LCID til 1020
Avatar billede lasserasch Juniormester
29. november 2006 - 11:29 #6
Hey fennec.

Det virkede sgu! Nu ser det ud til at køre fra alle maskiner! Jeg mangler dog lige tidspunktet også. Altså time, min. Hvordan får jeg dem med?

/Lasse
Avatar billede ldanielsen Nybegynder
29. november 2006 - 11:29 #7
1030 naturligvis :o)
Avatar billede ldanielsen Nybegynder
29. november 2006 - 11:30 #8
GETDATE() returnerer også klokkeslettet, så du har det i feltet ...
Avatar billede lasserasch Juniormester
29. november 2006 - 11:52 #9
Rettede til dette :  DBDate = fYear & fMon & fDay & " " & time()

Tak for hjælpen fennec. Og ldanielsen.

Send svar for point ok!

/Lasse
Avatar billede fennec Nybegynder
29. november 2006 - 12:07 #10
.o) <-- One Eyed Jack
Avatar billede fennec Nybegynder
29. november 2006 - 12:12 #11
En god ide er at have en DBdate og en DBtime funktion:

function DBDate(fDate)
dim fDay, fMon, fYear
  fYear= Year(fDate)
  fMon= Month(fDate)
  fDay= Day(fDate)
  fDay= right("0"&fDay, 2)
  fMon= right("0"&fMon, 2)
  DBDate = fYear & fMon & fDay
end function

function DBDate(fDate)
dim fDay, fMon, fYear, fHour, fMin
  fYear= Year(fDate)
  fMon= Month(fDate)
  fDay= Day(fDate)
  fHour = Hour(fDate)
  fMin = Minute(fDate)
  fDay= right("0"&fDay, 2)
  fMon= right("0"&fMon, 2)
  fHour= right("0"&fHour, 2)
  fMin= right("0"&fMin, 2)
  DBDate = fYear & fMon & fDay &" "& fHour &":"& fMin
end function
Avatar billede fennec Nybegynder
29. november 2006 - 12:13 #12
Klip/klistre fejl. Den sidste funktion skal selvfølgelig hedde DDTime :o)

function DBTime(fDate)
dim fDay, fMon, fYear, fHour, fMin
  fYear= Year(fDate)
  fMon= Month(fDate)
  fDay= Day(fDate)
  fHour = Hour(fDate)
  fMin = Minute(fDate)
  fDay= right("0"&fDay, 2)
  fMon= right("0"&fMon, 2)
  fHour= right("0"&fHour, 2)
  fMin= right("0"&fMin, 2)
  DBTime = fYear & fMon & fDay &" "& fHour &":"& fMin
end function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester