Avatar billede krc_ Nybegynder
05. november 2003 - 10:35 Der er 18 kommentarer og
2 løsninger

Fejl i opdater database

# Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
Der opstod en eller flere fejl ved en OLE DB-handling på flere trin. Kontroller alle OLE DB-statusværdier. Handlingen blev ikke udført.
/test/lanparty_2004/tilmelding/update_entry.asp, line 37

# Side:
POST 120 bytes to /test/lanparty_2004/tilmelding/update_entry.asp

# POST Data:
navn=Kristian+Car%F8e&alias=%5BDZ%5D.headOn.&by=Kors%F8r&email=kristian%40darkzone.dk&ID_no=67&Submit=Opdater+tilmelding

Min update_entry ser således ud :
<%
'Dimension variables
Dim adoCon             'Holds the Database Connection Object
Dim rsUpdateEntry        'Holds the recordset for the record to be updated
Dim strSQL            'Holds the SQL query for the database
Dim lngRecordNo            'Holds the record number to be updated

'Read in the record number to be updated
lngRecordNo = CLng(Request.Form("ID_no"))

'Create an ADO connection odject
Set adoCon = Server.CreateObject("ADODB.Connection")

'Set an active connection to the Connection object using a DSN-less connection
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/krcDB.mdb")

'Create an ADO recordset object
Set rsUpdateEntry = Server.CreateObject("ADODB.Recordset")

'Initialise the strSQL variable with an SQL statement to query the database
strSQL = "SELECT testtabel.* FROM testtabel WHERE ID_no=" & lngRecordNo

'Set the cursor type we are using so we can navigate through the recordset
rsUpdateEntry.CursorType = 2

'Set the lock type so that the record is locked by ADO when it is updated
rsUpdateEntry.LockType = 3

'Open the tblComments table using the SQL query held in the strSQL varaiable
rsUpdateEntry.Open strSQL, adoCon

'Update the record in the recordset
rsUpdateEntry.Fields("navn") = Request.Form("navn")
rsUpdateEntry.Fields("alias") = Request.Form("alias")
rsUpdateEntry.Fields("by") = Request.Form("by")
rsUpdateEntry.Fields("email") = Request.Form("email")
rsUpdateEntry.Fields("betalt") = Request.Form("betalt")


'Write the updated recordset to the database
rsUpdateEntry.Update

'Reset server objects
rsUpdateEntry.Close
Set rsUpdateEntry = Nothing
Set adoCon = Nothing

'Redirect to the guestbook.asp page
Response.Redirect "view_db.asp"

%>

Og det er den her stump kode i min update_form.asp der driller :

<div align="center">
  <center>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="350" id="AutoNumber2">
    <tr>
      <td width="20%" align="center"><font face="Verdana" size="1">
      Betalt
      </td>
      <td width="80%" align="center">
         
      <%
      if rsGuestbook("betalt") then
      response.write("<input type='checkbox' name='betalt' checked >")
      else
      response.write("<input type='checkbox' name='betalt' >")
      end if
      %>
     
      </td>
               
    </tr>
  </table>
 
  </center>   
</div>


Jeg vil bare kunne ændre min checkbox og så gemme det.

Accessdatabasen har et felt der hedder betalt som er et sand/falsk med værdi som afkrydsningsbox. Hvad er der galt ?
Avatar billede dr_chaos Nybegynder
05. november 2003 - 10:42 #1
strSQL = "SELECT testtabel.* FROM testtabel WHERE ID_no=" & lngRecordNo
skal være
strSQL = "SELECT testtabel.* FROM testtabel WHERE ID_no=" & lngRecordNo & " "

prøv med:

if rs("betalt")= true then %>
<INPUT type="checkbox" id=checkbox1 name='betalt' checked>
<% else %>
<INPUT type="checkbox" id=checkbox1 name='betalt' >
<%end if %>
Avatar billede krc_ Nybegynder
05. november 2003 - 10:54 #2
Jeg tester lige om 10 minutter, men forklar lige hvorfor der skal være de ekstra ting på linien som du skriver ?
Avatar billede dr_chaos Nybegynder
05. november 2003 - 11:01 #3
hvis det er sql sætningen du mener så er det fordi den skal afsluttes korrekt.
Avatar billede krc_ Nybegynder
05. november 2003 - 11:12 #4
det er sql-sætningen jeg mener, men hvorfor skal der være & " " til sidst ?
Avatar billede dr_chaos Nybegynder
05. november 2003 - 11:22 #5
det er fordi den skal afsluttes korrekt.
du starter sql sætningen med et " og den skal afsluttes med et ".
du beder om at få ID_no=" & lngRecordNo & "
her skal den også afsluttes.
du bruger denne "&variabel&" notation til at marke hvilken en værdi der skal bruges til at hente data i databasen med.
hvis det var f.eks. et navn så skal man bruge:
'"&Strnavn&"'
Avatar billede krc_ Nybegynder
05. november 2003 - 11:22 #6
I update_entry.asp hedder sql-sætning nu :

