Avatar billede steensommer Praktikant
09. januar 2005 - 22:48 Der er 7 kommentarer og
1 løsning

Fejl i SQL Count

Hej

Følgende kode kommer med fejlmeddelelsen (med fejl med rsData.MoveFirst):
Run-Time Error 3021: Either BOF or EOF is True, or the current record has been deleted


Sub AntalKBesøg()
'On Error Resume Next
    Dim rsData As ADODB.Recordset
    Dim szConnect As String
    Dim szSQL As String
    Dim sPath As String
    Dim Tlfno As String
    Dim Dato As Date, CRange As Range, C As Range, R As Range
   
    Set CRange = ActiveWorkbook.Sheets("1. Kvartal").Range("KDatoer")
   
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
       
    sPath = ActiveWorkbook.Path & "\"
       
    ' Opret forbindelse til DB
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source =" & sPath & "gps.mdb;"
    cn.Open szConnect
   
    Tlfno = ActiveWorkbook.Sheets("1. Kvartal").Range("AB3").Value
   
    For Each C In CRange
        If C.Interior.ColorIndex <> xlNone Then
       
                Dato = C.Value

                szSQL = "SELECT * FROM KKalender WHERE Mobil = '" & Tlfno & "' AND Dato = '" & Dato & "' AND Tekst <> '""'"
               
                Set rsData = New ADODB.Recordset
                rsData.Open szSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
               
                Do Until rsData.EOF
                RecordCount = 0
                rsData.MoveFirst
                RecordCount = RecordCount + 1
                rsData.MoveNext
               
                Count = (RecordCount / 2)
           
                If Count > 2 Then
                    C.Interior.ColorIndex = 3
                ElseIf Count > 0 And Count < 3 Then
                    C.Interior.ColorIndex = 6
                Else
                    C.Interior.ColorIndex = 4
                End If
               
                Loop
               
                MsgBox Dato & " " & Count
         
                Set rsData = Nothing
        End If
       
    Next C
   
  ' Exit Sub

'slut:
'MsgBox "Fejl i Modul 20"
'C.Interior.ColorIndex = 4
'Set rsData = Nothing
End Sub

vh Steen
Avatar billede bak Forsker
09. januar 2005 - 23:18 #1
du mangler et check på om dit recordset er tomt.
lige efter rsdata.open sætter du denne linie

If Not rsData.EOF Then
og lige før
set rsdata = Nothing sætter du en END IF
Avatar billede sjap Praktikant
09. januar 2005 - 23:23 #2
Lyder som om du prøver at flytte til den første record i et tom datasæt. Er du sikker på der er data i datasættet?
Avatar billede sjap Praktikant
09. januar 2005 - 23:26 #3
Jeg er simpelthen al for langsom på denne tid af døgnet, så jeg smutter ind og glor lidt tv :0)
Avatar billede bak Forsker
09. januar 2005 - 23:30 #4
Det vil jeg så også gøre, nu hvor vi er enige om fejlen, sjap :-)
Avatar billede steensommer Praktikant
10. januar 2005 - 00:30 #5
Hmmm
Der fremkommer følgende fejl efter indsættelse af ovenstående:
Object variable or With block variable not set (Error 91) med fejl udfor If Not rsData.EOF Then
Avatar billede erikjacobsen Ekspert
10. januar 2005 - 04:43 #6
Jeg vil tro at du blot skal ændre

                Do Until rsData.EOF
                RecordCount = 0
                rsData.MoveFirst

til

                RecordCount = 0
                Do Until rsData.EOF
Avatar billede steensommer Praktikant
10. januar 2005 - 08:48 #7
Hej
Problemet var at der var smuttet disse 2 sætninger ud:

                Set rsData = New ADODB.Recordset
                rsData.Open szSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText

vh Steen
Avatar billede steensommer Praktikant
22. januar 2005 - 17:34 #8
Undskyld
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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