[VB6] Listbox met meerdere kolommen

Pagina: 1
Acties:

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Tweakers!

Ik heb 2 listboxen, één met beschikbare items en één met geselecteerde items.
De listbox met beschikbare items wordt gevuld met kolomnamen uit verschillende tabellen uit een MS Access database. Voor de overzichtelijkheid voeg ik eerst de tabelnaam (welke men niet kan selecteren) toe aan de listbox, alvorens ik alle kolomnamen toevoeg. Voor de daaropvolgende tabellen doe ik het volgende. Het resultaat is dan als volgt:

Visual Basic:
1
2
3
4
5
6
7
- Tabel1
Kolomnaam1
Kolomnaam2

-Tabel2
Kolomnaam1
Kolomnaam2


Als men kolomnamen heeft geselecteerd, verschijnen deze in de volgende listbox. Ze worden dan uit de eerste listbox verwijderd. Het moet echter ook mogelijk zijn een selectie ongedaan te maken, dwz een kolomnaam uit de tweede listbox terug te plaatsen naar de eerste listbox. Het probleem waar ik dan tegen aanloop is dat de kolomnaam onderaan de listbox wordt toegevoegd, ipv onder de tabelnaam waar hij toe behoort.

Ik heb geprobeerd een 2e kolom toe te voegen aan de listbox waar per kolomnaam de tabelnaam wordt toegevoegd, maar tot zover lukt het niet.

Weet iemand een passende oplossing? 8)7

Verwijderd

een string oid maken die de listindex opslaat en als je het ongedaan wilt maken roep je deze weer aan zodat ie het op de juiste plek zet. Moet je alles wat daarna komt wel weer opschuiven. Tenminste zo zou ik het doen.

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Verwijderd schreef op 11 juni 2004 @ 11:34:
een string oid maken die de listindex opslaat en als je het ongedaan wilt maken roep je deze weer aan zodat ie het op de juiste plek zet. Moet je alles wat daarna komt wel weer opschuiven. Tenminste zo zou ik het doen.
Dat lijkt me een oplossing, maar het is wel erg omslachtig.... Weet iemand hoe je meerdere kolommen gebruikt in een listbox, en daar een soort van identifier en index in kunt opslaan?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Je moet dan een listview control gebruiken

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
farlane schreef op 11 juni 2004 @ 12:12:
Je moet dan een listview control gebruiken
Dank je Farlane, dat heb ik inmiddels gedaan. Toch schijnt er toch iets fout te gaan, want de gegevens lijken kriskras op het scherm geprojecteerd te worden, in plaats van in de 3 kolommen AttribuutNaam, TabelNaam en Index.

De code is als volgt:

Visual Basic:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
Public Sub haalAttributenOp()
  
  Dim rRst As New ADODB.Recordset
  Dim sSql As String
  Dim sTabelnaam As String
  Dim i As Long, j As Long
  Dim iIndex As Integer
  
  For i = 0 To frmQueryTabellen.lstGekozenTabellen.ListCount - 1

    sTabelnaam = frmQueryTabellen.lstGekozenTabellen.List(i)

    'per tabel alle attributen ophalen
    sSql = "Select * from " & sTabelnaam
    rRst.Open sSql, modDatabaseConnectie.gConn, adOpenStatic, adLockOptimistic
    
    'frmQueryAttributen.lvwBeschikbareAttributen.ListItems
    Call frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:="-" & sTabelnaam, Index:=1)
    'lege kolommen:
    For j = 2 To frmQueryAttributen.lvwBeschikbareAttributen.ColumnHeaders.Count
      Call frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:="", Index:=j)
    Next j
        
    'per tabel alle attributen toekennen aan lstBeschikbareAttributen
    For j = 0 To rRst.Fields.Count - 1
      
      Call frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:=rRst.Fields(j).Name, Index:=1)
      Call frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:=sTabelnaam, Index:=2)
      Call frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:=iIndex, Index:=3)
      iIndex = iIndex + 1

    Next j
  
    'lege regel:
    For j = 1 To frmQueryAttributen.lvwBeschikbareAttributen.ColumnHeaders.Count
      Call frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:="", Index:=j)
    Next j
  
  'sluiten
  rRst.Close
  
  Next i
  
  'opruimen
  Set rRst = Nothing

End Sub


Weet iemand wat er schort aan bovenstaand stukje code? 8)7 8)7 8)7