02. oktober 2003 - 12:31
Der er
4 kommentarer og
1 løsning
Datofelter i UPDATE-statement
Jeg har en masse datofelter i en formular som skal smides ned i en accessdb. jeg har set et andet eks. her på eksperten som bruger nedenstående måde: Det finder ud af hvor mange af datofelterne som er udfyldt og skal lægges i basen. Derefter opbygger den en SQL-streng hvor den kun medtager de datofelter hvor der reelt set var indhold (det er ikke et krav at udfylde datofelterne i formularen). Spørgsmålet er nu hvordan gør jeg nedenstående i en UPDATE-statement???
kolDato =""
dataDato =""
fodselsdat = Request.Form("fodselsdato")
stillingdato = Request.Form("stilling1startdato")
if fodselsdat <>"" then
fodselsdatous = split(fodselsdat,"-")
fodselsdat = fodselsdatous(2) & "-" & fodselsdatous(1) & "-" & fodselsdatous(0)
kolDato = kolDato & ", Fodselsdato"
dataDato = dataDato & ", #" & fodselsdat & "#"
end if
if stillingdato <>"" then
stillingdatous = split(stillingdato,"-")
stillingdato = stillingdatous(2) & "-" & stillingdatous(1) & "-" & stillingdatous(0)
kolDato = kolDato & ", Stilling_startdato"
dataDato = dataDato & ", #" & stillingdato & "#"
end if
connectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Stamdata.mdb")
Set forbindelse = Server.CreateObject("ADODB.Connection")
Set recordSet = Server.CreateObject("ADODB.recordSet")
forbindelse.Open connectionString, CONN_USER, CONN_PASS
strSQL = "INSERT INTO Medarbejder (Medarbejdernr,Medarbejdernavn,Stillingsnr" & kolDato & ") VALUES ('" & request.Form("medarbejdernr") & "', '" & request.Form("medarbejdernavn") & "', " & request.Form("stilling1") & "" & dataDato & ")"
forbindelse.Execute(strSQL)
02. oktober 2003 - 14:38
#1
fodselsdat = Request.Form("fodselsdato")
stillingdato = Request.Form("stilling1startdato")
i=0
if fodselsdat <>"" then
fodselsdatous = split(fodselsdat,"-")
fodselsdat = fodselsdatous(2) & "-" & fodselsdatous(1) & "-" & fodselsdatous(0)
kolDato = "Fodselsdato=#" & fodselsdat & "#"
end if
if stillingdato <>"" then
stillingdatous = split(stillingdato,"-")
stillingdato = stillingdatous(2) & "-" & stillingdatous(1) & "-" & stillingdatous(0)
kolDato = kolDato & ", Stilling_startdato = #" & stillingdato & "#"
end if
connectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Stamdata.mdb")
Set forbindelse = Server.CreateObject("ADODB.Connection")
Set recordSet = Server.CreateObject("ADODB.recordSet")
forbindelse.Open connectionString, CONN_USER, CONN_PASS
strSQL = "UPDATE Medarbejder SET " & kolDato & " where id = " request("id")
forbindelse.Execute(strSQL)
Dette burde virke.
Det kræver bare at du selv definere for hvilket id det skal updateres...
03. oktober 2003 - 08:50
#2
=> ellebaek
Nu ser min kode sådan her ud, men jeg får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.
/stamdata/medarbejder_redigering_godkend.asp, line 77
<%
CONST adOpenStatic = 3, adLockReadOnly = 1, adCmdText = &H0001
Dim connectionString, CONN_USER, CONN_PASS
Dim forbindelse
Dim strSQL
Dim fodselsdat, fodselsdatous, ansattelsesdato, ansattelsesdatous, fratradelsesdato, fratradelsesdatous
Dim proddato, proddatous, tjenestested1dato, tjenestested1datous
Dim tjenestested2dato, tjenestested2datous, stillingdato, stillingdatous
Dim kolDato, dataDato
Dim buffer
kolDato =""
dataDato =""
buffer = Session("medarbnummer")
fodselsdat = Request.Form("fodselsdato")
ansattelsesdato = Request.Form("ansattelsesdato")
fratradelsesdato = Request.Form("fratradelsesdato")
proddato = Request.Form("ophorproddato")
tjenestested1dato = Request.Form("tjenestested1startdato")
tjenestested2dato = Request.Form("tjenestested2startdato")
stillingdato = Request.Form("stilling1startdato")
if fodselsdat <>"" then
fodselsdatous = split(fodselsdat,".")
fodselsdat = fodselsdatous(2) & "-" & fodselsdatous(1) & "-" & fodselsdatous(0)
kolDato = kolDato & ", Fodselsdato=#" & fodselsdat & "#"
end if
if stillingdato <>"" then
stillingdatous = split(stillingdato,".")
stillingdato = stillingdatous(2) & "-" & stillingdatous(1) & "-" & stillingdatous(0)
kolDato = kolDato & ", Stilling_startdato=#" & stillingdato & "#"
end if
connectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Stamdata.mdb")
Set forbindelse = Server.CreateObject("ADODB.Connection")
forbindelse.Open connectionString, CONN_USER, CONN_PASS
strSQL = "UPDATE Medarbejder SET Medarbejdernr = '" & request.Form("medarbejdernr") & "', Medarbejdernavn = '" & request.Form("medarbejdernavn") & "', Telefonnr = '" & request.Form("telefonnr") & "', Mobiltelefonnr = '" & request.Form("mobilnr") & "', Emailadresse = '" & request.Form("email") & "', Seniorordning = '" & request.Form("seniorordning") & "', Halnr = '" & request.Form("tjenestested1") & "', Halnr1_gl = '" & request.Form("tjenestested2") & "', Stillingsnr = " & request.Form("stilling1") & ", Arbejdstidsnorm = '" & request.Form("arbejdstidsnorm") & "', Andel_synsproduktion = '" & request.Form("synsproduktion") & "', Ovrige_bemarkninger = '" & request.Form("ovrigebemarkninger") & "', " & kolDato & " WHERE Medarbejdernr = '" & buffer & "'"
forbindelse.Execute(strSQL)
03. oktober 2003 - 10:23
#3
=> ellebaek
Jeg havde skrevet et , for meget i min strSQL så nu virker det når man ændrer dato i datofelterne, men der er stadig et lille problem:
Hvis man vil slette datofeltet helt så det er tomt hvad dælen skal man så gøre?
Man kan jo ikke give datofelter ""
Men tak for hjælpen