Avatar billede ener1 Nybegynder
16. december 2002 - 15:41 Der er 28 kommentarer og
1 løsning

Problemer med delete!

Hvordan kan nedenstående rettes til, så der kun hentes WHERE 'ID' er større end 3 ?

Hilsen
Rene


strSQL="SELECT * FROM Links WHERE ID ='" & Request.QueryString("ID") & "'"
    objRS.Open strSQL, objDC, 3, 3
Avatar billede dk_akj Nybegynder
16. december 2002 - 15:42 #1
strSQL="SELECT * FROM Links WHERE ID > 3"
    objRS.Open strSQL, objDC, 3, 3
Avatar billede dk_akj Nybegynder
16. december 2002 - 15:42 #2
Hmm, din overskrift svarer ikke helt til din beskrivelse, hvad er det du vil ??

//akj
Avatar billede ener1 Nybegynder
16. december 2002 - 15:43 #3
Hvad så med
'" & Request.QueryString("ID") & "'"
Avatar billede ener1 Nybegynder
16. december 2002 - 15:45 #4
Ja, det ser jeg først nu. Sikke noget sludder, men sådan er det jo når man har mange forskellige ting i hovedet på samme tid. :)
Jeg har en DB. med ID 1,2,3,4 osv. men ønsker at man ikke skal kunne slette ID'et med 1, 2, 3.
Rene
Avatar billede dk_akj Nybegynder
16. december 2002 - 15:48 #5
strSQL="delete * FROM Links WHERE id > 3 and ID = " & Request.QueryString("ID")

Jeg har fjernet enkeltplinger (') omkring id da det vel er et tal.

//akj
Avatar billede happycow- Nybegynder
16. december 2002 - 16:42 #6
øhhhh... må jeg lige pointere at hvis du specificerer en ID, så er det der id > 3 fuldstændigt ligegyldigt.
Avatar billede mbw Nybegynder
16. december 2002 - 18:08 #7
ID = Request.QueryString("ID")
If ID > 3 Then
strSQL="SELECT * FROM Links WHERE ID ='" & Request.QueryString("ID") & "'"
    objRS.Open strSQL, objDC, 3, 3
  Else
    'Det den skal gøre vis ID er under 3
End If
Avatar billede mbw Nybegynder
16. december 2002 - 18:09 #8
Lidt bedre kode...
ID = Request.QueryString("ID")
If ID > 3 Then
    strSQL = "SELECT * FROM Links WHERE ID = ID
    objRS.Open strSQL, objDC, 3, 3
  Else
    'Det den skal gøre vis ID er under 3
End If
Avatar billede dk_akj Nybegynder
16. december 2002 - 18:27 #9
happycow >> Der er du da vist galt på den. Sql'en vil kun slette de records hvor id = request.querystrin("id") OG id > 3.

//akj
Avatar billede ener1 Nybegynder
16. december 2002 - 22:43 #10
Mange tak for hjælpen, håber en af jer kan hjælpe yderligere?
Jeg skal nok sætte pointene op til 60.

ID = Request.QueryString("ID")
        If ID > 3 Then strSQL = "SELECT * FROM Links WHERE ID = ID"
        objRS.Open strSQL, objDC, 3, 3

Nu har jeg selvfølgelig problemer herunder, hvordan ændrer jeg i dette?
 
    If Request.QueryString("action") = "deletenow" then
   
    objRS("ID") = Request.QueryString("ID")
    objRS.delete adAffectCurrent

Mvh.
Rene
Avatar billede ener1 Nybegynder
16. december 2002 - 22:45 #11
Jeg ønsker at kunne delete, bare ikke ID'erne 1,2,3.
Avatar billede dk_akj Nybegynder
17. december 2002 - 07:20 #12
dim conn, strConn
strConn  = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open strConn

If Request.QueryString("action") = "deletenow" then
    ID = Request.QueryString("ID")
    If ID > 3 Then strSQL = "SELECT * FROM Links WHERE ID = " & ID
        conn.execute (strsql)
    end if
end if
Avatar billede ener1 Nybegynder
17. december 2002 - 14:11 #13
Hej dk akj!
Det du ser nedenunder er hvad jeg bruger for øjeblikket, når jeg implementerer dit script fungerer det ikke?
Kan du hjælpe?
Mvh.
Rene
<%
    strSQL="SELECT * FROM Links WHERE ID = '" &        Request.QueryString("ID") & "'"
    objRS.Open strSQL, objDC, 3, 3

    If Request.QueryString("action") = "deletenow" then
   
    objRS("ID") = Request.QueryString("ID")
    objRS.delete adAffectCurrent
       
    objRS.Close
    objDC.Close
   
    Response.Redirect "display.asp?action=deleted"
   
    End if
%>
Avatar billede ener1 Nybegynder
17. december 2002 - 14:13 #14
Problemet er jo bare, at som det fungerer for øjeblikket er det muligt at slette alle ID'erne.
Avatar billede dk_akj Nybegynder
17. december 2002 - 14:15 #15
<%
' her checkes om id > 3, er den det skal id slettes
if Request.QueryString("ID") > 3 then
    strSQL="SELECT * FROM Links WHERE ID = '" &        Request.QueryString("ID") & "'"
    objRS.Open strSQL, objDC, 3, 3

    If Request.QueryString("action") = "deletenow" then
   
    objRS("ID") = Request.QueryString("ID")
    objRS.delete adAffectCurrent
       
    objRS.Close
    objDC.Close
   
    Response.Redirect "display.asp?action=deleted"
   
    End if
end if
%>
Avatar billede ener1 Nybegynder
17. december 2002 - 14:37 #16
Mange tusind tak, det fungerer næsten perfekt? Jeg kan nu naturligvis ikke slette ID'erne 1,2,3, men jeg får en fejlmeddelse:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

delete.asp, line 27

Sådan her ser hele scriptet ud:

<%
' her checkes om id > 3, er den det skal id slettes
if Request.QueryString("ID") > 3 then
    strSQL="SELECT * FROM Links WHERE ID = '" & Request.QueryString("ID") & "'"
    objRS.Open strSQL, objDC, 3, 3

    If Request.QueryString("action") = "deletenow" then
        objRS("ID") = Request.QueryString("ID")
    objRS.delete adAffectCurrent
      Else Response.Write"Bannere med ID'et 1,2,3 kan ikke slettes."
 
 
    objRS.Close
    objDC.Close
   
    Response.Redirect "display.asp?action=deleted"
    End if
    End if
%>    <body background="<% =Baggrund %>">
<form method="POST" action="delete.asp?action=deletenow&ID=<%= objRS("ID") %>">
<p><font size="2">Ønsker du at slette dette banner?&nbsp;<b><%= objRS("ID") %></b>. Så skriv det ind i
boksen forneden.</font></p>
<p><b>ID: <input type="text" name="ID" size="9"></b></p>
<p><input type="image" src="buttons/slet-banner-button.jpg" action="submit" name="B1">&nbsp;&nbsp;
<input type="image" src="buttons/slet-alt-button.jpg" action="reset" name="B2">
</p>
</form>
Kan du løse mit problem, hæver jeg pointene til 100.
Avatar billede dk_akj Nybegynder
17. december 2002 - 14:48 #17
Jeg tror måske du har grebet opgaven lidt forkert an.

Har du en liste med billeder/bannere hvor du vil klikke på et billed og så skal den slettes hvis id er > 3 ??

//akj
Avatar billede ener1 Nybegynder
17. december 2002 - 14:50 #18
Lige nøjagtigt.
Avatar billede ener1 Nybegynder
17. december 2002 - 14:54 #19
Men burde det ikke kunne lade sig gøre at køre ovenstående script, hvor hvis brugeren forsøger at slette banner med ID 1,2 eller 3, får en meddelse om at dette ikke kan lade sig gøre?
Avatar billede dk_akj Nybegynder
17. december 2002 - 14:59 #20
Når du sletter en række i linie 6 kan du jo ikke referere til den i linie 27, det er fejlen.

Hvordan trækker du listen med bannere ud ??
Avatar billede ener1 Nybegynder
17. december 2002 - 15:02 #21
<%
    Dim path, objDC, objRS, strSQL
   
'@@@@@@@@@@@@@@@@@@@@ RET KUN I DENNE @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    path=Server.Mappath("db/data.mdb")

'@@@@@@@@@@@@@@@@@@@@ NOT THE PHYSICAL PATH @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    Set objDC = Server.CreateObject("ADODB.Connection")
    objDC.Open "DBQ=" & path & ";Driver={Microsoft Access Driver (*.mdb)};"
        Set objRS = Server.CreateObject("ADODB.Recordset")
%>
Avatar billede dk_akj Nybegynder
17. december 2002 - 15:12 #22
Jeg ville lave det sådan :

Denne fil skal hedde delete.asp

<%
' forbind til databasen
path=Server.Mappath("db/data.mdb")
Set objDC = Server.CreateObject("ADODB.Connection")
objDC.Open "DBQ=" & path & ";Driver={Microsoft Access Driver (*.mdb)};"

' slet et evt banner
if Request.QueryString("ID") > 3 then
    strSQL="delete * FROM Links WHERE ID = '" &        Request.QueryString("ID") & "'"
    objDC.execute(strSQL)
response.write Request.QueryString("ID") & " er slettet !!"
end if

' hent alle rækker hvor id > 3
set rs = objDC.execute("select * from links where id > 3")

' lav liste med bannere udfra data vi lige hentede i databasen
if not rs.eof then
    do while not rs.eof
        response.write "<a href=delete.asp?id=" & rs("id") & "> Slet nr "& rs("id") & "</a><br>"
        rs.movenext       
    loop
end if


%>
Avatar billede ener1 Nybegynder
17. december 2002 - 15:26 #23
Nu får jeg denne fejl!

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/ener1/ny-slet.asp, line 17

Her er linie 17:

set rs = objDC.execute("select * from Links where id > 3")
Avatar billede dk_akj Nybegynder
17. december 2002 - 15:27 #24
ret til:

set rs = objDC.execute("select * from Links where id > '3'")

Fordi id feltet åbenbart er en text.

//akj
Avatar billede ener1 Nybegynder
18. december 2002 - 16:59 #25
Ja, så er jeg vendt tilbage. Mange tak for din store hjælp!!
Jeg kvitterer hermed med pointene.
Avatar billede ener1 Nybegynder
18. december 2002 - 17:04 #26
Iøvrigt lige et spørgsmål? Er det muligt at trække ud af DB. i en tabel noget a'la

<tr>
<td></td><td></td>
</tr>
<tr>
<td></td><td></td>
</tr>
Håber du forstår hvad jeg mener?
Altså 2 kolonner i række 1
2 kolonner i række 2 osv...
Mvh.
Rene
Avatar billede ener1 Nybegynder
18. december 2002 - 17:06 #27
Hvorfor jeg spørger er fordi jeg har lagt billeder på, istedet for tekst.(det gør det lidt pænere)
Avatar billede dk_akj Nybegynder
18. december 2002 - 19:09 #28
ja,


Erstat det jeg har skrevet med stort med de aktuelle tabeller og feltnavne
sql = "select * from TABELNAVN"
set rs = conn.execute (sql)

if not rs.eof then
  do while not rs.eof
  response.write "<tr>"
  response.write "<td>" & rs("FELT_1") & "</td>"
  response.write "<td>" & rs("FELT_2") & "</td>"
  response.write "</tr>"
  rs.movenext
  loop
end if
Avatar billede ener1 Nybegynder
18. december 2002 - 22:31 #29
Mange tak for din store hjælp!!
Rene
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