Avatar billede blueeye97 Nybegynder
24. november 2005 - 20:20 Der er 13 kommentarer og
1 løsning

Recordcount virker ikke

Jeg er stødt på et mærkeligt problem. Jeg skal kunne vise hvor mange records der er i en database. I nogle af mine ældre programmer (lavet for ca. 3 år siden) behøver jeg f.eks. bare at skrive:

msgbox(data1.recordset.recordcount)

for at få vist antallet af records. Jeg har siddet og kodet i dag og ville også i det nye program tjekke antal records. Men det virker ikke. Der er 3 records i tabellen lige nu. Men hvis jeg skriver

Private Sub Command1_Click()
Label1 = Data1.Recordset.RecordCount
End Sub

så står der 1 i label1. Jeg er nødt til f.eks. i formens activate at lave et lille hop til sidste record og vice versa. Altså:

data1.recordset.movelast
data1.recordset.movefirst

Først derefter kan jeg få oplyst antallet af records. Er der en som har en forklaring på det ?
Avatar billede erikjacobsen Ekspert
24. november 2005 - 20:22 #1
Din databasedriver bestemmer om du kan bruge recordcount. Den sikre måde er at fyre en "SELECT count(*)..." af.
Avatar billede blueeye97 Nybegynder
24. november 2005 - 20:38 #2
ok. Kan du uddybe det lidt ?
Avatar billede erikjacobsen Ekspert
24. november 2005 - 20:42 #3
Næh. Joh, ok da.

Hvis driveren skal kende antallet, allerede når du ser første post fra databasen, skal databaseserveren lave mere arbejde. Så på grund af effektivitetsovervejelser har man fravalgt at gøre antallet tilgængeligt.

Man ser ofte dette, og tilsvarende, med MSSQL.
Avatar billede blueeye97 Nybegynder
24. november 2005 - 20:45 #4
Ok, så langt er jeg - næsten - med. :o))

Hvis jeg så vil trække antallet ud, er det så noget i retning af det her:

sqltxt = "SELECT count(*) FROM medlemmer;"

Og hvis det så er... Hvor får jeg så fat i tallet bagefter ?
Avatar billede erikjacobsen Ekspert
24. november 2005 - 20:48 #5
På samme måde som du ellers får ting ud. Du får een række med eet felt. Tag bare nummer 0 i dit recordset.
Avatar billede blueeye97 Nybegynder
24. november 2005 - 20:54 #6
Ja, nu røg jeg altså af i svinget men jeg er muligvis en smult fatsvag lige nu :o))

Hvis jeg under normale omstændigheder ville se en af felterne i tabellen ville jeg  f.eks. skrive:

label1.caption = data1.recordset.navn
Avatar billede erikjacobsen Ekspert
24. november 2005 - 20:59 #7
Så du siger aldrig "SELECT navn,adresse FROM ..."  ;) Jo, det gør du nok. Det er det samme du skal gøre her for at få antallet ud.
Avatar billede blueeye97 Nybegynder
24. november 2005 - 21:01 #8
Jeg tror vi snakker forbi hinanden. Selvfølgelig henter jeg specifikke felter ud. Men her er det jo ikke de enkelte felter der er interresante men det samlede antal af records ?
Avatar billede blueeye97 Nybegynder
24. november 2005 - 21:04 #9
Jeg mener... Select * er jo dem alle sammen....
Avatar billede erikjacobsen Ekspert
24. november 2005 - 21:17 #10
Jo, men det fungerer på præcis samme måde. Jeg er ikke nogen ørn til VB, så jeg kan ikke  fortælle hvad du skal gøre.
Avatar billede blueeye97 Nybegynder
24. november 2005 - 21:55 #11
ok... Ja, jeg ka ikke lige gennemskue det. Jeg smider

data1.recordset.movelast
data1.recordset.movefirst

ind når formen loades, så virker det som det altid har gjort...
Avatar billede blueeye97 Nybegynder
24. november 2005 - 22:55 #12
og du smider et svar... Du tog dig trods alt tid til at hjælpe :o)
Avatar billede erikjacobsen Ekspert
25. november 2005 - 09:38 #13
Jeg samler slet ikke på point, tak.
Avatar billede blueeye97 Nybegynder
25. november 2005 - 10:43 #14
OK.. Så siger jeg da tak :o)
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