Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:05 Der er 14 kommentarer og
1 løsning

RecordSet ind i Array

Har forsøgt forskellige koder, men kan ikke få det til at stemme hel. Jeg vil have denne SQL streng ind i et 2D array, så målernummer er knyttet til beskrivelsen.

SQL = "SELECT Måler, Betegnelse FROM Målere WHERE (((Bemærkning) Like '*elektronisk aflæsning*'));"
17. februar 2005 - 14:08 #1
Du kan bruge GetRows således:

array = rs.GetRows( [Rows], [Start], [Fields} )

De 3 parametre kan bare udelades, hvis du vil have alle poster med.
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:11 #2
Den havde jeg også fat i:

Dim varMyArray As Variant
Set rst = dbs.OpenRecordset("Table1", dbOpenSnapshot)
varMyArray = rst.GetRows(120)

Men hvordan "looper" jeg så igennem array'et?
17. februar 2005 - 14:16 #3
Noget á la dette:

Dim n as long
for n = 1 to 120 'eller rs.recordcount
    debug.print varMyArray(n)
next n
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:17 #4
Har prøvet med
  For i = 0 To i = 10
    Debug.Print varMyArray(i)
  Next i
Men den stopper efter første gennemløb
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:20 #5
Hmmm....når jeg kører denne kode, får jeg vist 1 måler og 1 betegnelse, så stopper koden:

  For i = 0 To 10
    Debug.Print varMyArray(i)
  Next i
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:21 #6
Og så får jeg en fejl:
Elementet blev ikke fundet i samlingen.
Når jeg laver en forespørgsel og kører SQL'en, får jeg 24 poster! :(
17. februar 2005 - 14:28 #7
hvad med f.eks.
Debug.Print varMyArray(1,i)  'når det nu er 2d?
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:35 #8
SÅ er den ¤%¤% tæt på!
  varMyArray = rst.GetRows(28)

  For i = 0 To rst.RecordCount - 1
    Debug.Print varMyArray(0, i) & ":" & varMyArray(1, i)
  Next i

Mangler bare at definere det, så jeg ikke er bundet til
rst.GetRows(28)
17. februar 2005 - 14:36 #9
jamen, du skal jo bare skrive:

rst.GetRows(rst.RecordCount)
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:37 #10
Det prøvede jeg lige før og fik en Subscript error.
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:44 #11
Debug.Print rst.RecordCount
giver værdien 1! :(
17. februar 2005 - 14:46 #12
ah, så skal du lige lave en
rst.Movelast
rst.Movefirst

inden din GetRows

Det skyldes at DAO-recordset ikke kender antal records, før den har været et smut i "bunden".

ADO-reordsets er mere intelligente
Avatar billede puppetmaster Nybegynder
17. februar 2005 - 14:47 #13
Så var den der! Takker! :)
17. februar 2005 - 14:49 #14
Super :o)
Avatar billede madschristensen Nybegynder
17. februar 2005 - 14:51 #15
Ja - hvis blot man anvender recordset med static cursor ;O)) Ellers kan de også være lidt træge!
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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