Avatar billede babyworm Nybegynder
16. april 2005 - 01:13 Der er 106 kommentarer

Slette fra Access base

Hej,


Jeg har i min access base en tabel der hedder page

i den er der id, menu, sub

id er idet på siden
menu er menuen på siden
i sub kan der stå et id på en side.

Hvis jeg f.eks. har
id: 1  menu: forside      sub: 0
id: 2  menu: profil        sub: 1
id: 3  menu: medarbejdere  sub: 2
id: 4  menu: kim          sub: 3
så vil min menu se sådan ud:

forside
- profil
  - medarbejdere
  - kim


Det jeg så skal have lavet et et script som slette derned af i rækken, så hvis jeg vælger at slette side med id: 2 så skal den også slette side med id 3 og 4


Hvordan gør man det ?
Avatar billede busschou Praktikant
16. april 2005 - 01:27 #1
Den bliver svær at kringle
Det du vil er altså at slette et givent id.
Dernæst slette hvis der findes en post hvor sub er lig det id
Dernæst forsætte derudaf
Avatar billede kalp Novice
16. april 2005 - 01:28 #2
Måske kan dette give dig en god ide til hvordan det evt kan gøres.

Forestiller mig du først requester din ID right?
id    =        Trim(Request.QueryString("id"))

Så laver vi 2 tællere.
dim counter, counterslut

Den ene skal være ligmed det ID der kommer ind
counter = id

Den anden skal være ligmed det antal der er i databasen.
Derfor denne sql sætning der tæller records op
SQLstringK = "SELECT COUNT (id) AS Total From page"

counter = Total

Lav en løkke som køre slet igennem
(denne virker selvfølgelig ikke .. går ud fra du ved hvordan den laves korrekt:))

while(counter <= counterslut)  <--- kør koden til counter er større end counterslut
           
    SQLstringK="DELETE FROM page WHERE id="&counter  <--- vores tæller
    Connection.Execute(SQLstringK)
counter = counter + 1  <--- vores tæller bliver sat en op

loop  <-- gentag
Avatar billede babyworm Nybegynder
16. april 2005 - 01:30 #3
Så sletter den jo alt i basen...

det skal den ikke..

den skal slette den side man sletter samt den undermenuer som ligger under
Avatar billede babyworm Nybegynder
16. april 2005 - 01:31 #4
så hvis jeg havde:
id: 1  menu: forside      sub: 0
id: 2  menu: profil        sub: 1
id: 3  menu: medarbejdere  sub: 2
id: 4  menu: kim          sub: 0

Og ville slette id 2 så slettede den id 2 og 3 da 3 er underside til 2...
Avatar billede kalp Novice
16. april 2005 - 01:36 #5
Mon ikke busschou hitter op med en løsning:) jeg beklager men er ikke så frisk i hovedet lige nu:o) og misforstod da også dit spørgsmål:) men nu følger jeg da i hvertfald med:)
Avatar billede babyworm Nybegynder
16. april 2005 - 01:38 #6
Det håber jeg.. for sidder lidt fast :-)
Avatar billede busschou Praktikant
16. april 2005 - 01:40 #7
topid = request.querystring("id")
sql = "Delete From din_tabel Where id="&topid
conn.execute(sql)
sql = "Select Count(*) From din_tabel"
antal = conn.execute(sql)
subid = "";
for t=1 to antal
  sql = "Select * From din_tabel Where sub="&topid
  set rs=conn.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From din_tabel Where id="&topid
    conn.execute(sql)
    topid = subid
next
Avatar billede babyworm Nybegynder
16. april 2005 - 01:45 #8
Fejl! :)

Slut på sætning var ventet
/cmplicity/menu/del.asp, line 11, column 10
subid = "";
---------^

Line 11: subid = "";
Avatar billede busschou Praktikant
16. april 2005 - 01:45 #9
Men den holder så nok ikke hvis du har flere undermenuer til samme over menu!
Så skal der lige laves en while også
Avatar billede busschou Praktikant
16. april 2005 - 01:45 #10
ingen kolon.
Avatar billede babyworm Nybegynder
16. april 2005 - 01:47 #11
min kode:

topid = request.querystring("id")
sql = "Delete From page Where id="&topid
conn.execute(sql)
sql = "Select Count(*) From page"
antal = conn.execute(sql)
subid = "";
for t=1 to antal
  sql = "Select * From page Where sub="&topid
  set rs=conn.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From page Where id="&topid
    conn.execute(sql)
    topid = subid
