Avatar billede bumle90 Nybegynder
20. juli 2004 - 18:36 Der er 1 kommentar og
1 løsning

hvorfor overflower mit rekursive kald?

Public oAccessConn As ADODB.Connection
Public oAccessRS As ADODB.Recordset
Public oAccessRS2 As ADODB.Recordset
Public streg As String



Private Sub Form_Load()
   
    Set oAccessConn = New ADODB.Connection
   
        oAccessConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\xxxxx.mdb"
        Set oAccessRS = New ADODB.Recordset
   
    sql = "SELECT * FROM [Organisatoriske enheder] WHERE [Enhedens nummer]=[Administrativ reference] AND [Administrativ reference] <>0"
  oAccessRS.open sql, oAccessConn
 
  Do While Not oAccessRS.EOF
        GetRec oAccessRS.Fields(0)
    oAccessRS.MoveNext
  Loop
oAccessConn.Close
'streg = ""
'streg = Len(streg)
Debug.Print streg
End Sub


Sub GetRec(enhedsid As Integer)
    Dim abc() As Variant
    Dim ctr As Integer
    ctr = 0
    'streg = streg & "-"
  Set oAccessRS2 = New ADODB.Recordset
     
'------------------------------------------
        sql = "SELECT COUNT(*) FROM [Organisatoriske enheder] WHERE [Administrativ reference]=" & enhedsid & " AND [Administrativ reference] <>0 AND [Enhedens nummer]<>" & enhedsid
        oAccessRS2.open sql, oAccessConn
     
            ReDim abc(oAccessRS2.Fields(0))
       
        oAccessRS2.Close
        Set oAccessRS2 = Nothing

        Set oAccessRS2 = New ADODB.Recordset

        sql = "SELECT * FROM [Organisatoriske enheder] WHERE [Administrativ reference]=" & enhedsid & " AND [Administrativ reference] <>0 AND [Enhedens nummer]<>" & enhedsid
        oAccessRS2.open sql, oAccessConn

            Do While Not oAccessRS2.EOF
            abc(ctr) = oAccessRS2.Fields(0)
            ctr = ctr + 1
            oAccessRS2.MoveNext
            Loop
            If ctr = 0 Then
            Exit Sub
            End If
       
        oAccessRS2.Close
        Set oAccessRS2 = Nothing
'--------------------------------------------
       
        For x = LBound(abc) To UBound(abc)
            Debug.Print streg & abc(x)
            'Debug.Print streg
            streg = streg & "-"
            GetRec (abc(x))
            If Len(streg) > 0 Then
                streg = Mid(streg, 1, Len(streg) - 1)
            End If
        Next x
End Sub
Avatar billede bumle90 Nybegynder
20. juli 2004 - 18:39 #1
Undskyld, jeg glemte at skrive en tekst.
Efter en række gennemløb(Ikke særlig mange) får jeg en fejl med overflow i følgende linie:
GetRec (abc(x))
Dette forstår jeg ikke da der ikke bliver lavet mere en max 20-30 rekursive kald før den crasher...Og jeg sidder ved en rimelig stor PC, så jeg kan ikke tro at stakken er proppet. ER der noget galt med koden?
Avatar billede bumle90 Nybegynder
20. juli 2004 - 18:41 #2
fandt ud af det :P
Puttede et tal af størrelse 100000 ned i en integer
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