webForumDet fria alternativet

Iterera genom en Collection

.NET

5 svar · 388 visningar · startad av Skies

Medlem sedan apr. 200317 inlägg
Frågan#1

Jag håller på med ett program där jag, genom att trycka på sök, ska kunna hämta information från en databas och lägga den informationen i en list view.

Till problemet: Hur gör jag för att iterera igenom min collCollectPerson och skriva ut resultatet i list view:n? Skickar med snutten av koden där det sker...

            Option Explicit 

           Dim oPerson As CPersonerCont 
           Dim ConnAdoConnection As ADODB.Connection 
           Dim rsAdoRecordset As ADODB.Recordset 
    
          Private Sub cmdAvbryt_Click() 
    
          Unload Me 
    
          End Sub 

        Private Sub cmdSök_Click() 

         Dim sPnr As String 
         Dim sEnamn As String 
         Dim collCollectPerson As Collection 
         Dim vElement As Variant 
         Dim itmx As ListItem 
    
         sPnr = txtPersonNummer.Text 
         sEnamn = txtEnamn.Text 
    
        Call oPerson.bGetPersoner(sPnr, sEnamn) 
    
        Set collCollectPerson = oPerson.PersonCollection 
        
        For Each vElement In collCollectPerson ' Här blir det fel!!!  
        'Den klagar på att den vill ha ett objekt??!!

       'Här vill jag skriva ut innehållet 
       'från collCollectPerson 
         
         
       Next vElement 
    
    
      End Sub 

      Private Sub Form_Load() 
    
     Set oPerson = New CPersonerCont 
     Set ConnAdoConnection = New ADODB.Connection 
    
    ConnAdoConnection.ConnectionString = "Laboration_3" 
    
    ConnAdoConnection.Open 
    
   Call oPerson.bSetConnection(ConnAdoConnection) 
    
   lstVSökPerson.ColumnHeaders.Add Text:="Personnummer", Width:=2300 
   lstVSökPerson.ColumnHeaders.Add Text:="Efternamn", Width:=2300 
   lstVSökPerson.ColumnHeaders.Add Text:="Förnamn", Width:=2300 
    
   lstVSökPerson.ListItems.Clear 
    
  End Sub

Nu är koden långt ifrån fullständig, så titta inte på saker som att jag inte rensat bort objekten osv , jobbar på att få grejerna utskrivna i list view:n först och främst ;)

Tack på förhand!! :e

Medlem sedan maj 20018 027 inlägg
#2

En collection brukar bestå av en massa objekt av något slag. Därför lyckas du nog bättre om du deklarerar vElement som "Object".

Medlem sedan apr. 200317 inlägg
#3

Gick inte iaf :( Den klagar ändå...

Medlem sedan juni 20022 599 inlägg
#4
     
Set collCollectPerson = oPerson.PersonCollection 

if not (collCollectPerson is nothing) then
	For Each vElement In collCollectPerson ' Här blir det fel!!!  
         
	Next vElement
else
	MsgBox "Oj, vi fick ingen collection. Vi får leta fel i koden för bGetPersoner."
end if

Sen ska nog både Variant och Object funka lika bra i det här fallet.

Medlem sedan okt. 20023 030 inlägg
#5

R // Såg att du gjorde det lite längre ner. :r

Medlem sedan apr. 200317 inlägg
#6

Hehe...japp. Men jag har löst det hela nu... det var en funktion i ena klassen som inte blev anropad vid class form_initialize som orsakade en tom collection..annars hade jag gjort rätt :)

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)