Avatar billede steensommer Praktikant
04. januar 2005 - 10:53 Der er 7 kommentarer og
1 løsning

Excel - tæller records i Access

Hej
Her er endnu et spørgsmål om Excel/access SQL :0)

Fra excel indsætter og henter jeg data i en access tabel med felterne: Tlf, Dato, Tid, Tekst

Jeg ville nu gerne tælle antallet af Records hvor Tlf og Dato er givet fra excel. Jeg havde forestillet mig at man måske kunne anvende DCount men jeg kan ikke få det flettet ind i min sql. Kan nedenstående tilrettes så ovenstående løses? Jeg skal bruge antallet til betinget formatering i Excel.

vh Steen

Sub AntalBesø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, Dato As Date
   
    Tlfno = ActiveWorkbook.Sheets("1. Kvartal").Range("H2").Value
    sPath = ActiveWorkbook.Path & "\"
   
    ' Create the connection string.
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source =" & sPath & "gps.mdb;"

    szSQL = "SELECT * FROM LKalender WHERE Tlf = '" & Tlfno & "' AND Dato = '" & Dato & "'"
   
    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, adLockReadOnly, adCmdText
   
 
    Set rsData = Nothing

End Sub
Avatar billede lorentsnv Nybegynder
04. januar 2005 - 11:38 #1
Kan du ikke få antal records med rsData.RecordCount?
Avatar billede lorentsnv Nybegynder
04. januar 2005 - 11:49 #2
Kig eventuelt på følgende link for lidt informationer om hvornår RecordCount virker:
http://www.devguru.com/Technologies/ado/quickref/recordset_recordcount.html
Avatar billede lorentsnv Nybegynder
04. januar 2005 - 11:53 #3
Endnu lidt informationer på brug af recordcount:
http://www.access-programmers.co.uk/forums/archive/index.php/t-71980.html
Viser bl.a. en alternativ måde:

dim recordcount

recordcount = 0

rsData.movefirst
do until rsData.eof
recordcount = recordcount + 1
loop
Avatar billede steensommer Praktikant
04. januar 2005 - 12:14 #4
Hej
Det er desværre noget af en loop der opstarter. Den tæller et ekstremt antal poster selvom der rent faktisk kun er få poster :0(
Avatar billede lorentsnv Nybegynder
04. januar 2005 - 12:40 #5
Loopet teller op antal poster der bliver returneret i dit recordset, så hvids du begrænser dit recordset med WHERE Tlf = '" & Tlfno & "' AND Dato = '" & Dato & "'", skal den ikke loope igennem flere records end hvad der bliver returneret.
Har du forsøgt at checke værdien af rsData.RecordCount? Forsøg eventuelt en rsData.MoveLast inden du checker RecordCount.
Avatar billede steensommer Praktikant
04. januar 2005 - 12:43 #6
Det fremgår at den ikke understøtter baglæns tælling. Værdien rsData.RecordCount melder desværre fejl (som det vist fremgår af de links du vist). Men jeg er enig med dig i at det virker underligt!
Avatar billede lorentsnv Nybegynder
04. januar 2005 - 13:21 #7
Der manglet åbenbart en linie i den kode jeg vist tidligere (rsData.MoveNext). Uden denne linie, står den  looper den bare på samme record - never endig loop.
RecodCount er lidt afhængig af hvilke type recordset du henter. I det første eksempel, åbnes recordsettet således:
rsChants.Open strQuery, , , adCmdTable

Jeg ved ikke om du kan bruge adCmdTable?

Ellers prøv denne kode, hvor jeg nu har tilføjet rsData.MoveNext:

dim recordcount

recordcount = 0

rsData.movefirst
do until rsData.eof
recordcount = recordcount + 1
rsData.MoveNext
loop
Avatar billede steensommer Praktikant
04. januar 2005 - 15:42 #8
Så fungerer det - flot Tak for hjælpen :0)
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