Avatar billede monstermand Nybegynder
15. juni 2002 - 09:52 Der er 13 kommentarer og
1 løsning

Hvad gør jeg hvis...

...jeg gerne vil have at databasen ikke blive opdateret i netop det felt hvor brugeren ikke indtaster noget? Jeg har prøvet noget i den retning:

<% 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

strAnsvarlig = Request.Form("ansvarlig")
strForfaldsdato = Request.Form("forfaldsdato")
strFlyt = Request.Form("flyt")
strBruger = Request.Form("bruger")
strOpgaverettelse = Request.Form("opgaverettelse")
strID = Request.Form("opgaveid")

strSQL = "Update tblOpgave set "


If strAnsvarlig <> "" Then
    strSQL = strSQL & "Ansvarlig= '" & Request.Form("ansvarlig") & "',"
    strSQL = strSQL & " Where ID =  " & Request.Form("opgaveid") & ""
If strForfaldsdato <> "" Then
    strSQL = strSQL & "Forfaldsdato= '" & Request.Form("forfaldsdato") & "',"   
    strSQL = strSQL & " Where ID =  " & Request.Form("opgaveid") & ""
If strFlyt <> "" Then
    strSQL = strSQL & "refOpgavetyper= '" & Request.Form("flyt") & "',"
    strSQL = strSQL & " Where ID =  " & Request.Form("opgaveid") & ""
If strBruger <> "" Then
    strSQL = strSQL & "Bruger= '" & Request.Form("bruger") & "',"
    strSQL = strSQL & " Where ID =  " & Request.Form("opgaveid") & ""
If strOpgaverettelse <> "" Then   
    strSQL = strSQL & "Opgave= '" & Request.Form("opgaverettelse") & "'"
    strSQL = strSQL & " Where ID =  " & Request.Form("opgaveid") & ""
End If


Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
%>

<html>
<head>
<title>ret</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="0; URL=administrator.asp">
</head>
<body>
</body>
</html>

men så får jeg fejlmeddelelsen :

Error Type:
Microsoft VBScript compilation (0x800A03F6)
Expected 'End'
/ret.asp, line 51


hvad gør jeg... jeg er ikke supersej til ASP :o(
Avatar billede monstermand Nybegynder
15. juni 2002 - 09:59 #1
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)
Avatar billede soes Nybegynder
15. juni 2002 - 10:17 #2
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

/Søren Sønderegård
Avatar billede soes Nybegynder
15. juni 2002 - 10:18 #3
man kunne nok godt have bygget siden op på en lidt anden måde, men det er op til dig :o)

/Søren Søndergård
Avatar billede monstermand Nybegynder
15. juni 2002 - 10:48 #4
jeg er åben overfor forslaf om at bygge den op på en anden måde - jeg ved enmlig ikke hvordan man ellers skulle gøre..
Avatar billede monstermand Nybegynder
15. juni 2002 - 10:54 #5
det virker stadig ikke - jeg får samme fejlmeddelelse..hmm
Avatar billede eagleeye Praktikant
15. juni 2002 - 11:10 #6
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
Avatar billede monstermand Nybegynder
15. juni 2002 - 11:19 #7
2 sek så prøver jeg lige at sætte den sammen efter din form.
Avatar billede monstermand Nybegynder
15. juni 2002 - 12:36 #8
Er det sådan her det skal se ud?

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

strAnsvarlig = Request.Form("ansvarlig")
strForfaldsdato = Request.Form("forfaldsdato")
strFlyt = Request.Form("flyt")
strBruger = Request.Form("bruger")
strOpgaverettelse = Request.Form("opgaverettelse")
strID = Request.Form("opgaveid")

updateSQL= ""

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
%>

<html>
<head>
<title>ret</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="0; URL=administrator.asp">
</head>
<body>
</body>
</html>

???
Avatar billede monstermand Nybegynder
15. juni 2002 - 12:44 #9
DET VIRKER...så må jeg igang med næste projekt
Avatar billede eagleeye Praktikant
15. juni 2002 - 12:51 #10
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.
Avatar billede monstermand Nybegynder
15. juni 2002 - 13:15 #11
tak :o)

hvis du hænger på kommer jeg snart med endnu en ASP udfordring i et nty sprøgsmål
Avatar billede monstermand Nybegynder
15. juni 2002 - 13:18 #12
man kan ikke lade helt være med at indtaste noget. ID (Request.Form("opgaveid") ) skal udfyldes. Hvad kan jeg gøre for at undgå det?
Avatar billede eagleeye Praktikant
15. juni 2002 - 13:34 #13
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
Avatar billede monstermand Nybegynder
15. juni 2002 - 13:59 #14
tak for hjælpen :o)
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