[VB6] Invalid use of null met ListView

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 10:29
Hallo,

Ik probeer een listview te vullen met een record set. Volgens mij werkt de code wel tot hij een lege cell tegen komt. Wanneer het programma bij een cell komt zonderwaarde zegt hij "Invalid use of null". Hier is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub Form_Load()
    Dim strSqlComuputers As String
    Dim rsComputers As ADODB.Recordset
    
    Dim lstItem As ListItem
    
    Dim i, j As Integer
    
    strSqlComuputers = "SELECT * From Computers"
    
    Set rsComputers = New ADODB.Recordset

    rsComputers.Open strSqlComuputers, frmMain.dbCIS, adOpenKeyset, adLockOptimistic
    
    For i = 1 To rsComputers.Fields.Count - 1
        If i = 1 Then
            lvwComputers.ColumnHeaders(i).Text = rsComputers.Fields(i).Name
        Else
            lvwComputers.ColumnHeaders.Add(i).Text = rsComputers.Fields(i).Name
        End If
        
    Next

    While Not rsComputers.EOF
        For i = 1 To rsComputers.Fields.Count - 1
            If i = 1 Then
                Set lstItem = lvwComputers.ListItems.Add(, , rsComputers(i))
            Else
                lstItem.SubItems(i) = rsComputers(i).Value
            End If
        Next
        rsComputers.MoveNext
    Wend
End Sub


Weet iemand hier iets op?

  • Noordamski
  • Registratie: Oktober 2002
  • Laatst online: 25-07 23:00

Noordamski

yibbedi yibbeda

gebruik maken van iif() functie. Dus Iif(IsNull(rsComputers(i)), "", rsComputers(i).Value)

If you can't convince them with facts, dazzle them with bullshit


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Bekijk eens op het moment dat je die error krijgt, of de value die je in de cell wilt stoppen, niet toevallig Null is... ( IsNull() functie van VB) ...

[edit]
Iif werkt bij mijn weten niet, omdat alle parameters eerst bekeken worden. Als value null is, krijg je nog steeds die error.. (dacht ik ;))

[ Voor 34% gewijzigd door Crazy D op 03-05-2003 11:28 ]

Exact expert nodig?


Verwijderd

Veel makkelijker is om
rsComputers(i).Value & ""
te gebruiken. Als er dan een Null value is, wordt die omgezet naar een lege string, en als er geen Null is, maakt het ook niet uit :).
Dit houdt de code wat overzichtelijker dan IIf statements... (wat trouwens wel kan, want IsNull() geeft een boolean terug, pas als die false is, wordt de laatste parameter bekeken.)

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 10:29
Ik heb nu dit

lstItem.SubItems(i) = rsComputers(i).Value & ""

maar nu geeft hij invalid property value aan. Wat houdt dat dan in?

Verwijderd

Try:
lstItem.ListSubItems.Add ,,rsComputers(i).Value & ""

Dat zou moeten werken.

Maar dit gaat alleen als je rsComputers alleen maar strings bevat en niet bijv. nummers. Bij die kolommen kan je niet & "" gebruiken omdat dat alleen bij strings mag...

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

En daarom is het ook netter om gewoon een IsNull er omheen te ketsen (of in je query al een IsNull() zetten... select IsNull(veld1, '') As veld1, IsNull(numveld1, 0) as numveld1

Exact expert nodig?


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 10:29
Verwijderd schreef op 03 May 2003 @ 12:35:
Try:
lstItem.ListSubItems.Add ,,rsComputers(i).Value & ""

Dat zou moeten werken.

Maar dit gaat alleen als je rsComputers alleen maar strings bevat en niet bijv. nummers. Bij die kolommen kan je niet & "" gebruiken omdat dat alleen bij strings mag...
Hé! Deez werkt! Ook met getallen. Bedankt!
Pagina: 1