Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
for at præcisere det skal selvfølgelig være i den/eller de felter brugeren ikke indtaster noget, at den vædi der stod der i forvejen skal blive stående :o)
skal du ikke fjerne den linie strSQL = strSQL & " Where ID = " & Request.Form("opgaveid") & "" og så bare tilføje den en gang efter at du er færdig med at teste.
en fejl i dit script er at du ikke skriver elseif inden at du begynder at teste, det burde se sådan her ud:
If strAnsvarlig <> "" Then strSQL = strSQL & "Ansvarlig= '" & Request.Form("ansvarlig") & "'," strSQL = strSQL & " Where ID = " & Request.Form("opgaveid") & "" ElseIf strForfaldsdato <> "" Then strSQL = strSQL & "Forfaldsdato= '" & Request.Form("forfaldsdato") & "'," strSQL = strSQL & " Where ID = " & Request.Form("opgaveid") & "" ElseIf strFlyt <> "" Then strSQL = strSQL & "refOpgavetyper= '" & Request.Form("flyt") & "'," strSQL = strSQL & " Where ID = " & Request.Form("opgaveid") & "" ElseIf strBruger <> "" Then strSQL = strSQL & "Bruger= '" & Request.Form("bruger") & "'," strSQL = strSQL & " Where ID = " & Request.Form("opgaveid") & "" ElseIf strOpgaverettelse <> "" Then strSQL = strSQL & "Opgave= '" & Request.Form("opgaverettelse") & "'" strSQL = strSQL & " Where ID = " & Request.Form("opgaveid") & "" End If
Det er ikke smart at bruge elsif i den sitation. Hvis man indtaster noget i eks både strAnsvarlig og StrFlyt så vil man kun komme ind Then delen til if strAnsvarlig <> "" og altig i strFlyt fordi den del er i else til alle de andre if'er så du skal lave X antal if sætniger...:
Du skal lave en ny streng updateSQL
updateSQL= "" If strAnsvarlig <> "" Then updateSQL = updateSQL & "Ansvarlig= '" & Request.Form("ansvarlig") & "'" end if
Sol du kan se har jeg fjernet et komma til sidst, samt fjerene Where delen, den kommer på til sidst. Sådan skal den første se. De andre er nød til at tjekke på om der er nogete i updateSQL og så indsætte komma sådan her: If strForfaldsdato <> "" Then if updateSQL <> "" then 'Indsæt komme efte updateSQL = updateSQL & ", " end if updateSQL = updateSQL & "Forfaldsdato= '" & Request.Form("forfaldsdato") & "'" end if
Så kan du tjekke om det er nødvendig at opdater:
if updateSQL <> "" then strSQL = "UPDATE tabel SET " & updateSQL & " WHERE ID = " & Request.Form("opgaveid") conn.execute(strSQL) end if
Jeg ved ikke om jeg gjorde det klart før, men det er for hver kolonne at den skal tjekke om der er indtastet data. Dvs. hvis det kun er i "ansvarlig" at brugeren ikke indtaster noget, så skal de andre felter stadig opdateres!
<% Response.Buffer = True %> <% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("opgave.mdb") Conn.Open DSN
If strAnsvarlig <> "" Then updateSQL = updateSQL & "Ansvarlig= '" & Request.Form("ansvarlig") & "'" end if
If strForfaldsdato <> "" Then if updateSQL <> "" then 'Indsæt komma efter updateSQL = updateSQL & ", " end if updateSQL = updateSQL & "Forfaldsdato= '" & Request.Form("forfaldsdato") & "'" end if
If strFlyt <> "" Then if updateSQL <> "" then 'Indsæt komma efter updateSQL = updateSQL & ", " end if updateSQL = updateSQL & "Forfaldsdato= '" & Request.Form("flyt") & "'" end if
If strBruger <> "" Then if updateSQL <> "" then 'Indsæt komma efter updateSQL = updateSQL & ", " end if updateSQL = updateSQL & "Forfaldsdato= '" & Request.Form("bruger") & "'" end if
If strOpgaverettelse <> "" Then if updateSQL <> "" then 'Indsæt komma efter updateSQL = updateSQL & ", " end if updateSQL = updateSQL & "Forfaldsdato= '" & Request.Form("opgaverettelse") & "'" end if
if updateSQL <> "" then strSQL = "UPDATE tblOpgave SET " & updateSQL & " WHERE ID = " & Request.Form("opgaveid") conn.execute(strSQL) end if
Conn.Execute(strSQL) Conn.Close Set Conn = Nothing %>
Ja det fylder lidt.. men sådan er det. Men du kalder execute to gange det er ikke nødvendig:
if updateSQL <> "" then strSQL = "UPDATE tblOpgave SET " & updateSQL & " WHERE ID = " & Request.Form("opgaveid") conn.execute(strSQL) '<---------- Første gang end if
Conn.Execute(strSQL) '<------------ Anden gang
Du kan slette den ene af dem, jeg vil forslå den anden så hvis man slet ikke indtaster noget få du ikke en SQL fejl.
Ok. Jeg troede ID var automatisk udfyldt, men OK. Du kan jo så også tjekke på ID eks vis ved at udhvide denne if:
if (updateSQL <> "") AND (Request.Form("opgaveid") <> "") then strSQL = "UPDATE tblOpgave SET " & updateSQL & " WHERE ID = " & Request.Form("opgaveid") conn.execute(strSQL) end if
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.