Avatar billede dj-sejler Praktikant
06. februar 2003 - 19:02 Der er 19 kommentarer og
1 løsning

opdater data i access database

Jeg har lavet nedenstående side som skulle have være en side til at rette/opdatere data i databasen... men det gør den ikke!
Det den gør er at lave en ny række med de rettede data med en ny "ID"

< - - siden er her - - >

<%
' 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 ("../../../../log/resultater.mdb")
Conn.Open DSN

' Hent fra databasen afhængig af værdien id fra URL
SQL = "Select * From Kalender Where Id = " & Request.Querystring("id")
Set rs = Conn.Execute(SQL)


    strDato = rs("Dato")
    strTitel = rs("Titel")
    strPris = rs("Pris")
    strTilmeld = rs("tilmeld")
    strLink = rs("Link")
    strBesk = rs("Besk")
%>

<table cellpadding=2 cellspacing=2 border=1 bordercolor=black class=format width="500">

 
  <tr>
    <td width="100%" colspan="3">
    <br>

<form method="POST" action="tilfoej.asp">
  <div align="center">
    <center>
    <table border="0" width="75%" cellspacing="0" cellpadding="0" height="223">
      <tr>
        <td width="100%" height="25"><%=strError%>
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Dato: (eks. 12-12-02)</font><br>
          <input type="text" name="Dato" size="28" class="box" tabindex="1" value="<%=strDato%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Titel:</font><br>
          <input type="text" name="Titel" size="28" class="box" tabindex="2" value="<%=strTitel%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Pris:</font><br>
          <input type="text" name="Pris" size="28" class="box" tabindex="3" value="<%=strPris%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Tilmeld:</font><br>
          <input type="text" name="Tilmeld" size="28" class="box" tabindex="4" value="<%=strTilmeld%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Link:</font><br>
          <input type="text" name="Link" size="28" class="box" tabindex="5" value="<%=strLink%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="62"><font face="Verdana" size="2">Beskrivelse af arrangementet:</font><br>
          <textarea rows="8" name="Besk" cols="45" class="scrollbarbox" tabindex="6">
          <%=strBesk%></textarea>
        </td>
      </tr>
      <tr>
        <td width="100%" height="46"><br>
          <input type="submit" value="  Send  " name="add" class="box" tabindex="7">&nbsp;&nbsp;
          <input type="button" value="  Fortryd  " name="Annuller" class="box" onClick="java script:location.href='medlem.asp'" tabindex="8">
        </td>
      </tr>
    </table>
    </center>
  </div>
</form>
<br></td></tr>
</table>

Håber der er nogen der lige kan hjælpe :)
Avatar billede soes Nybegynder
06. februar 2003 - 19:05 #1
hvis du lige viser den kode som opdatere databasen ville det nok hjaelpe lidt. Det eneste jeg kan se her er at du henter noget data ud fra din DB. Kan du vise filen tilfoj.asp
Avatar billede eagleeye Praktikant
06. februar 2003 - 19:06 #2
Din form blivre sent til din filføj side:

<form method="POST" action="tilfoej.asp">

Du skal nok havde lavet en ny fil opdater.asp som opdater databasen i stedet for indsætter.
Avatar billede dj-sejler Praktikant
06. februar 2003 - 19:47 #3
Det var lige en fejl...

< - - ret-form.asp - - >

<%
' 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 ("../../../../log/resultater.mdb")
Conn.Open DSN

' Hent fra databasen afhængig af værdien id fra URL
SQL = "Select * From Kalender Where Id = " & Request.Querystring("id")
Set rs = Conn.Execute(SQL)

    strid = rs("Id")
    strDato = rs("Dato")
    strTitel = rs("Titel")
    strPris = rs("Pris")
    strTilmeld = rs("tilmeld")
    strLink = rs("Link")
    strBesk = rs("Besk")


%>

<table cellpadding=2 cellspacing=2 border=1 bordercolor=black class=format width="500">

 
  <tr>
    <td width="100%" colspan="3">
    <br>