next
Avatar billede babyworm Nybegynder
16. april 2005 - 01:48 #12
Hvis du har en træstruktur skal den bare slette de sider der kommer nedenunder
Avatar billede busschou Praktikant
16. april 2005 - 01:49 #13
topid = request.querystring("id")
sql = "Delete From page Where id="&topid
conn.execute(sql)
sql = "Select Count(*) From page"
antal = conn.execute(sql)
subid = ""
for t=1 to antal
  sql = "Select * From page Where sub="&topid
  set rs=conn.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From page Where id="&topid
    conn.execute(sql)
    topid = subid
next
Avatar billede babyworm Nybegynder
16. april 2005 - 01:49 #14
Uden ;

Der opstod en Microsoft VBScript-kompileringsfejl (0x800A041F)
Uventet 'Next'
/cmplicity/menu/del.asp, line 20
next

linie 20: next
Avatar billede busschou Praktikant
16. april 2005 - 01:51 #15
går lidt hurtigt...sorry
topid = request.querystring("id")
sql = "Delete From page Where id="&topid
conn.execute(sql)
sql = "Select Count(*) From page"
antal = conn.execute(sql)
subid = ""
for t=1 to antal
  sql = "Select * From page Where sub="&topid
  set rs=conn.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From page Where id="&topid
    conn.execute(sql)
    topid = subid
  end if
next
Avatar billede babyworm Nybegynder
16. april 2005 - 01:53 #16
Koden:

topid = request.querystring("id")
sql = "Delete From page Where id="&topid
connection.execute(sql)
sql = "Select Count(*) From page"
antal = connection.execute(sql)
subid = ""
for t=1 to antal
  sql = "Select * From page Where sub="&topid
  set rs=connection.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From page Where id="&topid
    connection.execute(sql)
    topid = subid
  end if
next



Fejl:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01C2)
Antallet af argumenter er forkert eller egenskabstildelingen er ugyldig
/cmplicity/menu/del.asp, line 12



Linie 12: for t=1 to antal
Avatar billede busschou Praktikant
16. april 2005 - 01:53 #17
jeg tror og håber den holder ;o)
Avatar billede babyworm Nybegynder
16. april 2005 - 01:54 #18
Heh... det er jo også sent :P
Avatar billede busschou Praktikant
16. april 2005 - 01:54 #19
hmm så giver den åbenbart ikke antal direkte..prøv
topid = request.querystring("id")
sql = "Delete From page Where id="&topid
connection.execute(sql)
sql = "Select Count(*) From page"
set rs = connection.execute(sql)
antal = rs(0)
subid = ""
for t=1 to antal
  sql = "Select * From page Where sub="&topid
  set rs=connection.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From page Where id="&topid
    connection.execute(sql)
    topid = subid
  end if
next
Avatar billede busschou Praktikant
16. april 2005 - 01:57 #20
ja sent...eller tidlig...gaaab...bliver nok også sidste løsning for i aften ;o)
siger den noget?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:00 #21
Hvis jeg min sideoversigt sådan her:

test
- 1
  - 2
  - 3
  - 4
  - 5

og sletter side 1, så er det kun side 1 og side 2 der bliver slettet
Avatar billede babyworm Nybegynder
16. april 2005 - 02:01 #22
sådan her:
test
      - 1
              - 2
                      - 3
              - 4
                      - 5
Avatar billede busschou Praktikant
16. april 2005 - 02:01 #23
topid = request.querystring("id")
sql = "Delete From page Where id="&topid
connection.execute(sql)
sql = "Select Count(*) From page"
set rs = connection.execute(sql)
antal = rs(0)
subid = ""
for t=1 to antal
  sql = "Select * From page Where sub="&topid
  set rs=connection.execute(sql)
  if not rs.eof then
    subid = rs("id")
    sql = "Delete From page Where sub="&topid
    connection.execute(sql)
    topid = subid
  end if