strSQL = "SELECT testtabel.* FROM testtabel WHERE ID_no=" & lngRecordNo & " "

Og i update_form står der :

<div align="center">
  <center>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="350" id="AutoNumber2">
    <tr>
      <td width="20%" align="center"><font face="Verdana" size="1">
      Betalt
      </td>
      <td width="80%" align="center">
         
      <%if rsguestbook("betalt")= true then %>
      <INPUT type="checkbox" id=checkbox1 name='betalt' checked>
      <% else %>
      <INPUT type="checkbox" id=checkbox1 name='betalt' >
      <%end if %>     
      </td>
               
    </tr>
  </table>

Men jeg får stadig fejl. Den siger linie 37 i update_entry og her står :
rsUpdateEntry.Fields("betalt") = Request.Form("betalt")
Avatar billede dr_chaos Nybegynder
05. november 2003 - 11:35 #7
prøv med
if Request.Form("betalt") = true then
rsUpdateEntry.Fields("betalt") = on
else
rsUpdateEntry.Fields("betalt") = off
end if
Avatar billede krc_ Nybegynder
05. november 2003 - 11:36 #8
skal det være i min update_entry fil ? I stedet for

rsUpdateEntry.Fields("betalt") = Request.Form("betalt")

???
Avatar billede krc_ Nybegynder
05. november 2003 - 11:39 #9
Nu har jeg skiftet det ud i update_entry med den linie nævnt ovenfor.
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
Der er en syntaksfejl
/test/lanparty_2004/tilmelding/update_entry.asp, line 38, column 33
rsUpdateEntry.Fields("betalt") = on
Avatar billede a-torsten Nybegynder
05. november 2003 - 11:41 #10
Hvilken type i databasen er betalt..??

/Anders
Avatar billede krc_ Nybegynder
05. november 2003 - 11:46 #11
Det er Ja/Nej hvor der i format står sand/falsk og i opslag står der viskontrolelement = afkrydsningsfelt
Avatar billede a-torsten Nybegynder
05. november 2003 - 12:08 #12
Så skal du ændre

if Request.Form("betalt") = true then
rsUpdateEntry.Fields("betalt") = on
else
rsUpdateEntry.Fields("betalt") = off
end if

til

if Request.Form("betalt") = true then
rsUpdateEntry.Fields("betalt") = true
else
rsUpdateEntry.Fields("betalt") = false
end if
Avatar billede dr_chaos Nybegynder
05. november 2003 - 12:13 #13
tjaa det er også en mulighed men i min db bruger jeg on/off.
men det an være at der er forskel på at bruge en dansk udgave af access og en engelsk.
Avatar billede krc_ Nybegynder
05. november 2003 - 12:15 #14
næsten fantastisk......
Nu virker det halvt :o)
Hvis nu alle felter i databasen er sande så kan jeg fjerne den ved at fjerne afkrydsningen og trykke opdater...så bliver de rigtigt nok falske i databasen, MEN hvis jeg så siger jamen nu skal den være sand igen og sætter afkrydsningen og trykker opdater...så sker der intet...ingen fejl men heller ingen opdatering ???
Avatar billede krc_ Nybegynder
05. november 2003 - 14:37 #15
Ej kom nu drenge.....
Den opdaterer hvis jeg fjerne et kryds...
Ikke hvis jeg sætter et..
Avatar billede krc_ Nybegynder
05. november 2003 - 14:37 #16
Og så smid lige et svar også
Avatar billede dr_chaos Nybegynder
05. november 2003 - 18:35 #17
svar :)
Avatar billede krc_ Nybegynder
05. november 2003 - 18:59 #18
Du skal nok få point chaos, men du har ikke lige svaret på det sidste her ?
Avatar billede krc_ Nybegynder
06. november 2003 - 11:26 #19
Øv....
Avatar billede krc_ Nybegynder
06. november 2003 - 11:27 #20
a-torsten...
sig til hvis du vil have point..så opretter jeg er spgm til dig
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