Avatar billede ttopholm Nybegynder
16. august 2005 - 21:52 Der er 27 kommentarer og
1 løsning

dato-felt med forkert dato

Når jeg sætter en dato ind i tabellen bliver den ændret til xx-07-1894, hvor xx variere lidt.

og det er det samme format de er i.

Nogen anelse
Avatar billede erikjacobsen Ekspert
16. august 2005 - 21:56 #1
Indsættelse plejer altid at gå godt med formatet "2005-08-16"
Avatar billede arne_v Ekspert
16. august 2005 - 21:57 #2
det er jo nok vores gode gamle DDMMYY versus MMDDYY versus YYMMDD problem

prøv og eksperimeneter lidt med at få det vendt rigtigt

eller hvis dit programmerings sprog understøtter det skift til
parameters / prepared statements
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:03 #3
har prøvet at sætte det end i 05-08-16, 2005-08-16, 16-08-05, 16-08-2005 og det giver mig stadig det samme... det er et datetimefelt i db'en
Avatar billede erikjacobsen Ekspert
16. august 2005 - 22:04 #4
Har du også '...'-ere rundt om?
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:09 #5
ja.... så kommer den med denne fejl:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

selvom jeg har lavet en cdate på strengen som konvertere den om.
Avatar billede erikjacobsen Ekspert
16. august 2005 - 22:12 #6
cdate vil jo gerne prøve at hjælpe, men magter det ikke altid.
Har du prøvet, bare for forsøgets skyld: '2005-08-16'  ?
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:16 #7
Du er ikke dum som da, det virker...

Men det mest latterlige er at den gemmerdet i formatet dd-mm-yyyy, selv om den kræver formatet yyyy-mm-dd når man skal indsætte
Avatar billede erikjacobsen Ekspert
16. august 2005 - 22:18 #8
Der er heldigvis meget at more sig over i vores branche. Og din observation er ganske korrekt.
Så resterer bare hvordan du generelt skal løse problemet? Du bruger gammeldags ASP, eller hvad?
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:18 #9
findes der en funktion der kan convertere dd-mm-yyyy til yyyy-mm-dd i asp
Avatar billede erikjacobsen Ekspert
16. august 2005 - 22:21 #10
Findes ikke, men den kan laves. left, mid, right funktionerne i VBScript kan bruges.
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:23 #11
Function IsoDate(dteDate)
  If IsDate(dteDate) = True Then
      DIM dteDay, dteMonth, dteYear
      dteDay = Day(dteDate)
      dteMonth = Month(dteDate)
      dteYear  = Year(dteDate)
      IsoDate = dteYear & _
        "-" & Right(Cstr(dteMonth + 100),2) & _
        "-" & Right(Cstr(dteDay + 100),2)
  Else
      IsoDate = Null
  End If
End Function
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:24 #12
burde kunne bruges..
Avatar billede arne_v Ekspert
16. august 2005 - 22:24 #13
parameters !
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:25 #14
hvad mener du arne_v
Avatar billede erikjacobsen Ekspert
16. august 2005 - 22:26 #15
Jeg giver Arne ret. Brug noget nyere fx. Java, .NET (VB.NET/C#), som har bedre DB-understøttelse. Her i høstsæsonen minder gammeldags ASP mig om selvbinderer trukket af heste, sammenlignet med en effektive mejetærsker. ;)
Avatar billede arne_v Ekspert
16. august 2005 - 22:27 #16
topholm>

hvis man bruger parameters så skal man ikke bekymre sig om dato formater
Avatar billede arne_v Ekspert
16. august 2005 - 22:27 #17
erik>

selv gode gamle ADO understøtter parameters
Avatar billede erikjacobsen Ekspert
16. august 2005 - 22:29 #18
Ok, så. 1-0 til ADO ;)    Og så alligevel tænker jeg på en selvbinder ...
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:31 #19
Ja... men det er et gammelt asp-app, som jeg ikke lige orker at lave til asp.net, men klart en mulighed ;-)
Avatar billede arne_v Ekspert
16. august 2005 - 22:33 #20
det som generer mig mest når jeg ved specielt festlige lejligeheder skriver 10 linier
ASP er det lidt "fleksible" forhold til typer
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:37 #21
tak for hjælpen med det...

Så er der kun en tilbage...

Får fejlen:
Disallowed implicit conversion from data type varchar to data type money, table 'crm.dbo.Ordrelinie', column 'Pris'. Use the CONVERT function to run this query.

feltet er money og jeg har brugt ccur til det, men alligevel. når jeg bruger convert siger den at den ikke kender funktionen convert
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:37 #22
vil gerne flere point, hvis i kan hjælpe med den her også...
Avatar billede arne_v Ekspert
16. august 2005 - 22:38 #23
skal du ikke bare fjerne '' omkring beløbet ?
Avatar billede ttopholm Nybegynder
16. august 2005 - 22:43 #24
Stupid me, ja selvfølgelig...

Det er når man har kørt access førhen til app.
Avatar billede ttopholm Nybegynder
16. august 2005 - 23:12 #25
smid nogle svar begge to
Avatar billede arne_v Ekspert
16. august 2005 - 23:16 #26
ok
Avatar billede erikjacobsen Ekspert
16. august 2005 - 23:19 #27
Nej tak.
Avatar billede ldanielsen Nybegynder
17. august 2005 - 10:38 #28
Hvis du bruger ADO vil jeg anbefale at du gør sådan:

Dim Con, Com, Rec

Set Con = Server.CreateObject("ADODB.Connection")
Set Com = Server.CreateObject("ADODB.Command")
Set Rec = Server.CreateObject("ADODB.Recordset")

Con.Open(strConnectionString)
Com.ActiveConnection = Con

Com.CommandText = "SELECT dtmDato FROM TabelNavn WHERE ID = 666"

Rec.Open Com, , 3, 3
Rec("dtmDato") = DateSerial(2005, 8, 16)
Rec.Update
Rec.Close

Con.Close
Set Con = Nothing
Set Com = Nothing
Set Rec = Nothing

Det er for at slippe udenom al skulle lave en UPDATE statement selv. Performance er fin, og du slipper helt for at spekulere på datoformater. DateSerial(iYear, iMonth, iDate) danner en dato, præcis som CDate("16-8-2005") gør, men med den funktion er du igen ude over t skulle spekulere på formatet.

Du kan gøre noget tilsvarende med money, det er bare ikke noget jeg har beskæftiget mig med. Jeg har altid gemt beløb som integers, i ører.

Med denne teknik overlader du problemerne til driveren, i reglen SQLOLEDB, og den har fod på det.
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
Computerworld tilbyder specialiserede kurser i database-management

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