next
Avatar billede busschou Praktikant
16. april 2005 - 02:04 #24
kan følgende forekomme?
id: 1  menu: forside      sub: 0
id: 2  menu: profil        sub: 1
id: 3  menu: medarbejdere  sub: 2
id: 4  menu: kim          sub: 3
id: 5  menu: forside      sub: 2
id: 6  menu: profil        sub: 5
---
altså at flere menuer har samme sub men forskellig id ?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:04 #25
Nu sletter den dem indtil den allersidste...
Avatar billede busschou Praktikant
16. april 2005 - 02:05 #26
hvordan?..altså den sletter korrekt..pånær den sidste?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:05 #27
Ja... sagtens..
Avatar billede busschou Praktikant
16. april 2005 - 02:05 #28
pis hehe
Avatar billede babyworm Nybegynder
16. april 2005 - 02:06 #29
:)
Avatar billede busschou Praktikant
16. april 2005 - 02:06 #30
slettede den ellers korrekt pånær den sidste?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:07 #31
Umiddelbart... men er jo ikke gennemtestet
Avatar billede busschou Praktikant
16. april 2005 - 02:08 #32
problemet med kommentaren 02:04:26 er at den kun gemmer den første id den finder og søger så efter sub på den
Men hvis to eller fleres ens sub kan have forskellig id så skal der jo oprettes et array som den skal søge igennem
Avatar billede babyworm Nybegynder
16. april 2005 - 02:10 #33
jepper... :)
Avatar billede busschou Praktikant
16. april 2005 - 02:13 #34
Det er noget hø
Så må vi vist hellere ud i noget rekursivt noget...
Noget med at lave en sub som kalder sig selv
Avatar billede babyworm Nybegynder
16. april 2005 - 02:15 #35
Jepper..

Du kan få en funktion jeg bruger til at kalde min sitemap og en funktion til breadcrump ?
Avatar billede busschou Praktikant
16. april 2005 - 02:15 #36
tja prøv
Avatar billede babyworm Nybegynder
16. april 2005 - 02:16 #37
' Hent data fra databasen
strSQL = "SELECT ID, sub, menu FROM page ORDER BY [order]"
Set rsEntries = connection.Execute(strSQL)

If Not (rsEntries.EOF or rsEntries.BOF) Then

Do
  ' Gem data som kommasepareret liste
  arrID = arrID & "," & rsEntries("ID")
  arrRE = arrRE & "," & rsEntries("sub")
  arrSU = arrSU & "," & rsEntries("menu")
  rsEntries.MoveNext
Loop while not rsEntries.eof

' Lav arrays med data
arrID = Split(arrID,",")
arrRE = Split(arrRE,",")
arrSU = Split(arrSU,",")

