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. <code> Var gör du set oPerson? Man kan ju kolla med IsNothing Tack så hemskt mycket för all hjälp!Iterera genom en Collection
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...
<code>
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!!! 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
</code>
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!! Sv: Iterera genom en Collection
Call oPerson.bGetPersoner(sPnr, sEnamn)
Set collCollectPerson = oPerson.PersonCollection
For Each vElement In collCollectPerson ' Här blir det fel!!! Vill ha ett objekt?!
'Här vill jag skriva ut innehållet
'från collCollectPerson
Next vElement
</code>
Har du kontrollerat så att din oPerson.PersonCollection verkligen är någonting om det så bara är en tom collection. Den får nämligen inte vara Nothing, då blir det fel eftersom du inte har nån felhantering. Vad får du för felmeddelande?
/EggetSv: Iterera genom en Collection
Mitt förslag är egentligen som föregående. Stanna där det blir fel och kontrollera
innehållet i alla objekt du är beroende av.
Att den ber om ett objekt innebär egentligen bara att du inte har något objekt sedan
tidigare. Frågan är om det är oPerson som är Nothing så den inte hittar metoden,
eller om metoden inte returnerar ett objekt (i ditt fall en collection)
/EmmaSv: Iterera genom en Collection
Example
This example uses the IsNothing function to determine if an object variable is associated with any object instance.
Dim MyVar As Object ' No instance assigned to this variable yet.
Dim MyCheck As Boolean
' ...
MyCheck = IsNothing(MyVar) ' Returns True.
' ...
MyVar = "ABCDEF" ' Assign a string instance to the variable.
MyCheck = IsNothing(MyVar) ' Returns False.
' ...
MyVar = Nothing ' Disassociate the variable from any instance.
MyCheck = IsNothing(MyVar) ' Returns True.Sv: Iterera genom en Collection
Har lyckats lösa det hela och det var som du, egget, sa..om jag inte minns fel, att min collection inte innehöll något och det berodde på en funktion i CPerson-klassen som inte anropades i Form_initialize.