Avatar billede websam Nybegynder
14. december 2003 - 16:18 Der er 19 kommentarer og
1 løsning

Indsæt dato i database

Hvorfor kan jeg ikke få lov til at indsætte en dato i databasen med et felt af typen datetime. Jeg har et felt hvor jeg skriver f.eks. 14-12-2003 jeg får ingen fejl kode men den indsætter 10-07-1894 der er tale om et ganske almindeligt formular felt :

<input type="text" name="Date" size="10">

og en helt almindelig insert sætning :

Sql = "Insert Into tblKegler ([Date]) values ("
Sql = Sql & ""&Request.Form("Date")&")"

Nogen der har et svar på det ?

/Websam
Avatar billede eagleeye Praktikant
14. december 2003 - 16:21 #1
Fejlen skyldes at Access bruger US eller UK dato format som er yyyy-mm-dd eller mm-dd-yyyy via SQL. Når man så indsætter en dato i dansk dato format, hvor dagen er først så bytter den rundt på månede og dag i datoen.

Der er en løsning og der er at bruge dato funktionerne Year, Month og Day til at formatere din dato.

Et eksemple bemærk Access bruger # omkring datoen:

<%
dato = Request.Form("Date")
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
SQL = "Insert Into tblKegler ([Date]) values (#" & strDato & "#)"
%>
Avatar billede eagleeye Praktikant
14. december 2003 - 16:22 #2
Det er access du bruger eller?
Avatar billede wilweb Nybegynder
14. december 2003 - 16:22 #3
Sql = "Insert Into tblKegler ([Date]) values ("#" & Request.Form("Date")& "#)"
Avatar billede websam Nybegynder
14. december 2003 - 16:25 #4
Nej det mssql
Avatar billede eagleeye Praktikant
14. december 2003 - 16:26 #5
Ok men formatet yyyy-mm-dd skal være det samme, så skal der bare ' omkring og ikke #

SQL = "Insert Into tblKegler ([Date]) values ('" & strDato & "')"
Avatar billede websam Nybegynder
14. december 2003 - 16:26 #6
Og jeg formatere datoen inden jeg indsætter den i db
Avatar billede eagleeye Praktikant
14. december 2003 - 16:27 #7
Ja
Avatar billede websam Nybegynder
14. december 2003 - 16:28 #8
og hvis jeg sætter '    ' omkring får jeg fejl så skriver den at jeg ikke kan indsætte char i datetime felt
Avatar billede eagleeye Praktikant
14. december 2003 - 16:45 #9
Hvad hvis du prøver at sætte / ind i stedet for -?

strDato = Year(dato) & "/" & Month(dato) & "/" & Day(dato)
Avatar billede websam Nybegynder
14. december 2003 - 16:53 #10
Så skriver den den 01-01-1900
Avatar billede Slettet bruger
14. december 2003 - 16:59 #11
Prøv evt.
Sql = "Insert Into tblKegler ([Date]) values ("
Sql = Sql & "" & CDate(Request.Form("Date")) & ")"
Avatar billede Slettet bruger
14. december 2003 - 16:59 #12
Ups glemte lige ', sådan
Sql = "Insert Into tblKegler ([Date]) values ("
Sql = Sql & "'" & CDate(Request.Form("Date")) & "')"
Avatar billede websam Nybegynder
14. december 2003 - 17:23 #13
Så får jeg den samme :

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
Avatar billede Slettet bruger
14. december 2003 - 17:27 #14
Hmm lyder meget mærkeligt da som eagkeeye også siger så bruger mssql ' omkring men så prøv uden og se hvad den så siger
Sql = "Insert Into tblKegler ([Date]) values ("
Sql = Sql & "" & CDate(Request.Form("Date")) & ")"
Avatar billede websam Nybegynder
14. december 2003 - 17:28 #15
ja det har jeg lige gjort og så får jeg 01-01-1900 så jeg forstår det heller ikke lige
Avatar billede Slettet bruger
14. december 2003 - 17:38 #16
Hvad får du på denne:
Sql = "Insert Into tblKegler ([Date]) values ("
Sql = Sql & "2003-12-14)"
Avatar billede websam Nybegynder
14. december 2003 - 17:52 #17
Det vil jeg lige prøve senere har ikke mere tid lige nu men jeg har midlertidigt lavet feltet om til et nvarchar så kan jeg indsætte i db
Avatar billede hugopedersen Nybegynder
15. december 2003 - 07:51 #18
Jeg bruger følgende funktion til at lave en dato der kan indsættes i et smalldatetime felt på en SQL Server 2000
Der skal ' omkring :  "'" + ConvertToSqlDate(now) + "',"

Function ConvertToSqlDate(dato)
    dim SQLYear,SQLMonth,SQLDay
 
    SQLYear = Year(dato)
    SQLMonth = Month(dato)
    SQLDay = Day(dato)
    if SQLDay<10 then
        SQLDay = 0&SQLDay
    end if
    if SQLMonth<10 then
        SQLMonth = 0&SQLMonth
    end if
    ConvertToSqlDate = SQLYear&SQLMonth&SQLDay
End Function
Avatar billede websam Nybegynder
15. december 2003 - 21:20 #19
Ja der kan man bare se det enste jeg skulle fjerne var mine - i datoen så virker det tak for hjælpen "hugopedersen" og et svar giver Point :o)
Avatar billede hugopedersen Nybegynder
16. december 2003 - 06:53 #20
Det lyder da godt at du fik det til at virke.
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