<form method="POST" action="ret-tilfoej.asp">
  <div align="center">
    <center>
    <table border="0" width="75%" cellspacing="0" cellpadding="0" height="223">
      <tr>
        <td width="100%" height="25"><%=strError%>
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">ID: </font> <%=strid%>
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Dato: (eks. 12-12-02)</font><br>
          <input type="text" name="Dato" size="28" class="box" tabindex="1" value="<%=strDato%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Titel:</font><br>
          <input type="text" name="Titel" size="28" class="box" tabindex="2" value="<%=strTitel%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Pris:</font><br>
          <input type="text" name="Pris" size="28" class="box" tabindex="3" value="<%=strPris%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Tilmeld:</font><br>
          <input type="text" name="Tilmeld" size="28" class="box" tabindex="4" value="<%=strTilmeld%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="25"><font face="Verdana" size="2">Link:</font><br>
          <input type="text" name="Link" size="28" class="box" tabindex="5" value="<%=strLink%>">
        </td>
      </tr>
      <tr>
        <td width="100%" height="62"><font face="Verdana" size="2">Beskrivelse af arrangementet:</font><br>
          <textarea rows="8" name="Besk" cols="45" class="scrollbarbox" tabindex="6">
          <%=strBesk%></textarea>
        </td>
      </tr>
      <tr>
        <td width="100%" height="46"><br>
          <input type="submit" value="  Send  " name="update" class="box" tabindex="7">&nbsp;&nbsp;
          <input type="button" value="  Fortryd  " name="Annuller" class="box" onClick="java script:location.href='medlem.asp'" tabindex="8">
        </td>
      </tr>
    </table>
    </center>
  </div>
</form>
<br></td></tr>
</table>


< - - ret-tilfoej.asp - - >

<%
If Request.Form("update") <> "" Then
    strError = ""
    strID = Trim(Request.Form("Id"))
    strDato = Trim(Request.Form("Dato"))
    strTitel = Trim(Request.Form("titel"))
    strPris = Trim(Request.Form("pris"))
    strTilmeld = Trim(Request.Form("tilmeld"))
    strLink = Trim(Request.Form("link"))
    strBesk = Trim(Request.Form("besk"))
    arr = split(strBesk," ")
    for i = lbound(arr) to ubound(arr)
    If Len(arr(i)) > 25 then
        strError = "Et ord må kun indeholle 25 tegn!"
    End If
    next
    If Len(strDato) = 0 Then
        strError = "Du skal skrive en dato!"
    ElseIf Len(strTitel) = 0 Then
        strError = "Du skal skrive en titel!"
    ElseIf Len(strPris) = 0 Then
        strError = "Du skal skrive en pris!"
    ElseIf Len(strTilmeld) = 0 Then
        strError = "Du skal skrive hvem man skal tilmelde sig til!"
    ElseIf Len(strBesk) = 0 Then
        strError = "Du skal skrive lidt om arrangementet!"
    End If
        If Len(strError) = 0 Then

        Set rs = Server.CreateObject("ADODB.Recordset")
        strSQL = "SELECT * FROM kalender WHERE Id = " & Request.Querystring("id")
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../../../../log/resultater.mdb")
        rstemp.Open strSQL, strDSN, 1, 3
        If (rs.BOF Or rs.EOF) Then
            rs.AddNew
            rs("ID") = RemoveHTML(strID)
            rs("Dato") = RemoveHTML(strDato)
            rs("Titel") = RemoveHTML(strTitel)
            rs("Pris") = RemoveHTML(strPris)
            rs("Tilmeld") = RemoveHTML(strTilmeld)
            rs("Link") = RemoveHTML(strLink)
            rs("Besk") = Replace(RemoveHTML(strBesk), vbCrLf, "<br>")
            rs.Update
        End If
        rs.Close
        Set rs = Nothing
        Response.Redirect("kalender.asp")
    Else
        strError = "<p><font face=verdana size=1 color=#FFFFFF><b>"& strError &"</b></font></p>"
        strMode = "add"
    End If
