Avatar billede hundevennen Nybegynder
26. februar 2008 - 09:16 Der er 20 kommentarer og
1 løsning

Updateproblemer med datofunction

Når jeg bruger en datofunktion kan jeg ikke ændre i tekstfelterne og når jeg fjerner funktionen kan jeg opdatere tekstfelterne, men datoerne bliver forkert. F.eks bliver 22-02-2008 til 14-01-1847
her er scriptet:
<%
function nyDato1(skiftDato)
  nyDato1 = "'"& right(skiftDato, 4) &"-"& mid(skiftDato, 4, 2) & "-" & left(skiftDato, 2) &"'"
end function

OpenConn

ID = request.form("ID")
   
dfra = request.form("dfra")
ftid = request.form("ftid")
dtil = request.form("dtil")
ttid = request.form("ttid")
'datof = nyDato1(request.form("datof"))
datof = request.form("datof")
'datot = nyDato1(request.form("datot"))
datot = request.form("datot")
besaetning = request.form("besaetning")


       

opdatstr = "Update T_Dok set dfra='" & dfra & "', ftid='" & ftid & "', dtil='" & dtil & "', ttid='" & ttid & "', datof=" & datof & ", datot="& datot &", besaetning='"& besaetning  &"' where id=" & id

OpenConn
WriteData opdatstr
CloseConn

response.redirect "redigervagt.asp"

closeconnection
%>
Avatar billede w13 Novice
26. februar 2008 - 09:23 #1
Bruger du en access-database? For så skal datoen stå i #dato#, dvs. f.eks. #10-10-1980#
Avatar billede hundevennen Nybegynder
26. februar 2008 - 09:28 #2
Nej det er MSSQL
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 09:46 #3
Du skal have '...' rundt om en dato fx på formen:  '2008-02-26'
Avatar billede w13 Novice
26. februar 2008 - 09:57 #4
Erikjacobsen>> Det er vel det, som:

function nyDato1(skiftDato)
  nyDato1 = "'"& right(skiftDato, 4) &"-"& mid(skiftDato, 4, 2) & "-" & left(skiftDato, 2) &"'"
end function

gør.
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 10:02 #5
Ja. Men den skal kaldes før den gør det.
Avatar billede fennec Nybegynder
26. februar 2008 - 10:09 #6
Brug kun dato funktionen sammen med SQL sætningen:

opdatstr = "Update T_Dok set dfra='" & dfra & "', ftid='" & ftid & "', dtil='" & dtil & "', ttid='" & ttid & "', datof=" & nyDato1(datof) & ", datot="& nyDato1(datot) &", besaetning='"& besaetning  &"' where id=" & id
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 10:16 #7
Det gør nok ingen forskel. Problemet ligger vel i at det ikke ender med at blive formatet: '2008-02-26' - vi ved ikke hvad der kommer fra request.form("datot")

Men det er særdeles usikker kode, når der uden kontrol blot anvendes data fra data fra brugeren. Det er forhåbentlig ikke noget, der ligger frit tilgængeligt på nettet ;)
Avatar billede fennec Nybegynder
26. februar 2008 - 10:32 #8
Jeg ville nok også have brugt en isDate() samt day(), month() og year() funktionerne.
Avatar billede hundevennen Nybegynder
26. februar 2008 - 10:34 #9
Fennec - det ændrede ikke noget og til erikjacobsen - det ligger på et intranet
Avatar billede hundevennen Nybegynder
26. februar 2008 - 10:35 #10
scriptet ser nu således ud og jeg kan kun ændre i de 2 datoer ikke i tekstfelterne:

<%
function nyDato1(skiftDato)
  nyDato1 = "'"& right(skiftDato, 4) &"-"& mid(skiftDato, 4, 2) & "-" & left(skiftDato, 2) &"'"
end function

OpenConn

ID = request.form("ID")
   
dfra = request.form("dfra")
ftid = request.form("ftid")
dtil = request.form("dtil")
ttid = request.form("ttid")

datof = request.form("datof")

datot = request.form("datot")
besaetning = request.form("besaetning")


       

