[VB6/ADO] listbox met meerdere columns met ADO ??

Pagina: 1
Acties:

  • mrFreeZe
  • Registratie: December 1999
  • Laatst online: 25-05-2025
Hi

Ongetwijfeld is er een simpele oplossing voor maar ik kom er niet zo 123 uit...

Ik wil met ADO in VB een listbox koppelen met meerdere columns uit de (access) db. In msaccess is dit een fluitje van een cent, maar in VB krijg ik er maar 1 kolom in.

Ik maak gebruik van een dataenvironment waarmee ik via jet40 een verbinding heb gemaakt naar de db...

Is er iemand die weet welke control / code ik moet gebruiken om dit voor elkaar te krijgen ??
Ik bedoel dus echt koppelen, niet vullen vanuit code...


In het plaatje hieronder kan je zien wat ik bedoel...

Thx alvast!

Afbeeldingslocatie: http://vriesge.www.cistron.nl/listbox.jpg

Like this yall...


Verwijderd

Geen listbox gebruiken maar een listview control. Die dan handmatig vullen zoals onderstaande code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Do While Not rsSPs.EOF
      ' add this SP to the listbox
      With lvLoggedSPCalls.ListItems
        Set itNew = .Add(, , "" & rsSPs("CallID").Value)
        itNew.Tag = rsSPs("CallID").Value
        ' add the rest in the subitems.
        itNew.SubItems(1) = "" & rsSPs("MetaDefinitionIDOrigin").Value
        itNew.SubItems(2) = "" & rsSPs("LoggedOn").Value
        If rsSPs("Exported").Value > 0 Then
            itNew.SubItems(3) = "True"
            itNew.SubItems(4) = "" & rsSPs("ExportedOn").Value
        Else
            itNew.SubItems(3) = "False"
            ' check the checkbox since this SP is not exported yet
            itNew.Checked = True
        End If
        
        itNew.SubItems(5) = "" & rsSPs("StoredProcedureCalled").Value
      End With
      rsSPs.MoveNext
    Loop

Je kunt ook een datagrid oid gebruiken. Die kun je wel binden aan een datacontrol, listview niet.

Listview uiteraard op detailed view zetten. De column widths kun je in code op de juiste width zetten. De juiste width bepaal je door je applicatie te debuggen, de columns handmatig met de muis de juiste width te geven, dan de app te 'break'en door een breakpoint te zetten in een routine van het window waar je listview in zit, en dan in het intermediate window de column width uitlezen van elke column. Die dan hardcoded toevoegen aan je form.load routine zoals hieronder:
code:
1
2
3
4
5
6
7
8
    ' Resize colums. These values are hardcoded, determined by resizing the columns, then
    ' reading back the actual widths. The values are in twips, which is resolution independent.
    lvLoggedSPCalls.ColumnHeaders(1).Width = 1320   ' CallID
    lvLoggedSPCalls.ColumnHeaders(2).Width = 1050   ' MDID Origin
    lvLoggedSPCalls.ColumnHeaders(3).Width = 2145   ' Logged On
    lvLoggedSPCalls.ColumnHeaders(4).Width = 840     ' Exported
    lvLoggedSPCalls.ColumnHeaders(5).Width = 2069   ' Exported On
    lvLoggedSPCalls.ColumnHeaders(6).Width = 8000   ' SP Name

  • mrFreeZe
  • Registratie: December 1999
  • Laatst online: 25-05-2025
Deze methode kende ik inderdaad, dat werkt opzich goed, bedankt voor de info..

Maar ik wil eigenlijk dus op dezelfde manier als in msaccess een listbox kunnen koppelen aan een datasource. (met voorkeur een dataenvironment-source)

Nogmaals met 1 veld gaat dit prima, maar meerdere velden per listbox lukt op de 1 of andere manier niet ...

Meer mensen met goede ideeen ??


Thx!

Like this yall...


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Een listbox heeft naar mijn idee slechts 1 kolom. Je kan natuurlijk wel al uw columns in die éné kolom proppen, maar dan is hij niet echt 'editable' meer.

https://fgheysels.github.io/