Avatar billede Jman Praktikant
19. september 2003 - 14:43 Der er 19 kommentarer og
1 løsning

Problerm med datoformater (the usual)

StrDate = Year(Date) & "-" & Month(Date) & "-" & Day(Date)
Registreret = StrDate & " " & time

Denne kode fik jeg af Eagleeye, og det virker ... ngenlunde da.

Jeg får en fejl i insert/update til SQLdatabasen. Når dato eksempelvis er 19-09-2003, prøver den at indsætte 19-9-2003, hvilket giver en fejl:
[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 Jman Praktikant
19. september 2003 - 14:45 #1
ja, den prøver selvfælgelig 2003-9-19
Men problemet er at ligeså snart dag eller måned ikke er 2-cifret får jeg fejlen
Avatar billede snowball Novice
19. september 2003 - 14:50 #2
Prøv med nedenstående (er ikke testet)

StrDate = '';

If Day(Date) < 10 Then
  StrDate = "0" & Day(Date)
Else
  StrDate = Day(Date)
EndIf

If Month(Date) < 10 Then
  StrDate = StrDate & "0" & Month(Date)
Else
  StrDate = StrDate & Month(Date)
EndIf

StrDate = StrDate & Year(Date)

Snowball
Avatar billede snowball Novice
19. september 2003 - 14:51 #3
Hov. Det første skal være StrDate = ""

;)

Snowball
Avatar billede snowball Novice
19. september 2003 - 14:53 #4
Det går godt. Skulle lige huske bindestregerne også ;)

StrDate = ""

If Day(Date) < 10 Then
  StrDate = "0" & Day(Date)
Else
  StrDate = Day(Date)
EndIf

If Month(Date) < 10 Then
  StrDate = StrDate & "-0" & Month(Date)
Else
  StrDate = StrDate & "-" & Month(Date)
EndIf

StrDate = StrDate & "-" & Year(Date)

Snowball
Avatar billede eagleeye Praktikant
19. september 2003 - 17:26 #5
Eller sådan her:

StrDate = Year(Date) & "-" & Right("0" & Month(Date),2) & "-" & Right("0" & Day(Date),2)
Registreret = StrDate & " " & time
Avatar billede Jman Praktikant
23. september 2003 - 09:43 #6
Jeg vælger Eagleeye's - den virker fint for mig
Avatar billede Jman Praktikant
23. september 2003 - 09:47 #7
Øv... men den giver fejl på et datetime felt og er ok i et andet dattimefelt ....

UPDATE opgave SET Prioritet = '1',Priornr = '02',deadline = '2003-09-23',Tidsestimat = '0',Status = 'Afsluttet',Ansvarlig = 'Hotline',Slutdato = '2003-09-23 09:45:32',Afsluttet = '1', Vist = '0', lostaf = 'PJ', kategori = 'Citrix                                            ' WHERE ID =13047 <font face="Arial" size=2>
<p>Microsoft OLE DB Provider for ODBC Drivers</font> <font face="Arial" size=2>error '80040e07'</font>
<p>
<font face="Arial" size=2>[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.</font>
<p>

Det er Slutdato, der fejler
Avatar billede Jman Praktikant
23. september 2003 - 10:19 #8
okay - jeg skulle lige bytte om, så det hed dd-mm-yyyy

Eagleeye - lægger du et svar ?
Avatar billede Jman Praktikant
23. september 2003 - 11:02 #9
IIIH - stadig fejl!!!
Mit problem er nu at den virker på en profil, men ikke på en anden... Begge med XP Pro DK
Hvordan kan det være - er det ikke serveren, der eksekvere formularen ???
Avatar billede eagleeye Praktikant
23. september 2003 - 18:53 #10
Det lyder mystisk at det afhængigt af hvilken PC man bruger.

Er Dato'en på nogen måde igennem formen eksvis man skriver datoen i et felt som brugeren kan rette i og send tilbage.. men det skulle heller ikke ændre på hvis man ikke retter i dato formatet.
Avatar billede Jman Praktikant
23. september 2003 - 22:24 #11
Det felt, der hedder deadline. Det kan brugeren rette i (hvis denne vel at mærke er rekvirenten også)...
Avatar billede Jman Praktikant
24. september 2003 - 09:22 #12
vil du se koden - du må gerne få det oprettet i et nyt spørgsmål, hvis du vi ha' det
Avatar billede Jman Praktikant
24. september 2003 - 12:40 #13
eagleeye - lig et svar, så du kan få point. Jeg oprettet et nyt spørgsmål, for det haster ad h-til
Avatar billede eagleeye Praktikant
24. september 2003 - 23:30 #14
Ok ;)
Avatar billede eagleeye Praktikant
24. september 2003 - 23:36 #15
Er deadline feltet kun beregnet til at modtage dato og ikke tid?
Måske den vil lave fejel hvis tid's delen mangler men det lyder stadig lidt underlidt at det er PC afhængigt.
Avatar billede Jman Praktikant
25. september 2003 - 09:25 #16
Hej eagleeye... glad for at høre fra dig. feltet Deadline og Slutdato (som også fejler) er datetime-felter.
Jeg har oprettet et nyt spørgsmål til det, men vil gerne ridse det op her også:

Scenario:
2 brugere, valideret via Active Directory logger på samme Citrix-server. Går ind på vores intranet og kigger i vores supportsystem, som jeg er ved at udvikle. Tager fat i den samme opgave, men når der eksekveres en opdatering bliver resultatet forskelligt... Dette er meget mystisk eftersom det er ASP-kode og egentlig ikke burde hve noget med brugeren at gøre.
koden:
  '######################################## Start på opgaveopdatering ########################################
  Set dbsupport = CreateObject("ADODB.Connection")
  strConn = "dsn=websupport"
  dbsupport.Open strConn

    'StrDate = Year(Date) & "-" & Right("0" & Month(Date),2) & "-" & Right("0" & Day(Date),2)
    StrDate = Right("0" & Day(Date),2) & "-" & Right("0" & Month(Date),2) & "-" & Year(Date)
  'StrDate = Year(Date) & Month(Date) & Day(Date)
  'StrDate = FormatDateTime(Now, vbshortDate)

  Tekst = Request.Form("ny_prioritet")
  Priornr = Request.Form("ny_priornr")
  tidsestimat = Request.Form("tidsestimat")
  tidsestimat = CDBL(tidsestimat)

  if StrRekvirentLogon = initialer then
    StrNyDeadline = request.form("ny_deadline")
      deadline = Right("0" & Day(StrNyDeadline),2) & "-" & Right("0" & Month(StrNyDeadline),2) & "-" & Year(StrNyDeadline)
      'deadline = Year(StrNyDeadline) & "-" & Right("0" & Month(StrNyDeadline),2) & "-" & Right("0" & Day(StrNyDeadline),2)
    'deadline = Day(StrNyDeadline) & "-" & Month(StrNyDeadline) & "-" & Year(StrNyDeadline)
    else
    'minvar = StrDeadline
    'dim temp
    'temp = split(minvar, "-")
    'deadline = temp(1)&"-"&temp(0)&"-"&temp(2)

    StrNyDeadline = StrDeadline
      'deadline = Year(StrNyDeadline) & "-" & Right("0" & Month(StrNyDeadline),2) & "-" & Right("0" & Day(StrNyDeadline),2)
    deadline = Right("0" & Day(StrNyDeadline),2) & "-" & Right("0" & Month(StrNyDeadline),2) & "-" & Year(StrNyDeadline)
    'deadline = Day(StrNyDeadline) & "-" & Month(StrNyDeadline) & "-" & Year(StrNyDeadline)
  end if

  Status = Request.Form("ny_status")
  Ansvarlig = Request.Form("ny_ansvarlig")
    StrSlutDate = Right("0" & Day(Date),2) & "-" & Right("0" & Month(Date),2) & "-" & Year(Date)
    'StrSlutDate = Year(Date) & "-" & Right("0" & Month(Date),2) & "-" & Right("0" & Day(Date),2)
  Slutdato = StrSlutdate & " " & time
  lostaf = initialer
  NyKategori = request.form("ny_kategori")

  if request.form("afsluttet") <> "" then
    check_afsluttet = 1  'Eller true
    Status = "Afsluttet"
    else
    check_afsluttet = 0  'Eller false
  end if

  if request.form("Vist") <> "" then
    check_Vist = 1  'Eller true
    else
    check_Vist = 0  'Eller false
  end if

    'SQLstmt = "UPDATE opgave SET Prioritet = '" & Tekst & "',Priornr = '" & Priornr & "',deadline = '" & deadline & "',Tidsestimat = '" & tidsestimat & "',Status = '" & Status & "',Ansvarlig = '" & Ansvarlig & "',Slutdato = '" & Slutdato & "',Afsluttet = '" & check_afsluttet & "', Vist = '" & check_vist & "', lostaf = '" & lostaf & "', kategori = '" & NyKategori & "' WHERE ID ="&request("ID") #Bruges som sikerhedskopi
    SQLstmt = "UPDATE opgave SET Prioritet = '" & Tekst & "',Priornr = '" & Priornr & "',Tidsestimat = '" & tidsestimat & "',Status = '" & Status & "',Ansvarlig = '" & Ansvarlig & "',Slutdato = '" & Slutdato & "',Afsluttet = '" & check_afsluttet & "', Vist = '" & check_vist & "', lostaf = '" & lostaf & "', kategori = '" & NyKategori & "' WHERE ID ="&request("ID")
    'SQLstmt = SQLstmt & "VALUES ('" & Request.Form("ny_prioritet") & "','" & Request.Form("ny_priornr") & "','" & deadline & "','" & Request.Form("tidsestimat") & "','" & Afsluttet & "','" & Request.Form("ny_ansvarlig") & "','" & slutdato & "','" & Request.Form("check_afsluttet") & "','" & Request.Form("check_afsluttet") & "','" & lostaf & "','" & request.form("ny_kategori") & "')"
    response.write "<br>" & SQLstmt

    dbsupport.Execute (SQLstmt)
    dbsupport.Close
    Set dbsupport = nothing
    Set SQLstmt = nothing
   
    If check_vist = 1 then
      SQL_viden = "SELECT * from opgave WHERE ID =" & request("ID")
      set rs_viden = Conn.Execute(sql_viden)

      Betegnelse = rs_viden("Betegnelse")
      Betegnelse = replace(Betegnelse,"'","''")
      Kategori = rs_viden("kategori")
      Problem = rs_viden("problem")
      Problem = replace(problem,"'","''")
      Vis_intranet = 1
      refid= request("id")

      set DBCMD1 = Server.CreateObject("ADODB.Connection")
      DBCMD1.Open = "DSN=websupport"
      strCreateNew="Insert into videndeling (Betegnelse,Kategori,Problem,Vis_intranet,dato, refid)VALUES ('" & Betegnelse & "','" & Kategori & "','" & problem & "','" & vis_intranet & "','" & slutdato & "','" & refid & "')"
      'response.write "<br><br><tt>" & strCreateNew & "</tr>"
      DBCMD1.Execute strCreateNew
      DBCMD1.Close
      set DBCMD1 = nothing

      rs_viden.Close
      Set rs_viden = Nothing
      Set SQL_viden = Nothing
    End if
 
  '######################################## slut på opgaveopdatering ######################################## %>

