Avatar billede ducode Nybegynder
31. januar 2002 - 13:40 Der er 24 kommentarer og
1 løsning

Problem med update af felter i database...

jeg har lavet følgende kode, men den virker ikke helt...
kan nogen af jer se hvad der evt er galt ?

<% Response.buffer = true %>
<% if mode = "" then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Data/DataBank.mdb") & ";UID=admin;PWD=;"
Set rs = Server.CreateObject("ADODB.RecordSet")

strSQL = "Select * from subcat where SubcatID =" & Request.Querystring("SubcatID") & ""
rs.Open strSQL, Conn, 1, 3
%>
<font face="Tahoma" size="2"> </font>
<form method="post" action="Lartret.asp?mode=update">
<table width="317" border="0" cellspacing="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<td class="skrift" width="154" valign="top" height="22">
<font face="Tahoma" size="2">Artikel:</font></td>
<td height="22" width="152">
<font face="Tahoma">
<input type="text" name="Subcatname" maxlength="100" class="bottom" value="<%=rs("Subcatname")%>" size="28"></font></td>
</tr>
<tr>
<td class="skrift" width="154" valign="top" height="11">
<font face="Tahoma" size="2">Oprettet af:</font></td>
<td height="11" width="152">
<font face="Tahoma">
<input name="addby" maxlength="100" class="bottom" value="<%=rs("addby")%>" size="28"></font></td>
</tr>
<tr>
<td class="skrift" width="154" valign="top" height="6">
<font face="Tahoma" size="2">Brødtext:</font></td>
<td height="6" width="152">
    <textarea cssfil="main.css" picmappe="billeder" style="behavior:url(ae/ae.htc)" name="denmark" rows="1" cols="20"><%=rs("denmark")%></textarea></td>
</tr>
<tr>
<td class="skrift" width="154" valign="top" height="3">
<font face="Tahoma" size="2">kategori:</font></td>
<td height="3" width="152">
<font face="Tahoma">
<input name="Catid" maxlength="100" class="bottom" value="<%=rs("catid")%>" size="28"></font></td>
</tr>
<tr>
<td class="skrift" width="154" valign="top" height="2">
<font face="Tahoma" size="2">LinkDolink</font></td>
<td height="2" width="152">
<font face="Tahoma">
<input name="link" maxlength="100" class="bottom" value="<%=rs("link")%>" size="28"></font></td>
</tr>
<tr>
<td class="skrift" width="306" valign="top" height="1" colspan="2">
</td>
</tr>
</table>
<font face="Tahoma">
<input type="text" name="subcatid" value="<%=rs("subcatID")%>" size="20">
</font>
<p align="center">
<font face="Tahoma"><font size="2">
<br>
</font>
<input type="submit" value="Ret" name="knap" class="bottom"><font size="2">
</font>
<font size="2">&nbsp;</p>
</form>
<%
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
end if %> </font></font>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</div>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="85%" id="AutoNumber2">
<tr>
<td width="100%"></td>
</tr>
</table>
</center>
</div></td>
</tr>
</table>
</td>
            </tr>
          </table>
          </center>
        </div>
        </td>
        <td width="142" class="LblueU" valign="top"><!-- #include file="incwork/ushow/Ushow.asp"-->&nbsp;</td>
      </tr>
    </table>
    </td>
  </tr>
</table>
</td>
</tr>
</table>
</center>
</div>

<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="760" id="AutoNumber20" height="36">
    <tr>
      <td width="100%" height="36" valign="top">
      <p align="center"><!-- #include file="incwork/Bottom/bottom.asp"--></td>
    </tr>
  </table>
  </center>
</div>
<% if mode = "Update" then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data/databank.mdb") & ";UID=admin;PWD=;"
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From subcat where SubcatID =" & Request.form("SubcatID") & ""
rs.Open strSQL, Conn, 1, 3

rs.update
rs("Subcatname") = Request.form("subcatname")
rs("addby") = Request.form("addby")
rs("denmark") = Request.form("denmark")
rs("Catid") = Request.form("Catid")
rs("link") = Request.form("link")
rs.update

rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing

Response.Redirect "default.asp"
end if%>
Avatar billede bredum Nybegynder
31. januar 2002 - 13:42 #1
har du husket at få skrive læse rettigheder i mappen data??
Avatar billede ducode Nybegynder
31. januar 2002 - 13:43 #2
Ja, databasen virker fint, det er koden som det er galt med...
Avatar billede ducode Nybegynder
31. januar 2002 - 13:44 #3
har en database med over 20 tabeller og ja kan sagten tilføje nye ting, kan bare ikke få dette "Rette" script til at virke :-(
Avatar billede coltau Juniormester
31. januar 2002 - 13:45 #4
Hva' er fejlmeddelelsen ?
Avatar billede ducode Nybegynder
31. januar 2002 - 13:47 #5
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'SubcatID ='.
/Jmptcats/Lartret.asp, line 179


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)

Page:
POST 20363 bytes to /Jmptcats/Lartret.asp

POST Data:
Subcatname=Botter&addby=&denmark=%3Cdiv+align%3D%22center%22%3E%0D%0A++%3Ccenter%3E++%3Ctable+border%3D%220%22+cellpadding%3D%220%22+cellspacing%3D%220%22+style%3D%22border-collapse%3A+collapse%22+wid . . .

Time:
Avatar billede coltau Juniormester
31. januar 2002 - 13:48 #6
Variablen "mode" bliver ikke sat til noget. Jeg vil tro du mangler denne linie i starten:
mode = Request.Querystring("mode")
Avatar billede rou Nybegynder
31. januar 2002 - 13:54 #7
ikke just et svar, men et godt råd...

lav en fil du evt. kalder dbopen.asp som laver din db forbindelse og deklarerer variable som er nødvendige for dette.
Eventuelt i en funktion hvis du vil.

Så inkluderer du denne i starten af dine asp filer, og en lign. dbclose.asp i bunden.

Derved undgår du en masse unødig og svært læseligt kode, i hver fil. desuden har du nu et kæmpe rette arbejde hvis du flytter databasen.

dbOpen kan for dig se således ud:

<%
Dim Conn, RS

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Data/DataBank.mdb") & ";UID=admin;PWD=;"
Set rs = Server.CreateObject("ADODB.RecordSet")
%>

.. og dbClose.asp :

<%
Set RS = Nothing
Conn.Close
Set Conn = Nothing
%>

god fornøjelse :)

- Rou
Avatar billede ducode Nybegynder
31. januar 2002 - 13:55 #8
Har jeg rant faktisk prøvet med...
<%
mode = Request.Querystring("mode")
Response.Buffer = True
%>

men det hgjælper ikke så meget når jeg trykke på ret knappen bliver alle felter fjernet, og jeg bliver ikke Redirected til default.asp - tingene bliver heller ikke opdateret i Db :-/
Avatar billede coltau Juniormester
31. januar 2002 - 13:55 #9
Ok. ! Ovennævnte var før jeg så fejlmeddelelsen. mode bliver sikert initialiseret i de linier vi ikke ser.
Syntax-fejlen tyder på at variablen: Request.Querystring("SubcatID") er blank. ! - men det har du nok undersøgt.

strSQL = "Select * from subcat where SubcatID =" & Request.Querystring("SubcatID") & ""
Avatar billede ducode Nybegynder
31. januar 2002 - 13:58 #10
Rou -->> øhh ?
Problemet er jeg ikke kan opdatere mine felter, kan sagten finde ud af at kode asp normalt:-)
Avatar billede ducode Nybegynder
31. januar 2002 - 14:02 #11
Lartret.asp?subcatid=109
i adresse feltet står ovenstående fra starten

Når jeg så trykke Ret står der
Lartret.asp?mode=update

- kan det være noget med gemme/update ikke kan finde ud af hvilke felter den skal opdatere ?? - evt hvad skal jeg lave om for det kommer til at virke ?
Avatar billede coltau Juniormester
31. januar 2002 - 14:05 #12
i de sidste par linier står der følgende:

rs.update
rs("Subcatname") = Request.form("subcatname")
rs("addby") = Request.form("addby")
rs("denmark") = Request.form("denmark")
rs("Catid") = Request.form("Catid")
rs("link") = Request.form("link")
rs.update

Prøv at fjerne det første rs.Update
Hvis du vil indsætte en ny post skal der i stedet for stå rs.AddNew
Avatar billede ducode Nybegynder
31. januar 2002 - 14:08 #13
har lige lavet en test - så ik kan se hvad det er som sker....
http://80.62.254.73/New_Havnekontor/test.asp?subcatid=109
Avatar billede rou Nybegynder
31. januar 2002 - 14:09 #14
Ok, så burde du vel også kunne se at når du vil rette et item så sender du din ID i querystring.
Denne gemmer du så i et input field for at få det videre, i en form som benytter POST metoden..

Du forsøger at hente denne ID ud via Request.QueryString, både første og anden gang.

Prøv med bare Request() istedet, det skulle løse dit problem.

- Rou
Avatar billede ducode Nybegynder
31. januar 2002 - 14:12 #15
coltau-->> der er stadig samme problem efter det er gjort.
Avatar billede coltau Juniormester
31. januar 2002 - 14:16 #16
Så er der også problemet som rou's nævner.

Nedenstående giver ikke noget resultat
Request.Querystring("SubcatID")
Det skal være:
Request.Form("SubcatID")

Men du skal stadivæk fjerne den første: rs.Update
Avatar billede ducode Nybegynder
31. januar 2002 - 14:16 #17
rou-->> anden gang henter jeg ikke id via en Qsting, men via et felt hvor id'et er skrevet ud
Avatar billede ducode Nybegynder
31. januar 2002 - 14:18 #18
coltau...

den se ud som følgende nu...
men det giver satdig problemer som du kan se på den test side jeg gav adr tidligere

<% if mode = "Update" then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data/databank.mdb") & ";UID=admin;PWD=;"
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * from subcat where SubcatID =" & Request.form("SubcatID") & ""
rs.Open strSQL, Conn, 1, 3

rs("Subcatname") = Request.form("subcatname")
rs("addby") = Request.form("addby")
rs("denmark") = Request.form("denmark")
rs("Catid") = Request.form("Catid")
rs("link") = Request.form("link")
rs.update

rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing

Response.Redirect "default.asp"
end if%>
Avatar billede rou Nybegynder
31. januar 2002 - 14:20 #19
Ok, my bad. Jeg læste ikke din Update kode i bunden.
Det ville måske være lidt mere overskueligt, hvis du hentede den ID ind i en variable i toppen af siden.

Coltau har desuden fat i noget der, men den ekstra Update.

- Rou
Avatar billede ducode Nybegynder
31. januar 2002 - 14:25 #20
rou -->> hvordan ?
Avatar billede coltau Juniormester
31. januar 2002 - 14:28 #21
Jeg har prøvet din testside. Når jeg trykker submit og kikker html'en ser det ud som om den glemmer alt om udskrivning af felter, hvilket kunne tyde på at der opstår en fejl lige efter første SQL-sætning.

strSQL = "Select * from subcat where SubcatID =" & Request.Querystring("SubcatID") & ""
rs.Open strSQL, Conn, 1,

Her skal Request.Querystring("SubcatID") også ændres til Request.Form("SubcatID") ellers bliver rs.EOF = true og så fejler den første gang du bruger rs("feltnavn")
Avatar billede coltau Juniormester
31. januar 2002 - 14:33 #22
Glem ovenstående - det er først nu jeg kan se hvordan siden skal virke.

I denne sætning er update med lille
<form method="post" action="Lartret.asp?mode=update">
og i denne sætning er update med stort
<% if mode = "Update" then
Avatar billede ducode Nybegynder
31. januar 2002 - 14:36 #23
vi taler om den i update lige nu - right ?
Avatar billede ducode Nybegynder
31. januar 2002 - 14:36 #24
ok, retter det lige...
Avatar billede ducode Nybegynder
31. januar 2002 - 14:41 #25
nu virker det faktisk :)
Mange tak fodi du ville hjælpe coltau
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