Avatar billede bobbedude Nybegynder
16. september 2003 - 07:34 Der er 18 kommentarer og
1 løsning

Tælle niavu dybde

Min database

NAV_PKEY = Autonummering
NAV_PARENT = Tal

Når jeg opretter en ny kategori får denne NAV_PARENT = 0

Den kategori jeg oprettede fik så NAV_PKEY = 10

Hvis jeg så opretter en under kategori til denne får den NAV_PARENT = 10

Det jeg gerne vil finde ud af er hvor mange underkategorier der er i en kategori.

Hvordan kan man tælle det ??
Avatar billede nielle Nybegynder
16. september 2003 - 08:08 #1
Node = 10

SQL = "SELECT count(*) AS Antal WHERE NAV_PARENT=" & Node
set rs = Conn.Execute(SQL)

Response.Write(rs("Antal"))
Avatar billede bobbedude Nybegynder
16. september 2003 - 10:57 #2
Nej det vil ikke virke se lige her

Over kategori / NAV_PKEY = 1 og NAV_PARENT = 0
Sub kategori /  NAV_PKEY = 2 og NAV_PARENT = 1
Sub i Sub  /  NAV_PKEY = 3 og NAV_PARENT = 2

Håber du forstår
Avatar billede nielle Nybegynder
16. september 2003 - 11:25 #3
Du vil også tælle "børn af børn"? Så prøv med:

Node = 10
Antal = CountSubNoder(Node)

function CountSubNoder(Node)
  SQL = "SELECT * WHERE NAV_PARENT=" & Node
  set rs = Conn.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
end function
Avatar billede bobbedude Nybegynder
16. september 2003 - 11:38 #4
tester lige
Avatar billede bobbedude Nybegynder
16. september 2003 - 11:42 #5
Jeg prøvede det her men fik en fejl

set rs = connect.Execute("Select * FROM navigation_menu")
if not rs.EOF then
Do until rs.EOF

Node = rs("NAV_PKEY")
Antal = CountSubNoder(Node)

function CountSubNoder(Node)
  SQL = "SELECT * WHERE NAV_PARENT=" & Node
  set rs = Conn.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
 
end function


rs.MoveNext
Loop
else
response.write "ingen felter"
end if


fejlen var

Microsoft VBScript compilation error '800a03ea'

Syntax error

/willesen.dk/www/admin/test.asp, line 9

function CountSubNoder(Node)
Avatar billede bobbedude Nybegynder
16. september 2003 - 11:46 #6
nej stop jeg kager lige i det
Avatar billede bobbedude Nybegynder
16. september 2003 - 11:48 #7
Hvis jeg kører dette

<%
set connect = server.createobject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("database/rcm.mdb")

Node = 1
Antal = CountSubNoder(Node)

function CountSubNoder(Node)
  SQL = "SELECT * From navigation_menu WHERE NAV_PARENT=" & Node
  set rs = Connect.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
end function

response.write Antal
%>

giver den 0 lige meget hvilket NAV_PKEY jeg sætter ind
Avatar billede bobbedude Nybegynder
16. september 2003 - 11:56 #8
oki har dette men det giver heller ikke noget brugbart men det giver heller ikke fejl

function CountSubNoder(Node)
  SQL = "SELECT * From navigation_menu WHERE NAV_PARENT=" & Node
  set rs = Connect.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
 
  response.write Antal &"<br>"
 
end function



set rsx = connect.Execute("Select * FROM navigation_menu")
if not rsx.EOF then
Do until rsx.EOF



Node = rsx("NAV_PKEY")
Antal = CountSubNoder(Node)

CountSubNoder(Node)


rsx.MoveNext
Loop
else
response.write "ingen felter"
end if
Avatar billede nielle Nybegynder
16. september 2003 - 11:58 #9
Hmm, det kan godt være at vi lige skal deklarere variablene inden i funktionen sådan at de bliver lokale i stedet for globale:

function CountSubNoder(Node)
  dim SQL, rs, Antal

  SQL = "SELECT * From navigation_menu WHERE NAV_PARENT=" & Node
  set rs = Connect.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
end function
Avatar billede bobbedude Nybegynder
16. september 2003 - 12:31 #10
Hey nielle >>
Nu har jeg dette og det kører uden at give fejl, men resultatet er bare en række 00000000000000000000 hvis der er 10 poster i databasen kómmer der 10 "0" ud.

function CountSubNoder(Node)
dim SQL, rs, Antal
  SQL = "SELECT * From navigation_menu WHERE NAV_PARENT=" & Node
  set rs = Connect.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
 
 
 
end function


set rsx = connect.Execute("Select * FROM navigation_menu")
if not rsx.EOF then
Do until rsx.EOF


Node = rsx("NAV_PKEY")
Antal = CountSubNoder(Node)

CountSubNoder(Node)
response.write Antal &"<br>"


rsx.MoveNext
Loop
else
response.write "ingen felter"
end if
Avatar billede nielle Nybegynder
16. september 2003 - 12:45 #11
function CountSubNoder(Node)
dim SQL, rs, Antal
  SQL = "SELECT * From navigation_menu WHERE NAV_PARENT=" & Node
  set rs = Connect.Execute(SQL)
 
  Antal = 0
 
  do while not rs.eof
    Antal = Antal + 1  ' Den her linje er vist ret vigtig ;^)
    Antal = Antal + CountSubNoder(rs("NAV_PKEY"))
    rs.MoveNext
  loop
 
  CountSubNoder = Antal
end function
Avatar billede bobbedude Nybegynder
16. september 2003 - 12:47 #12
ja det må vi nok sige den er hehe
Avatar billede bobbedude Nybegynder
16. september 2003 - 12:51 #13
det virker egentlig fint nu men resultatet viser kun hvor mange børn en nøgle har.

Jeg ville gerne have:

Over kategori / NAV_PKEY = 1 og NAV_PARENT = 0
Sub kategori /  NAV_PKEY = 2 og NAV_PARENT = 1
Sub i Sub  /  NAV_PKEY = 3 og NAV_PARENT = 2
Sub i Sub  /  NAV_PKEY = 4 og NAV_PARENT = 3

Så har NAV_PKEY 1 jo 3 sub dir
Avatar billede nielle Nybegynder
16. september 2003 - 12:52 #14
Takker points. :^)
Avatar billede bobbedude Nybegynder
16. september 2003 - 12:52 #15
du har ikke smidt et svar endnu :ø))
Avatar billede nielle Nybegynder
16. september 2003 - 12:57 #16
Dette her spørgsmål er lukket - der kan hverken lægges flere svar eller gives flere points. Jeg mente nu heller ikke at jeg ville have flere points - jeg takkede for dem jeg havde fået (der manglede dog et "for").
Avatar billede nielle Nybegynder
16. september 2003 - 13:00 #17
NAV_PKEY = 1
Response.Write CountSubNoder(NAV_PKEY)

- burde ellers give 3 som du ønsker
Avatar billede bobbedude Nybegynder
16. september 2003 - 13:04 #18
Hey Nille hvad er der lige galt med dette sp da jeg ikke har nogen boks så jeg kan give dig point ?????
Avatar billede bobbedude Nybegynder
16. september 2003 - 13:04 #19
nåår jeg skulle bare kikke længere op
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel