Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 11:50 Der er 19 kommentarer og
2 løsninger

Access database, Ja/Nej og checkbokse

Jeg har hentet en Ja/Nej værdi fra et felt i en Access database og viser den i en opdateringsformular med følgende kode:

<% If RS("status") = True Then %>
  <input type="checkbox" name="status" value="Ja" checked>
<% Else %>
  <input type="checkbox" name="status" value="Nej">
<% End If %>

Det går fint.
Når brugeren så klikker på opdateringsknappen, sendes formulardataene til et script som så opdaterer database, her vist i uddrag:

status = Request.Form("status")
    Set Con = Server.CreateObject("ADODB.Connection")
    Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\server\mappe\database.mdb"
    SQLEditArtikel="UPDATE Artikler SET opdateret_af = '" & brugernavn & "' , opdateret_d = '" & Now & "', titel = '" & titel & "', beskrivelse = '" & beskrivelse & "',  resume = '" & resum & "', hardware_id = '" & hardware_id & "', kategori = '" & kategori & "', link = '" & link & "', status = '" & status & "' WHERE artikler_id = " & artikler_id
Con.Execute( SQLEditArtikel )
Con.Close
Set Con = Nothing

Når jeg kører ovenstående, kommer følgende fejl:

Error Type:
Microsoft JET Database Engine (0x80040E07)
Data type mismatch in criteria expression.
/helpdesk/editartikel1.asp, line 19

Linie 19 i den omtalte fil, er der hvor opdateringsqueryen køres.

Spørgsmålet er:
Hvad skal jeg skrive i koden for at data "er af samme type"?
Ja/Nej, True/False, 0/1?
Avatar billede medions Nybegynder
10. oktober 2002 - 11:52 #1
<% If CStr(RS("status")) = CStr("True") Then %>
  <input type="checkbox" name="status" value="Ja" checked>
<% Else %>
  <input type="checkbox" name="status" value="Nej">
<% End If %>

//>Rune
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 11:57 #2
Ikke helt, medions, sagen er den, at når brugeren klikker på knappen, sendes værdien af checkboksen til et opdateringsscript, som opdaterer databasen, men den værdi som <input type="checkbox" name="status" value="Ja" checked> sender, kan det ikke forstå, det resulterer i den beskrevne fejlmeddelelse.
Avatar billede benson Nybegynder
10. oktober 2002 - 11:59 #3
Hmmm !

Jeg mener at have løbet ind i noget med at værdien skal gemmes som Sand/Falsk !!!

....
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 11:59 #4
altså, value="ja" skal ændres til en værdi der passer i en Access databases "Ja/Nej" checkbox
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 11:59 #5
Sand/Falsk? Prøver det lige en gang....brb....
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 12:01 #6
Hmmm......heller ikke
Avatar billede benson Nybegynder
10. oktober 2002 - 12:03 #7
HAR du prøvet med True/False

Da det er en boolean felt i acces database, skal du huske ikke at gemme værdien som en tekst dvs. ikke indlejet som 'True' , men uden disse gnyffer '

True er jo en værdi og ikke en tekst !

Benson
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 12:05 #8
Du mener at prøve med
<input type="checkbox" name="status" value=True checked>
Avatar billede benson Nybegynder
10. oktober 2002 - 12:07 #9
Nej jeg mener du skal prøve dette !

<input type="checkbox" name="status" value="True" checked>

SQLEditArtikel="UPDATE Artikler SET opdateret_af = '" & brugernavn & "' , opdateret_d = '" & Now & "', titel = '" & titel & "', beskrivelse = '" & beskrivelse & "',  resume = '" & resum & "', hardware_id = '" & hardware_id & "', kategori = '" & kategori & "', link = '" & link & "', status = " & status & " WHERE artikler_id = " & artikler_id

bemærk jeg har fjernet gnyfferne omkring status !
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 12:12 #10
Yeah, men der får jeg bare denne fejlmeddelelse:

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in UPDATE statement.
/helpdesk/editartikel1.asp, line 19
Avatar billede benson Nybegynder
10. oktober 2002 - 12:14 #11
Prøv med Sand/falsk !

Hvis det ikke virker, så prøv med gnyfferne igen !

Jeg prøver lige at dykke ned i noget af min kode.....
Avatar billede benson Nybegynder
10. oktober 2002 - 12:16 #12
Hmmmm ! Jeg er jo gammel SQL type !

Og i SQL 7 findes der ingen sand/falsk, True/False felter, så derfor bruger jeg kun tekst felter "True"/"False"

Du skal jo ikke bruge mere kode for at gøre det på den måde ! Og så er du fri for at tænke på hvilket sprog Acces er fra, eller om du på et tidspunkt vil konvertere din db til SQL !!!!

løsningen ...............



Benson
Avatar billede eagleeye Praktikant
10. oktober 2002 - 12:43 #13
for en checkbox skal i Access database skal du bruge True/False eller du kan bruge 1/0, der skal ikke ' omkring i SQL så feltet skal betraktes som et tal.

Det er fuldstændig ligemeget hvordan din checkbox ser ud i HTML koden, da du kun får overført en værdi for checkboxen hvis der er krysds i den..:

<input type="checkbox" name="status" value="True" checked>

i kode som opdater din database..:

if request.form("status") = "" then
  status = false
else
  status = true
end if

SQLEditArtikel="UPDATE Artikler SET opdateret_af = '" & brugernavn & "' , opdateret_d = '" & Now & "', titel = '" & titel & "', beskrivelse = '" & beskrivelse & "',  resume = '" & resum & "', hardware_id = '" & hardware_id & "', kategori = '" & kategori & "', link = '" & link & "', status = " & status & " WHERE artikler_id = " & artikler_id
Avatar billede eagleeye Praktikant
10. oktober 2002 - 12:47 #14
Hvilken type er opdateret_d ??? hvis det er dato/tid format så tror jeg at den vil fejle med ' omkrning du kan bruge den indbygged now() i Access eller skal der # omkring i SQL sætningen.

SQLEditArtikel="UPDATE Artikler SET opdateret_af = '" & brugernavn & "' , opdateret_d = Now(), titel = '" & titel & "', beskrivelse = '" & beskrivelse & "',  resume = '" & resum & "', hardware_id = '" & hardware_id & "', kategori = '" & kategori & "', link = '" & link & "', status = " & status & " WHERE artikler_id = " & artikler_id
Avatar billede benson Nybegynder
10. oktober 2002 - 12:51 #15
eagleeye> Ja man kan jo stirre sig blind på meget ! Godt set ! Det er i hvert fald en oplagt fejlmulighed, såfremt det ikke er et tekstfelt !
Avatar billede benson Nybegynder
10. oktober 2002 - 12:52 #16
eagleeye> Og jeg mente at jeg havde stirret mig blind på true/false !! :-)
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 12:56 #17
opdateret_d er som et datofelt, men giver ingen problemer i databasen. Det hele har kørt ok, indtil jeg skulle tilføje "status" feltet
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 12:57 #18
Det der er problemet, som du også siger, er at jeg ikke får overført værdien af checkboksen, med mindre der er sat kryds i den...
Avatar billede eagleeye Praktikant
10. oktober 2002 - 13:01 #19
Ok det med dato kunne være en fejl mulighed, men hvis det virker uden checkboxen så prøv at indføre den if sætning jeg har vist i mit svar.
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 13:08 #20
Vi er ved at nærme os kraftigt!
Med denne kode i formularen

  <%
If RS("status") = True Then
  Response.Write "<input type='checkbox' name='status' value='True' checked>"
Else
  Response.Write "<input type='checkbox' name='status'>"
End If 
  %>

Og denne i opdateringsscriptet
  if request.form("status") = "" then
    status = false
  else
    status = true
  end if
    SQLEditArtikel="UPDATE Artikler SET opdateret_af = '" & brugernavn & "' , opdateret_d = '" & Now & "', titel = '" & titel & "', beskrivelse = '" & beskrivelse & "',  resume = '" & resum & "', hardware_id = '" & hardware_id & "', kategori = '" & kategori & "', link = '" & link & "', status = " & status & " WHERE artikler_id = " & request("artikler_id")

Problemet med koden er, at hvis der ikke er sat kryds i status (når den hentes fra databasen), vil den aldrig overføre en værdi til opdateringsscriptet, da RS("status") ikke skifter værdi, uanset om man sætter hak i checkboksen eller ej! What to do, what to do? :(
Avatar billede dougheffernan Nybegynder
10. oktober 2002 - 13:16 #21
OH MY GOD! Ligger og slås med cache-problemer på siderne også!!! :( :( :(
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