Avatar billede frede_manden Nybegynder
20. maj 2005 - 13:00 Der er 15 kommentarer og
1 løsning

Tjeke database (VBA)

Hvordan kan jeg checke om min loop er noget til den sidste "post" eller hvad det ny hedder "data" i ens database?? Og når den er det skal den IKKE forsætte..

Det skal ikke være kommandoen do Until bla.EOF osv.. Der må være en anden måde??
Avatar billede thesurfer Nybegynder
20. maj 2005 - 13:27 #1
EOF er nok den nemmeste måde.. med der er andre, mere indviklede, måder..

F.eks.:

"Select Count(*) as antal ..."

Så har du antallet af poster i variablen "antal" (der vil være et tal..)

i = 0
Do while i < antal

' din kode her
i = i + 1 ' læg 1 til tallet i variablen "i", for hver post
Loop

Den burde så hoppe ud, når "i = antal"
Avatar billede thesurfer Nybegynder
20. maj 2005 - 13:28 #2
PS: Opsætningen af SQL sætningen og COUNT, kommer an på hvilken database man arbejder med.. mener jeg.. dvs, SQL sætning til Access, virker muligvis ikke med MySQL osv..
Avatar billede frede_manden Nybegynder
20. maj 2005 - 13:52 #3
Hmm skal nok bruge en anden løsning
Avatar billede thesurfer Nybegynder
20. maj 2005 - 13:59 #4
Hvorfor?
Avatar billede frede_manden Nybegynder
20. maj 2005 - 14:59 #5
Jeg har en loop. som køre en sub rutine.

I den subrutine køre den ".movenext" kommandoen 20 gange i en loop.. Kan du forstille dig at på et tidspunkt er der ikke flere dater i min database den kan hente.. Så når du har hentet det sidste data fra databasen, og du skriver "movenext", for du jo en fejl, for der er ikke flere i databasen.. Er du med?? :-)
Avatar billede thesurfer Nybegynder
20. maj 2005 - 15:08 #6
Så gør du det jo forkert! Der skal jo ikke være 20x .movenext!

Der skal være .movenext, så mange gange som der er records.. og ikke mere..

Eksempel, med 12 records/poster/data/"kald de hvad du vil" i databasen..

"Select Count(*) as antal from DinTabel ..." ' ... = resten af din sætning

' antallet af records er nu gemt i variablen "antal". Dvs, hvis der er 20 records, så står der "20" i variablen "antal".

i = 0
Do while i < antal ' loopen kører så længe at tallet i variablen "i" er mindre end "12"

' din kode her
i = i + 1 ' læg 1 til tallet i variablen "i", for hver post

.movenext ' din .movenext-linie indsætter du her
Loop
Avatar billede thesurfer Nybegynder
20. maj 2005 - 15:11 #7
1) Hvorfor skulle der være 20x .movenext? Det kan du jo ikke bruge til noget.. med mindre, at du 100% sikker på, at der ALTID vil være mindst 20 records i databasen..

2) Hvorfor kan du ikke bruge "do Until bla.EOF" ?
Avatar billede frede_manden Nybegynder
20. maj 2005 - 15:20 #8
Det er meget svært at forklare hvad jeg skal lave.. så det bliver lidt svært med hjælpe?
Avatar billede thesurfer Nybegynder
20. maj 2005 - 15:32 #9
Ja, det bliver svært at hjælpe.. for jeg kan måske finde 5, 10 eller 100 måder at gøre det på, hvor du så hver gang siger "skal nok bruge en anden løsning"..

1) Jeg kan ikke se, hvorfor du ikke kan bruge "EOF".. det er jo lavet specifikt til det her..

2) jeg kan ikke se, hvorfor du ikke kan bruge metoden fra 20/05-2005 13:27:27.. den burde virke (næsten) lige så godt..

Jeg har en mistanke om, at de der "20" kommer et eller andet sted fra, og kan være variable..?


Men hvis du vil have hjælp, må du lige smide noget kode, og et eksempel..
Avatar billede terry Ekspert
21. maj 2005 - 13:45 #10
Do until rs.eof


rs.movenext
Loop
Avatar billede thesurfer Nybegynder
21. maj 2005 - 14:29 #11
terry> Læs lige sprøgsmålet igen / Read the question again :-)

frede_manden> du kan jo også bruge "if not rs.eof then rs.movenext".. men svar lige på 20/05-2005 15:32:15
Avatar billede frede_manden Nybegynder
21. maj 2005 - 15:22 #12
thesurfer hallo du siger noget med "if not rs.eof then rs.movenext" :D prøver lige :d
Avatar billede frede_manden Nybegynder
21. maj 2005 - 15:33 #13
thesurfer Giv et svar så får du point det virker :D
Avatar billede thesurfer Nybegynder
22. maj 2005 - 01:40 #14
Jeg troede at du overhovedet ikke ville bruge EOF :-)
Ellers havde jeg skrevet det noget før :-)

- Svar :-)
Avatar billede terry Ekspert
22. maj 2005 - 10:30 #15
Hi thesurfer>
Ref your input 21/05-2005 14:29:48. I agree but I was suré that it was because frede_manden wasnt using it correctly. And "if if not rs.eof then rs.movenext" works then it looks as though my assumptions are correct

But as long as frede_manden gets it working now then that whats important

Og god søndag :o)
Avatar billede frede_manden Nybegynder
22. maj 2005 - 13:02 #16
Jamen det var fordi jeg ikke kunne forstille mig at man kunne bruge EOF i den sammenhæng som du skrev... Tror kun man kunne skrive "do until rs.EOF"
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