Avatar billede mvk Nybegynder
14. juni 2002 - 10:17 Der er 14 kommentarer og
1 løsning

Delete record sletter første record i database ?

jeg har lavet en deleteform så jeg kan slette records i min database [access] - men når jeg sletter en record er det den første i tabellen og ikke den record jeg har valgt - pls help!
http://www.fzy.dk/remove.asp
når du har slettet en kategory bliver du smidt videre til en search side - der kan du se at den første record i genre er blevet slettet ...?
hvad gør jeg forkert
[jeg bruger Dreamweaver MX til dette, jeg har ikke forstand på asp]
Avatar billede mvk Nybegynder
14. juni 2002 - 10:17 #1
dette er koden på server behavior:
<form ACTION="<%=MM_editAction%>" METHOD="POST" name="genreform" id="genreform">
        <table width="75%" border="0">
          <tr>
            <td>genre</td>
            <td> <select name="genre_listmenu" size="1" id="genre_listmenu">
                <%
while (!genre.EOF) {
%>
                <option value="<%=(genre.Fields.Item("Genre").Value)%>"><%=(genre.Fields.Item("Genre").Value)%></option>
                <%
  genre.MoveNext();
}
if (genre.CursorType > 0) {
  if (!genre.BOF) genre.MoveFirst();
} else {
  genre.Requery();
}
%>
              </select></td>
            <td> <input type="submit" name="Submit" value="Delete"></td>
          </tr>
        </table>
        <input type="hidden" name="MM_delete" value="genreform">
        <input type="hidden" name="MM_recordId" value="<%= genre.Fields.Item("Genre").Value %>">
      </form>
Avatar billede webbe Nybegynder
14. juni 2002 - 10:25 #2
Hvordan ser din delete-sql ud?

Noget kunne tyde på, at du ikke har variablen med det id du vil slette med og derfor tager den bare den første og sletter.

sql'en ville normalt se således ud:

sql = "DELETE FROM table WHERE Id="&request.form("id")

jeg tror din sql ser således ud:

sql = "DELETE FROM table"
Avatar billede mvk Nybegynder
14. juni 2002 - 10:57 #3
sådan ser mit script ud: (siger det dig noget ?
// *** Delete Record: construct a sql delete statement and execute it

if (String(Request("MM_delete")) != "undefined" &&
    String(Request("MM_recordId")) != "undefined") {

  // create the sql delete statement
  MM_editQuery = "delete from " + MM_editTable + " where " + MM_editColumn + " = " + MM_recordId;

  if (!MM_abortEdit) {
    // execute the delete
    var MM_editCmd = Server.CreateObject('ADODB.Command');
    MM_editCmd.ActiveConnection = MM_editConnection;
    MM_editCmd.CommandText = MM_editQuery;
    MM_editCmd.Execute();
    MM_editCmd.ActiveConnection.Close();

    if (MM_editRedirectUrl) {
      Response.Redirect(MM_editRedirectUrl);
    }
  }

}
Avatar billede webbe Nybegynder
14. juni 2002 - 11:01 #4
Ikke meget....det er Dreamweaver-kode....ikke det letteste at rette i hånden...derfor laver jeg selv alt i hånden! ;0)
Avatar billede mvk Nybegynder
14. juni 2002 - 11:23 #5
hehe - okay
det kan jeg desværre ikke :(
Avatar billede lp Nybegynder
14. juni 2002 - 11:50 #6
ehmmm, asp eller php.... he he... du siger det er asp, men det ligner nu mere php kode ?
Avatar billede eagleeye Praktikant
14. juni 2002 - 12:59 #7
Din hidden ID skal vel gemme ID og ikke Genre:
<input type="hidden" name="MM_recordId" value="<%= genre.Fields.Item("Genre").Value %>">

Til:
<input type="hidden" name="MM_recordId" value="<%= genre.Fields.Item("ID").Value %>">
Avatar billede mvk Nybegynder
14. juni 2002 - 15:31 #8
eagleeye -
den tabel den skal slette i har ikke nogen nøgle - den indeholder bare 1 kolonne med mine records, har det betydning for dit forslag ?
Avatar billede mvk Nybegynder
14. juni 2002 - 15:33 #9
nu får jeg nemlig fejl på ovenstående link
Avatar billede mvk Nybegynder
14. juni 2002 - 15:34 #10
det er for mærkeligt at den sletter den første record og ikke den jeg har valgt...
Avatar billede eagleeye Praktikant
14. juni 2002 - 17:10 #11
Nej det er ikke så mærkeligt...Du har et hidden felt som hedder MM_recordId:
<input type="hidden" name="MM_recordId" value="<%= genre.Fields.Item("Genre").Value %>">

Den bliver altså = med den første record i tabellen.

Din Delete SQL sætninge benytter MM_recordId som WHERE clause:
MM_editQuery = "delete from " + MM_editTable + " where " + MM_editColumn + " = " + MM_recordId;

Du har ikke behov for det hidden felt og du skal i stedet for MM_recordId hendte value af Select'en (dropdown-boxen) som hedder genre_listmenu.
Avatar billede mvk Nybegynder
16. juni 2002 - 11:34 #12
eagleeye - det lyder super - men kan du hjælpe mig med hvordan ser ud i koden ?

http://www.fzy.dk/remove.asp
Avatar billede eagleeye Praktikant
16. juni 2002 - 16:29 #13
Ja det kan jeg da prøve, din form skal se ud i stil med dette. JEg ahr fjernet feltet MM_recordID som ikke behøves der.

<form ACTION="<%=MM_editAction%>" METHOD="POST" name="genreform" id="genreform">
        <table width="75%" border="0">
          <tr>
            <td>genre</td>
            <td> <select name="genre_listmenu" size="1" id="genre_listmenu">
                <%
while (!genre.EOF) {
%>
                <option value="<%=(genre.Fields.Item("Genre").Value)%>"><%=(genre.Fields.Item("Genre").Value)%></option>
                <%
  genre.MoveNext();
}
if (genre.CursorType > 0) {
  if (!genre.BOF) genre.MoveFirst();
} else {
  genre.Requery();
}
%>
              </select></td>
            <td> <input type="submit" name="Submit" value="Delete"></td>
          </tr>
        </table>
        <input type="hidden" name="MM_delete" value="genreform">
      </form>
Avatar billede eagleeye Praktikant
16. juni 2002 - 16:31 #14
Din kode som slette skal så hendte select boxens value.
Jeg har rette alle MM_recordID til genre_listmenu i denne kode. Den skal jo hendte værdien fra genre_listmenu som er select boxen:

if (String(Request("MM_delete")) != "undefined" &&
    String(Request("genre_listmenu")) != "undefined") {

  // create the sql delete statement
  MM_editQuery = "delete from " + MM_editTable + " where " + MM_editColumn + " = " + genre_listmenu;

  if (!MM_abortEdit) {
    // execute the delete
    var MM_editCmd = Server.CreateObject('ADODB.Command');
    MM_editCmd.ActiveConnection = MM_editConnection;
    MM_editCmd.CommandText = MM_editQuery;
    MM_editCmd.Execute();
    MM_editCmd.ActiveConnection.Close();

    if (MM_editRedirectUrl) {
      Response.Redirect(MM_editRedirectUrl);
    }
  }

}
Avatar billede mvk Nybegynder
21. juni 2002 - 10:49 #15
tak for hjælpen :)
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