21. august 2004 - 16:42Der er
4 kommentarer og 1 løsning
Rekursiv funktion giver "Exception occured"
Jeg har en rekursiv funktion i et adresse-kartotek, som angiveligt skal undersøge om en gruppen eller dens undergrupper indeholder personer
Dim Tom
function members(AdressCategoryID) SQL = "SELECT AdressCategoryID FROM AdressCategory WHERE ParentAdressCategoryID = "& AdressCategoryID &"" set rs = Myconn.Execute(SQL)
do while not rs.EOF members(rs("AdressCategoryID")) rs.movenext loop SQL2 = "SELECT AdressPropertiesID FROM AdressProperties WHERE AdressPropertiesAdressCategoryID_FK = "& AdressCategoryID &"" Set rsPersons = Myconn.Execute(SQL2) if not rsPersons.eof then Tom = "No" end if rsPersons.Close Set rsPersons = Nothing rs.Close Set rs = Nothing end function
members(AdressCategoryID)
if Tom = "No" then response.write "Der findes personer" else response.write "Gruppen/grupperne er tomme" end if
Men jeg får fejlen "Exception occured" og der henvises til linien "SQL2 = "SELECT AdressPropertiesID FROM ...." Nogen der kan gennemskue problemet????
Det kan måske have noget at gøre med hvordan dine variabler bliver oprettet. Her tænker jeg specielt på din rs og rsPersons.
Første gang du kommer ind i funktionen henter du data ind i rs. Så laver du et/flere rekursiv kald til samme funktion, hvor du henter data ind i rs igen. Da rs er blevet oprettet globalt, betyder det at de første data du hentede ind i rs bliver overskrevet anden gang du kommer ind i funktionen. Du skal derfor oprette dine variabler i funktionen. Så eksistere de kun i funktionen, men der bliver oprettet en ny variabel hver gang funktionen bliver kaldt (selv om de hedder det samme).
function members(AdressCategoryID) dim rs, rsPersons ... ... end function
Jeg har ganske enkelte flyttet funktionen over i et nyt dokument, og nu virker det. Det var givet "noget" på den anden side, der "ødelagde" funktionen - undersøgte det ikke til bunds. Orker ikke i aften.
Men din forklaring er jo uhyre nyttig, næste gang jeg kæmper med noget tilsvarende :-)
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.