End If
%>
Avatar billede eagleeye Praktikant
06. februar 2003 - 19:51 #4
Du skal som bare fjerne denne ene linie

          rs.AddNew

Det gør dun laver en ny record
Avatar billede eagleeye Praktikant
06. februar 2003 - 19:51 #5
Fra filen  ret-tilfoej.asp  naturligvis.
Avatar billede dj-sejler Praktikant
06. februar 2003 - 19:54 #6
hmm... der er også noget andet galt...
når jeg submitter siger den der er fejl med side og ikke kan vises :(
Avatar billede eagleeye Praktikant
06. februar 2003 - 19:55 #7
Hvis ID er autonummer så skal denne linie ikke med:

rs("ID") = RemoveHTML(strID)
Avatar billede eagleeye Praktikant
06. februar 2003 - 19:56 #8
Prøv at slå denne fra vælg i menuen, så skulle du gerne få en bedre fejl kode/beskrivelse:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "ved meddelelse om uskadelige http-fejl"
Avatar billede dj-sejler Praktikant
06. februar 2003 - 20:01 #9
jo det hjalp

fejlen er:

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Id ='.

/best/login/kalender/ret-tilfoej.asp, line 33

og linie 33 er:
rs.Open strSQL, strDSN, 1, 3
Avatar billede dj-sejler Praktikant
06. februar 2003 - 20:02 #10
jeg har rettet at der står rstemp til rs
Avatar billede eagleeye Praktikant
06. februar 2003 - 20:08 #11
Prøv at rette denne linie i ret-form.asp :

<form method="POST" action="ret-tilfoej.asp">

Så den overføre ID på brugeren til filen.:

<form method="POST" action="ret-tilfoej.asp?id=<%=rs("id")%>">
Avatar billede dj-sejler Praktikant
06. februar 2003 - 20:10 #12
Det ser ud til at virke :) Takker
Avatar billede eagleeye Praktikant
06. februar 2003 - 20:10 #13
Alternativt til id via action: Du kan også overføre ID med formen ved at tilføje et hidden felt med ID:

<input type="hidden" name="id" value="<%=rs("id")%>">

Så kan du rettte denne liniei ret-tilfoej.asp :
strSQL = "SELECT * FROM kalender WHERE Id = " & Request.Querystring("id")

til:
strSQL = "SELECT * FROM kalender WHERE Id = " & Request.Form("id")
Avatar billede dj-sejler Praktikant
06. februar 2003 - 20:19 #14
Hvis man nu skal slette en række istedet for at opdatere hvordan gør man så det?
Avatar billede dj-sejler Praktikant
06. februar 2003 - 20:26 #15
--> eagleeye
Jeg var sku for hurtig... den retter ikke, den gemmer bare det gamle!
Avatar billede eagleeye Praktikant
06. februar 2003 - 20:51 #16
Det kan være du skal havde en rs.Update ind hvor der var rs.AddNew

        If (rs.BOF Or rs.EOF) Then
            rs.Update
            rs("ID") = RemoveHTML(strID)
            rs("Dato") = RemoveHTML(strDato)
            rs("Titel") = RemoveHTML(strTitel)
Avatar billede dj-sejler Praktikant
06. februar 2003 - 23:05 #17
Nej... det virker heler ikke :(
Der er ingen fejl eller noget... den opdatere bare ikke
Avatar billede eagleeye Praktikant
06. februar 2003 - 23:26 #18
Jeg har lige kigget lidt der mangler et NOT i denne if sætning:

If (rs.BOF Or rs.EOF) Then

Rettes til:

If NOT (rs.BOF Or rs.EOF) Then
Avatar billede dj-sejler Praktikant
07. februar 2003 - 09:23 #19
Jeg får en mismatch i linie 36

linie 36 --> rs("ID") = RemoveHTML(strID)

Så slettede jeg RemoveHTML()
Men får samme fejl!

linie 36 --> rs("ID") = strID
Avatar billede dj-sejler Praktikant
07. februar 2003 - 15:51 #20
Jeg har klaret det... :)
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