hvad skrives der ved eksekvering:
korrekt (fra bruger pj)
UPDATE opgave SET Prioritet = '2',Priornr = '            ',deadline = '10-03-2003',Tidsestimat = '0',Status = 'EJ

PÅBEGYNDT',Ansvarlig = 'PJ',Slutdato = '25-09-2003 08:42:26',Afsluttet = '0', Vist = '0', lostaf = 'PJ', kategori =

'Intranet                                          ' WHERE ID =12957

ikke-korrekt (fra bruger JEJ):
UPDATE opgave SET Prioritet = '2',Priornr = '            ',deadline = '10-03-2003',Tidsestimat = '0',Status = 'EJ

PÅBEGYNDT',Ansvarlig = 'PJ',Slutdato = '25-09-2003 08:45:00',Afsluttet = '0', Vist = '0', lostaf = 'JEJ', kategori =

'Intranet                                          ' WHERE ID =12957

Som I kan se sendes de samme oplysninger (på nær brugerens initialer).
Men ved bruger JEJ, opstår der en fejl:
Microsoft OLE DB Provider for ODBC Drivers

error '80040e07'
[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.

/websupport_v2/inc_vis_opgave.asp, line 547  <-- update
Avatar billede Jman Praktikant
25. september 2003 - 09:27 #17
..undskyld rodet i koden  ;)
Avatar billede Jman Praktikant
25. september 2003 - 10:56 #18
OK her kommer en funky information:
StrDate = Right("0" & Day(Date),2) & "-" & Right("0" & Month(Date),2) & "-" & Year(Date)

Hvis jeg bytter om på Year og Day, så er det omvendt for de 2 brugere... Så kan brugere JEJ benytte update og ikke Bruger PJ
Avatar billede Jman Praktikant
25. september 2003 - 12:01 #19
kan man konvertere yderligere, så der tages forbehold for om datoen bliver sendt korrekt ?
TIlsyneladende er det nemlig det, der er galt, men det troede eg var rettet med din kode:
Year(Date) & "-" & Month(Date) & "-" & Day(Date)
Avatar billede Jman Praktikant
25. september 2003 - 13:45 #20
Problem løst ! .. tror jeg, for jeg har aldrig fået svaret. I MS SQL, kan man tilsyneladende bestemme om det skal være lokale settings, der bestemmer formater.
Fint nok! - men det der huer mig er, at mine 2 testbrugere benyttede den samme server til at sende fra og begge brugere er medlem af administrator OU'en i ctive Directory... Så svaret fik jeg ikke - kun en løsning på mit problem
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