16. oktober 2003 - 09:08Der er
37 kommentarer og 3 løsninger
Sletning i database?
Hejsa jeg har database bestående af 4 kolonner: UserID, Brugernavn, Password, Beskrivelse, som jeg ønsker at slette poster i, mit problem er bare at jeg ikke kan få lov at slette på min kolonne: UserID som er den eneste post der er unik. Hvis jeg f.eks. vælger at slette på brugernavn, sletter den alle poster med samme brugernavn, men hvis jeg sætter UserID ind i sted for Brugernavn får jeg bare en asp-fejl på den side der skal eksekvere min sletning. Koden ser sådan ud:
------------> slet.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("pass.mdb") Conn.Open DSN
sql="select * from Users order by Brugernavn" set record=conn.execute(sql)%>
<form name="slet" method="post" action="sletning.asp"> <select name="sletter"><%do while not record.eof%> <option value="<%=record("UserID")%>"><%=record("Brugernavn")&" - "&record("Password")%> <%record.movenext loop%></option>
erikjacobsen-> Så får jeg følgende fejl: Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'UserID='58'. /Intranet_NEW/IT-Admin/pass-liste/sletning.asp, line 15
spotgun-> Kan du uddybe det lidt, jeg er ikke nogen haj til asp ;)
kongsteddk-> Så får jeg følgende fejl i stedet: Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /Intranet_NEW/IT-Admin/pass-liste/sletning.asp, line 15
Og dit felt UserID er et talfelt??? Eller er det sat til at være et tekstfelt? Hvis det er det, skal du skrive: SQL="delete * from Users where UserID = '" & request.form("sletter") & "'"
ErikJacobsen har ret... En korrekt DELETE-sætning ville se sådanher ud: "DELETE FROM table_name WHERE column_name = 'some_value'" Glem ikke 'fnutterne', bare for at väre på tvärs ;)
ErikJacobsen> Det er da sjovt at jeg så har brugt den kommando tidligere da jeg selv arbejdede med Access....... :-)
Omaly> Har du prøvet følgende: ___________ Kommentar: a-torsten 16/10-2003 09:57:48 Prøv og slet Conn.Excute(SQL) og skriv Response.write(SQL) istedet.... Hvordan ser din string ud...?
/Anders ________ Kan nemlig ikke finde det output her på siden som det skulle give. Det kan sandsynligvis hjælpe os med at hjælpe dig. Hvad er dit UserID felt for et format? Tekst eller tal?
Men du har ikke, kongsteddk, brugt den kommando (delete *) i ret mange andre databasesystemer. Det er ikke korrekt SQL, og så kan det sådan set være ligemeget om et enkelt lille system accepterer den.
Det har ikke så meget at gøre med om du kan ASP, men om du kan læse hvad der står. Dit problem var reelt løst kl. 09:15:30 - og vi har alle spildt tiden siden ;))
erikjacobsen-> den prøvede jeg jo, der fik jeg bare en fejl, så det forstår jeg ikke helt, men jeg beklager, jeg vil prøve at være lidt mere skarpsindig fremover ;)
omaly> Til orientering. Ved sql kald, skal ' (anførselstegn) kun bruges hvis det er et tekstfelt, notat, datofelter (i access ikke MySQL o.l.) og ligende felter hvor der er specielle tegn. I autonum. og talfelter skal der IKKE bruges '. Det ser ud til at det har været din fejl fra starten. Forsat go' programmeringslyst! :-)
Det ser ikke ud til at der at der er flere der vil svare, så hermed er points fordelt.
Omaly
Synes godt om
Ny brugerNybegynder
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.