' Funktion som undersøger for svar
Function Threads(intID, AntalIndryk)
  AntalIndryk = AntalIndryk + 1
  For m = 1 to Ubound(arrID)
    ' Hvis svar til det indlæg som funktionen er kaldt med
    If (Cint(arrRE(m)) = Cint(intID) And Cint(intID) > 0) Or (Cint(arrRE(m)) = 0 And Cint(intID) = 0) Then
      ' Tilføj til liste og kald funktionen for at undersøge for svar
      If Cint(intID) > 0 Then
        For i = 2 To AntalIndryk
          Threads = Threads & "&nbsp; &nbsp;"
        Next
        Threads = Threads & "<img src=""/cmplicity/_gfx/sitemaps.gif"">"
      End If
      Threads = Threads & "<span style=""color:#ffffff;font-weight:bold;""><img src=""/cmplicity/_gfx/ikon/showplain.gif"" align=""absbottom"" width=""10"" height=""11"" border=""0"" alt="""">&nbsp;" & arrSU(m) & "</span><br>" & Threads(arrID(m), AntalIndryk)
    End If       
  Next
  AntalIndryk = AntalIndryk - 1
End Function

Response.Write Threads(0, 0)

Else
    Response.Write("Der er ikke tilføjet nogle sider!")
End if
Avatar billede babyworm Nybegynder
16. april 2005 - 02:17 #38
den laver sitemap
Avatar billede busschou Praktikant
16. april 2005 - 02:22 #39
Hvad med følgende rekusive:
---------
id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
if not rs.eof then
  call slet(rs)
end if

sub slet(liste){
  for t=LBound(liste) to UBound(liste)
      sql = "Select id From page Where sub="&liste(t)
      set rs = connection.execute(sql)
      if not rs.eof then
        call slet(rs)
      end if
      sql = "Delete From page Where sub="&liste(t)
      connection.execute(sql)
  next
}
Avatar billede babyworm Nybegynder
16. april 2005 - 02:23 #40
Tegnet er ugyldigt
/cmplicity/menu/del.asp, line 15, column 15
sub slet(liste){
--------------^

Linie 15: sub slet(liste){
Avatar billede busschou Praktikant
16. april 2005 - 02:24 #41
skide syntaks hehe
id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
if not rs.eof then
  call slet(rs)
end if

Sub slet(liste)
  for t=LBound(liste) to UBound(liste)
      sql = "Select id From page Where sub="&liste(t)
      set rs = connection.execute(sql)
      if not rs.eof then
        call slet(rs)
      end if
      sql = "Delete From page Where sub="&liste(t)
      connection.execute(sql)
  next
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 02:26 #42
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens
/cmplicity/menu/del.asp, line 16


linie 16:  for t=LBound(liste) to UBound(liste)
Avatar billede busschou Praktikant
16. april 2005 - 02:26 #43
hvis ikke vi kan få den til at virke så giver jeg altså op for søvnen inden kl 3 :o(.. for det hjælper nok ikke lige just på korrektheden af syntaks mm ;o)
Avatar billede babyworm Nybegynder
16. april 2005 - 02:26 #44
hehe... nej.. det kan du have ret i... jeg skal også på arbejde klokken 7 :P
Avatar billede busschou Praktikant
16. april 2005 - 02:28 #45
er det fordi rs ikke opfattes som et array...godnat mand ;o)
id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
if not rs.eof then
  call slet(rs)
end if

Sub slet(liste)
  do while not liste.eof
      sql = "Select id From page Where sub="&liste("id")
      set rs = connection.execute(sql)
      if not rs.eof then
        call slet(rs)
      end if
      sql = "Delete From page Where sub="&liste("id")
      connection.execute(sql)
  liste.movenext
  loop
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 02:29 #46
hehe :-)

Fejltype:
(0x80020009)
Undtagelse opstod.
/cmplicity/menu/del.asp, line 22


linie 22:      sql = "Delete From page Where sub="&liste("id")
Avatar billede busschou Praktikant
16. april 2005 - 02:31 #47
øhh det er ikke linjen under..altså når den eksekverer sql?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:33 #48
Nææ... linie 22 er:      sql = "Delete From page Where sub="&liste("id")
Avatar billede busschou Praktikant
16. april 2005 - 02:34 #49
hvor meget har du liggende ...tænker på om det er for dybt rekursion..har ikke rigtig prøvet rekursion i asp før
Avatar billede busschou Praktikant
16. april 2005 - 02:34 #50
prøv at udmakere den linje samt linje 23
og så insætte en response.write(liste("id"))
Avatar billede babyworm Nybegynder
16. april 2005 - 02:37 #51
Satte denne kode;

id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
if not rs.eof then
  call slet(rs)
end if

Sub slet(liste)
  do while not liste.eof
      sql = "Select id From page Where sub="&liste("id")
      set rs = connection.execute(sql)
      if not rs.eof then
        call slet(rs)
      end if
      'sql = "Delete From page Where sub="&liste("id")
      'connection.execute(sql)
    response.write(liste("id"))
  liste.movenext
  loop
End Sub



denne fejl:
Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den anmodede handling kræver en aktuel post.
/cmplicity/menu/del.asp
Avatar billede busschou Praktikant
16. april 2005 - 02:38 #52
hmm så prøv
id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
if not rs.eof then
  call slet(rs)
end if

Sub slet(liste)
  do while (not liste.eof) and (not liste.bof)
      sql = "Select id From page Where sub="&liste("id")
      set rs = connection.execute(sql)
      if not rs.eof then
        call slet(rs)
      end if
      'sql = "Delete From page Where id="&liste("id")
      'connection.execute(sql)
    response.write(liste("id"))
  liste.movenext
  loop
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 02:40 #53
samme fejl ...
Avatar billede busschou Praktikant
16. april 2005 - 02:40 #54
er du i øvrigt med på ideen?..eller skal jeg sætte et par kommentare ind hist og pist?
Du kan i hvert fald lave
-----
if not rs.eof then
  call slet(rs)
end if
-----
om til blot
-----
call slet(rs)
-----
eftersom eof og bof nu tjekkes i Subben
Avatar billede busschou Praktikant
16. april 2005 - 02:42 #55
Wierd!... det kan være den "glemmer" indgangen måske
id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
call slet(rs)

Sub slet(liste)
  do while (not liste.eof) and (not liste.bof)
      sql = "Select id From page Where sub="&liste("id")
      set rs = connection.execute(sql)
      id = liste("id")
      if not rs.eof then
        call slet(rs)
      end if
      'sql = "Delete From page Where id="&liste("id")
      'connection.execute(sql)
    response.write(id)
  liste.movenext
  loop
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 02:44 #56
Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den anmodede handling kræver en aktuel post.
/cmplicity/menu/del.asp, line 17

Linie 17:      id = liste("id")
Avatar billede babyworm Nybegynder
16. april 2005 - 02:45 #57
Det er da underligt hva ? :o)
Avatar billede busschou Praktikant
16. april 2005 - 02:47 #58
prøv lige det her for at vi kan se hvor langt den går
id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
response.write("så langt så godt: rs(id)="&rs("id"))
call slet(rs)

Sub slet(liste)
  do while (not liste.eof) and (not liste.bof)
      response.write("inde i sub liste(id)="&liste("id")
      sql = "Select id From page Where sub="&liste("id")
      set rs = connection.execute(sql)
      id = liste("id")
      if not rs.eof then
        call slet(rs)
      end if
      'sql = "Delete From page Where id="&liste("id")
      'connection.execute(sql)
    response.write(id)
  liste.movenext
  loop
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 02:47 #59
Tegnet ')' var ventet
/cmplicity/menu/del.asp, line 16, column 50
response.write("inde i sub liste(id)="&liste("id")
-------------------------------------------------^
Avatar billede busschou Praktikant
16. april 2005 - 02:47 #60
der mangler lige en parantes
response.write("inde i sub liste(id)="&liste("id"))
Avatar billede babyworm Nybegynder
16. april 2005 - 02:48 #61
Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den anmodede handling kræver en aktuel post.
/cmplicity/menu/del.asp, line 19

Linie 19:      id = liste("id")
Avatar billede busschou Praktikant
16. april 2005 - 02:49 #62
skriver den slet ikke de response.writes ud???
Avatar billede babyworm Nybegynder
16. april 2005 - 02:51 #63
nej...

Fejltype:
(0x80020009)
Undtagelse opstod.
/cmplicity/menu/del.asp, line 11

Linie 11: response.write("så langt så godt: rs(id)="&rs("id"))
Avatar billede busschou Praktikant
16. april 2005 - 02:52 #64
prøv lige vise mig hele din kode for der er da noget som ikke hænger sammen så
det betyder jo der er fejl i de to her
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
???
Avatar billede busschou Praktikant
16. april 2005 - 02:53 #65
ahhh hallo hallo
I din database hedder det da id eller ID ?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:53 #66
<!--#include virtual="/cmplicity/_include/protect.asp"-->
<!-- #include virtual="/_global/dbconn.asp" -->
<%
openConn()

id = request.querystring("id")
sql = "Delete From page Where id="&id
connection.execute(sql)
sql = "Select id From page Where sub="&id
set rs = connection.execute(sql)
response.write("så langt så godt: rs(id)="&rs("id"))
call slet(rs)

Sub slet(liste)
  do while (not liste.eof) and (not liste.bof)
      response.write("inde i sub liste(id)="&liste("id"))
      sql = "Select id From page Where sub="&liste("id")
      set rs = connection.execute(sql)
      id = liste("id")
      if not rs.eof then
        call slet(rs)
      end if
      'sql = "Delete From page Where id="&liste("id")
      'connection.execute(sql)
    response.write(id)
  liste.movenext
  loop
End Sub

closeConn()

response.redirect "/cmplicity/menu/default.asp?cache=" & timer
%>
Avatar billede busschou Praktikant
16. april 2005 - 02:55 #67
id = request.querystring("id")
sql = "Delete From page Where ID="&id
connection.execute(sql)
sql = "Select ID From page Where sub="&id
set rs = connection.execute(sql)
response.write("så langt så godt: rs(id)="&rs("ID"))
call slet(rs)

Sub slet(liste)
  do while (not liste.eof) and (not liste.bof)
      response.write("inde i sub liste(id)="&liste("ID")
      sql = "Select ID From page Where sub="&liste("ID")
      set rs = connection.execute(sql)
      id = liste("ID")
      if not rs.eof then
        call slet(rs)
      end if
      'sql = "Delete From page Where id="&liste("ID")
      'connection.execute(sql)
    response.write(id)
  liste.movenext
  loop
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 02:55 #68
det hedder id med småt...
Avatar billede busschou Praktikant
16. april 2005 - 02:56 #69
i dit indlæg 02:16:54 hedder det med stort ,...så er du sikker?
Avatar billede babyworm Nybegynder
16. april 2005 - 02:57 #70
har lige kigget... det er med småt
Avatar billede babyworm Nybegynder
16. april 2005 - 02:58 #71
Undtagelse opstod.
/cmplicity/menu/del.asp, line 11
Avatar billede busschou Praktikant
16. april 2005 - 02:58 #72
hvordan katten kan det så virke i den kode du lagde ind 02:16:54?
Avatar billede babyworm Nybegynder
16. april 2005 - 03:00 #73
to sek... DOH.. havde kaldt siden 9, men id var 51... id 9 er der ikke...

Nu siger den:

ADODB.Field (0x800A0BCD)
Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den anmodede handling kræver en aktuel post.
/cmplicity/menu/del.asp, line 19

Linie 19:      id = liste("id")
Avatar billede babyworm Nybegynder
16. april 2005 - 03:00 #74
Sooorrryyyy
Avatar billede busschou Praktikant
16. april 2005 - 03:01 #75
jeg er ikke med
Fatter ikke hvorfor den ikke skriver de response.writes ud som vi har lavet inden
Det burde den da gøre!
Avatar billede babyworm Nybegynder
16. april 2005 - 03:03 #76
ja... men ved den hvad liste er ??? hvor får den liste("id") fra ?
Avatar billede busschou Praktikant
16. april 2005 - 03:04 #77
kan det være fordi den så sletter "interaktivt" i recordset?
Jeg har som sagt aldrig lavet rekursion sådan før
Men hvis den gør det interaktivt så er det måske derfor
Avatar billede babyworm Nybegynder
16. april 2005 - 03:05 #78
heh... jeg er blank :-)
Avatar billede busschou Praktikant
16. april 2005 - 03:07 #79
'ID HENTES IND OG POSTEN SLETTES
id = request.querystring("id")
sql = "Delete From page Where ID="&id
connection.execute(sql)
'FIND ALLE POSTERS ID HVOR SUB=ID
sql = "Select ID From page Where sub="&id
set rs = connection.execute(sql)
'KAL FUNKTION TIL AT SLETTE MED
call slet(rs)

'SLETTE FUNKTION
Sub slet(liste)
  'KØRES HVIS RECORDSÆTTET IKKE ER TOMT FOR HVERT ELEMENT
  do while (not liste.eof) and (not liste.bof)
      'FIND ALLE POSTERS ID HVOR SUB=ID
      sql = "Select ID From page Where sub="&liste("ID")
      set rs = connection.execute(sql)
      'KØR FUNKTIONEN SLET PÅ DE FUNDNE ID
      call slet(rs)
      'ENDEN ER NÅET OG POSTEN SLETTES
      sql = "Delete From page Where id="&liste("ID")
      connection.execute(sql)
  liste.movenext
  loop
End Sub
Avatar billede busschou Praktikant
16. april 2005 - 03:07 #80
sådan fungerer det
Avatar billede babyworm Nybegynder
16. april 2005 - 03:08 #81
Undtagelse opstod.
/cmplicity/menu/del.asp, line 26

Linie: 26:      sql = "Delete From page Where id="&liste("ID")
Avatar billede busschou Praktikant
16. april 2005 - 03:11 #82
altså uden jeg retter noget så giver du mig nye fejlmedelelser..
Avatar billede babyworm Nybegynder
16. april 2005 - 03:11 #83
Min kode:

<!--#include virtual="/cmplicity/_include/protect.asp"-->
<!-- #include virtual="/_global/dbconn.asp" -->
<%
openConn()

'ID HENTES IND OG POSTEN SLETTES
id = request.querystring("id")
sql = "Delete From page Where ID="&id
connection.execute(sql)
'FIND ALLE POSTERS ID HVOR SUB=ID
sql = "Select ID From page Where sub="&id
set rs = connection.execute(sql)
'KAL FUNKTION TIL AT SLETTE MED
call slet(rs)

'SLETTE FUNKTION
Sub slet(liste)
  'KØRES HVIS RECORDSÆTTET IKKE ER TOMT FOR HVERT ELEMENT
  do while (not liste.eof) and (not liste.bof)
      'FIND ALLE POSTERS ID HVOR SUB=ID
      sql = "Select ID From page Where sub="&liste("ID")
      set rs = connection.execute(sql)
      'KØR FUNKTIONEN SLET PÅ DE FUNDNE ID
      call slet(rs)
      'ENDEN ER NÅET OG POSTEN SLETTES
      sql = "Delete From page Where id="&liste("ID")
      connection.execute(sql)
  liste.movenext
  loop
End Sub

closeConn()

response.redirect "/cmplicity/menu/default.asp?cache=" & timer
%>   



Min fejl:

Fejltype:
(0x80020009)
Undtagelse opstod.
/cmplicity/menu/del.asp, line 26
Avatar billede busschou Praktikant
16. april 2005 - 03:14 #84
har prøvet lave det til et array alligevel for det må næsten være det som går galt
prøv det her:
id = request.querystring("id")
sql = "Delete From page Where ID="&id
connection.execute(sql)
sql = "Select ID From page Where sub="&id
set rs = connection.execute(sql)
do while not rs.eof
  stregn = stregn&","&rs("ID")
rs.movenext
loop
liste = Split(stregn,",")
call slet(liste)

Sub slet(liste)
  for t=LBound(liste)+1 to UBound(liste)
      sql = "Select ID From page Where sub="&liste(t)
      set rs = connection.execute(sql)
      do while not rs.eof
        stregn = stregn&","&rs("ID")
        rs.movenext
      loop
      nyliste = Split(stregn,",")
      call slet(nyliste)
      sql = "Delete From page Where ID="&liste(t)
      connection.execute(sql)
  next
End Sub
Avatar billede babyworm Nybegynder
16. april 2005 - 03:16 #85
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A0007)
Der er ikke mere hukommelse: 'connection.execute'
/cmplicity/menu/del.asp, line 21

20:  sql = "Select ID From page Where sub="&liste(t)
21:  set rs = connection.execute(sql)
Avatar billede busschou Praktikant
16. april 2005 - 03:17 #86
ha så kan den vist ikke klare presset eller hvad?
Avatar billede babyworm Nybegynder
16. april 2005 - 03:17 #87
heh.. åbenbart ikke :P
Avatar billede busschou Praktikant
16. april 2005 - 03:19 #88
har du tjekket din database?
At der er det oprindelige eksempel i den og der ikke er noget som er slettet undervejs osv...så vi tjekker på korrekt materiale?
For jeg synes ærligt talt at det er dårlige fejlmedelelser. Plus at den heller ikke skrev det ud vi bad den om. Det burde den ellers have gjort.
Det er jo umuligt at vide om den kører uendelig løkke eller hvad den gør når man ikke kan lave en response.write og få noget at debugge efter.
Avatar billede babyworm Nybegynder
16. april 2005 - 03:22 #89
:) Jeg har tilføjet en masse poster i databasen for at teste det...

Nå.. må hellere tulle i seng.. vi kan kigge på det imorgen... tusinde tak for hjælpen indtil videre...
Avatar billede busschou Praktikant
16. april 2005 - 03:24 #90
Der mangler også en "stopklods"
----
id = request.querystring("id")
sql = "Delete From page Where ID="&id
connection.execute(sql)
sql = "Select ID From page Where sub="&id
set rs = connection.execute(sql)
do while not rs.eof
  stregn = stregn&","&rs("ID")
rs.movenext
loop
liste = Split(stregn,",")
call slet(liste)

Sub slet(liste)
  for t=LBound(liste)+1 to UBound(liste)
      sql = "Select ID From page Where sub="&liste(t)
      set rs = connection.execute(sql)
      if not rs.eof then
        do while not rs.eof
          nystregn = nystregn&","&rs("ID")
          rs.movenext
        loop
        nyliste = Split(nystregn,",")
        call slet(nyliste)
      end if
      sql = "Delete From page Where ID="&liste(t)
      connection.execute(sql)
  next
End Sub
Avatar billede busschou Praktikant
16. april 2005 - 03:25 #91
men ja..godnat...kommer nok først på senere i morgen men håber da det lykkedes uanset hvad...det burde være muligt med sådan en rekursiv funktion :o)
Avatar billede dbangx Nybegynder
16. april 2005 - 06:17 #92
hej, jeg ved ikke om i har gadt det oppe at vende før, men der er måske en nemmere løsning:

åben databasen i access.
klik i menuen funktioner -> relationer
tilføj din tabej to gange
lav en en-til-mange relation fra tabel.id til tabel_1.sub

marker gennemtving referentiel integritet og
marker kaskadevis sletning af relaterede poster

hvis du så har :
id: 1  menu: forside      sub: 0
id: 2  menu: profil        sub: 1
id: 3  menu: medarbejdere  sub: 2
id: 4  menu: kim          sub: 3

så vil "DELETE FROM tabel WHERE id=2"

slette alt på nær posten: id: 1  menu: forside  sub: 0


Jeg ved ikke om det har været oppe før, men jeg er for træt til at læse alle 92 kommentarer.
Avatar billede busschou Praktikant
16. april 2005 - 07:56 #93
ja vi var vist også trætte til sidst... hvis sådan en relation vil gøre det ..så er det da mildelst talt den nemmeste løsning
Avatar billede busschou Praktikant
16. april 2005 - 08:22 #94
med følgende eksempek hos mig siger access 2003 at den ikke kan gennemføre referentiel integritet pga tabellen bryger reglerne derfor.
id: 1  menu: test      sub: 0
id: 2  menu: test1    sub: 1
id: 3  menu: test2    sub: 2
id: 4  menu: test3    sub: 3
id: 5  menu: test4    sub: 2
id: 6  menu: test5    sub: 0
id: 7  menu: test6    sub: 6
----
Det er tidligere diskuteret at tabellen kunne se sådan ud
Men synes babyworm lige skal prøve det alligevel
Avatar billede dbangx Nybegynder
16. april 2005 - 12:06 #95
det var også ret sent jeg sad og legede med det igår. der kan være lidt gnidninger i selve access programmet, når man sidder med en database med en sådan relation, men når først det er sat op, så funker det fint.

Jeg har en eksempeldatabase med een tabel [tree] med kolonnerne:
id(auto)
data(tekst)
fkid(heltal)

hvor jeg har lavet en relation mellem id og fkid.
det eneste minus: i eksempelrecordene ovenfor kan du ikke i grafisk access slette posten med id 2 før jeg først har manuelt slette alle 2's "børn".
Det virker fint via sql. Det har vist noget med at gøre at access låser tabellen, når man vil slette, og så kan den jo ikke selv få lov til at slette "born".

Hvis der er nogen der vil se den, så sig til, så mailer jeg den.
Avatar billede busschou Praktikant
16. april 2005 - 14:35 #96
Jeg slettede ikke noget
Jeg oprettede en tabel og indtastede det som i min kommentar 08:22:08
jeg markerede gennemtving referentiel integritet og kaskadevis sletning af relaterede poster
Da jeg klikkede ok sagde den at den ikke kunne gennemføre referentiek integritet pga tabellen brød reglerne derfor.
Noget med at der skulle være en for hvert id. Så i mit eksempel er der jo ikke en sub = 7 selvom der er en id=7 måske derfor?
Havde samme typer som dig
Avatar billede dbangx Nybegynder
16. april 2005 - 20:03 #97
aha... det gjorde min også, men jeg lavede det omvendt:
oprette relationen
derefter indsatte jeg data.
Det fejler pga sub=0 da der ingen id=0 er at referere til. Løsningen er at lade være at skrive 0 i de øverste subber, men bare skrive ingenting. det er så et krav at det felt ikke er obligatorisk.

jeg har en tabel der ser således ud:

id    data    fkid
5    top   
8    under_1    5
9    under_2    8
10    under_1    5
11    top   

og eksekverer jeg så en "DELETE FROM tabel WHERE id=5" sletter den 5,8,9 og 10
Avatar billede busschou Praktikant
16. april 2005 - 23:12 #98
ok må se om babyworm kan bruge det uden den sub=0 og få det til at virke :o)
Avatar billede babyworm Nybegynder
20. april 2005 - 20:04 #99
HEy... Tusinde tak for svarene men er ikke sikker på hvad jeg ska gøre... :)

Jeg skal bruge aspkode til at slette det, og ikke via access :-)
Avatar billede busschou Praktikant
14. juli 2005 - 18:56 #100
babyworm >> kommet videre ? eller lukketid ? ;o)
Avatar billede babyworm Nybegynder
14. juli 2005 - 20:27 #101
Desværre... stadig et problem.. Skal have den til at slette i et loop i asp og ikke via databasen
Avatar billede babyworm Nybegynder
15. august 2005 - 13:28 #102
Ingen der kan svare på det ?
Avatar billede busschou Praktikant
15. august 2005 - 13:46 #103
ok nu kan jeg ikke huske alle svarene undervejs, men du kan lave det sådan her, omend det ikke er "køn" kode
Avatar billede busschou Praktikant
15. august 2005 - 13:49 #104
nevermind troede lige jeg havde en god ide :o(
Avatar billede busschou Praktikant
15. august 2005 - 14:14 #105
jeg kan ikke huske om vi har prøvet sådan her ..men prøv evt
------
Dim del_liste

' Sub som finder de Id´er der skal slettes
Sub find_slettes(id)
  del_liste = id & "," & del_liste
  set rs = conn.execute("select * from tabel where subid = "&id)
  do while not rs.eof
    find_slettes(rs("id"))
    rs.movenext
  loop
End Sub

' Sub der sletter alle ider
Sub slet_ider()
  del_liste = left(del_liste,len(del_liste)-1)
  idArr = Split(del_liste,",")
  for i=0 to ubound(idArr)
    conn.execute("delete from tabel where id = "&idArr(i))
  next
End Sub

' her kalder vi den så den sletter alt under id nr 2
find_slettes 2
slet_ider
Avatar billede babyworm Nybegynder
10. december 2012 - 10:46 #106
Poster du et scvar så du kan få point og 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