MSSQL har problemer med at acceptere de forskellige datetime formater når data er formateret som date og lign. Jeg ville derfor først flytte datoen over i en strend således at den har samme format som dato for den maskine den kører på. Både MSSQL og Windows bruger Dato-indstillingerne under \"internationale\" i kontrolpanelet.
Du kan derfor konvertere datoen fra formen til en streng ved hjælp af standard konverteringer, f.eks. for Delphi: Datostr := datetostr(formdate);
Derefter kan du opbygge SQL sætningen direkte:
\'insert into table (tabeldato) values (\'+datostr+\')\'
eller
\'update table set tabeldato = \'+datostr+\' where key = \'+keyvalue
På denne måde omsætter MSSQL selv datoen til det format den har brug for fra den streng den kommer i, og fordi du bruger standard konverteringen fra date-format til strengformat vil datoen altid have det format MSSQL forventer.
I øvrigt er der nogle indstillinger i selve MSSQL, endda i ODBC driver opsætningen, hvor du kan afgøre om MSSQL ska anvende standard windows indstillinger/formater.
Lige så snart en af datoerne når over 12 får jeg denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error \'80040e07\'
[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.
Check lige datoformatet på maskinen (kontrolpanel, internationale). Jeg gætter på at den er sat til engelsk hvor måneder kommer før dag, altså: mm-dd-yyyy eller lign.
Ved at rette dette til dansk (dd-mm-yyyy) vil det virke.
Vi har en IIS40 der kører dansk instillinger, en SQL 7,0 med amerikansk opsætning, og diverse computere med forskellige opsætninger der kobler op med deres web browser. Disse opsætninger kan ikke ændres der så vil være andre programmer der ikke virker. :(
Hved du hvordan jeg kan konvertete i v.h.a ASP/VB?
jeg er ikke sikker men jeg mener det hedder CDate(). Dette skulle konvertere fra en date til en streng.
Men prøv engang at skrive følgende og test om du kan få datoerne ind i MSSQL:
MSQL = \"Insert Into Projects (StartDate, LaunchDate) Values (\'13-12-2000\',\'24-12-2000\')\"
NB! Jeg er ikke helt sikker på om datoerne (som jo er en streng i mit eks.) skal omkarnses af enkelt eller dobbeltanførselstegn. Jeg har vise det med enkelt anførselstegn
ok, og hvis det ikke virker så prøv at ændre datoerne til hhv. 12-13-2000 og 12-24-2000 og se om det løser dt.
Hvis det virker, uanset hvilken vej datoen er vendt, så ved du at MSSQl kan acceptere datoerne i strengformat selvom felterne i DB\'en egentligt er smalldatetime eller datetime felter og så er det bare at sørge for at konvertere datoer til strenge eller tage dem direkte fra formen som strenge.
Okay ricardo der tror jeg lige vi ramte knappen på samme tid :)
Men det ser jo ud som vi er nået frem til næsten det samme?
Synes godt om
Ny brugerNybegynder
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.