opdatstr = "Update T_Dok set dfra='" & dfra & "', ftid='" & ftid & "', dtil='" & dtil & "', ttid='" & ttid & "', datof=" & nydato1(datof) & ", datot="& nydato1(datot) &", besaetning='"& besaetning  &"' where id=" & id

OpenConn
WriteData opdatstr
CloseConn

response.redirect "redigervagt.asp"

closeconnection
%>
Avatar billede erikjacobsen Ekspert
26. februar 2008 - 10:41 #11
Ja, men hvordan ser SQL-strengen ud?
Avatar billede hundevennen Nybegynder
26. februar 2008 - 10:51 #12
erikjacobsen, ja det havde jeg ikke lige tænkt på, men den ser godtnok mystisk ud med datofunktionen:
Update T_dok set dfra='lørdag', ftid='kl:0500',dtil='Søndag',ttid='0500', datof='2-08-02-22',besaetning='en hel masse personer' where id=19

så der er noget galt med datof
Avatar billede hundevennen Nybegynder
26. februar 2008 - 11:02 #13
fennec - der er noget galt med funktionen - når den laver den om til 2-08-02-22
Avatar billede hundevennen Nybegynder
26. februar 2008 - 11:08 #14
hvis man skifter 4 ud med 2 så funktionen ser sådanher ud
function nyDato1(skiftDato)
  nyDato1 = "'"& right(skiftDato,2) &"-"& mid(skiftDato, 4, 2) & "-" & left(skiftDato, 2) &"'"
end function
så kommer datoen til at blive 08-02-22, - der mangler så lige 20 foran - ka man sætte det ind??
Avatar billede hundevennen Nybegynder
26. februar 2008 - 11:14 #15
sådan her virker det
function nyDato1(skiftDato)
  nyDato1 = "'20"& right(skiftDato,2) &"-"& mid(skiftDato, 4, 2) & "-" & left(skiftDato, 2) &"'"
end function
Avatar billede hundevennen Nybegynder
26. februar 2008 - 11:15 #16
fennec - det var din funktion fra igår der skulle ændres lidt - og din inspiration
kl. 10.09.09, så læg et svar igen igen igen
Avatar billede fennec Nybegynder
26. februar 2008 - 12:00 #17
Du får lige den funktion jeg bruger til datoer (lidt revurderet)

function DBDate(funkDato)
dim SQLYear,SQLMonth,SQLDay
  if MyIsDate(funkDato) then
    DBDate = "'"& year(funkDato) & right("0"& month(funkDato),2) & right("0"& day(funkDato),2) & "'"
  else
    Response.write """"& funkDato &""" is not valid date."
    response.end
  end if
end function

function MyIsDate(dato)
dim returVal
returVal = false
if len(dato) = 10 then
  if isnumeric(left(dato,2)) then
  if cint(left(dato,2)) >= 1 and cint(left(dato,2)) <= 31 then
    if isnumeric(mid(dato,4,2)) then
    if cint(mid(dato,4,2)) >= 1 and cint(mid(dato,4,2)) <= 12 then
      if isnumeric(right(dato,4)) then
      if mid(dato,3,1) = "-" and mid(dato,6,1) = "-" then
        if isDate(dato) then
        returVal = true
        end if
      end if
      end if
    end if
    end if
  end if
  end if
end if
MyIsDate = returVal
end function
Avatar billede hundevennen Nybegynder
26. februar 2008 - 13:06 #18
hvordan bruger jeg lige den på det aktuelle script eller dem fra igår?
Avatar billede fennec Nybegynder
26. februar 2008 - 13:24 #19
I stedet for din nyDato1() funktion bruger du DBDate() i SQL sætningerne.

opdatstr = "Update T_Dok set dfra='" & dfra & "', ftid='" & ftid & "', dtil='" & dtil & "', ttid='" & ttid & "', datof=" & DBDate(datof) & ", datot="& DBDate(datot) &", besaetning='"& besaetning  &"' where id=" & id
Avatar billede fennec Nybegynder
26. februar 2008 - 13:25 #20
DBDate gør brug af MyIsDate funktion som sikre at datoer er indtastet i DK format (dd-mm-yyyy).
Avatar billede fennec Nybegynder
26. februar 2008 - 13:26 #21
Kræver at du har session.LCID = 1030 sat på dine sider...
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