Avatar billede Morten Nybegynder
01. oktober 2003 - 19:54 Der er 6 kommentarer og
2 løsninger

Overfør recordset til array/listebox

Hej

Nu har jeg endelig snart fattet at hente og skrive data mellem Access og Excel...

MEN... der er mindst en brist...

Når jeg overfører et recordset til et array/listebox løber jeg gennem recordsettet - men har på fornemmelsen at det kan gøres med en enkelt linie!??

Sådan gør jeg pt. (og det virker da fint... men mine tabeller er små og jeg tænker at det måske ikke glider så nemt med mange data...?)

    ' lav SQL Statement.
    szSQL = "SELECT * " & _
            "FROM " & GetName("strDefaultsTable")

    ' Lav Recorset object og kør queryen.
    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, _
                adLockReadOnly, adCmdText




  Do While Not rsData.EOF
    If rsData("settings_control") <> "" Then
    tmpControl = rsData("settings_control")
      settings.Controls(tmpControl) = rsData.Fields("Værdi")
    End If
    rsData.MoveNext
Loop
Avatar billede Morten Nybegynder
01. oktober 2003 - 19:56 #1
forkert stump kode... her er den rigtige...

    With rs
        ' open the recordset
        .Open DBTable, cn, adOpenStatic, adLockOptimistic, adCmdTable

        Do While Not rs.EOF ' the field names
          i = i + 1
          rs.MoveNext
        Loop
          rs.MoveFirst
        ReDim Preserve Listen(0 To i)
        i = 0
        Do While Not rs.EOF ' the field names
          i = i + 1
          Listen(i) = rs("Value")
          rs.MoveNext
        Loop
01. oktober 2003 - 20:12 #2
Ved ikke om jeg har forstået det rigtigt........ here goes hvis du kun vil have indholdet i en ListBox

With rs
    ' open the recordset
    .Open DBTable, cn, adOpenStatic, adLockOptimistic, adCmdTable

    Do While Not rs.EOF ' the field names
      ListBox1.AddItem rs("Value")
      rs.MoveNext
    Loop
End With
01. oktober 2003 - 20:15 #3
....eller både list og array på en gang

With rs
    ' open the recordset
    .Open DBTable, cn, adOpenStatic, adLockOptimistic, adCmdTable

    Do While Not rs.EOF ' the field names
      i = i +1
      Redim Preserve Listen(0 To i)
      Listen(i) = rs("Value")
      ListBox1.AddItem rs("Value")
      rs.MoveNext
    Loop
End With

Måske var det egenligt bare dette her du var ude efter... med automatisk forøgelse af array'et....

With rs
    ' open the recordset
    .Open DBTable, cn, adOpenStatic, adLockOptimistic, adCmdTable

    Do While Not rs.EOF ' the field names
      i = i +1
      Redim Preserve Listen(0 To i)
      Listen(i) = rs("Value")
      rs.MoveNext
    Loop
End With
Avatar billede Morten Nybegynder
01. oktober 2003 - 20:38 #4
Næ egentlig ikke nogen af dem... ;O)

Det jeg ville vide var om man kunne undgår rs.movenext

og så få af vide om der ikke fandtes en funktion al´s Listbox.list= rs.???
Avatar billede bak Forsker
01. oktober 2003 - 20:45 #5
et hurtigt skud
dim vTest as variant
vTest=rs.GetRows
Avatar billede Morten Nybegynder
01. oktober 2003 - 20:52 #6
Du er genial Bak eller også har du bare rodet med dette for længe *LOL*

Det var lige den jeg søgte - smid venligst et svar så får du og F.D. nogle points for jeres hjælp endnu engang....
Avatar billede bak Forsker
01. oktober 2003 - 21:03 #7
Jeg tror det er det sidste :-)
Avatar billede Morten Nybegynder
01. oktober 2003 - 21:23 #8
7 til F.D. for ulejligheden og 8 til Bak for løsningen...

Go'aften til alle...
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