[VB 6] Listview

Pagina: 1
Acties:

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

Ik loop tegen een probleem aan waar ik geen oplossing voor kan vinden.

Ik wil gebruik maken een listview-box, met daarin de kolommen Attribuutnaam (zichtbaar), Tabelnaam (Niet zichtbaar) en Index (niet zichtbaar). De kolommen heb ik reeds aangemaakt in de design-view.

Ik wil uit enkele tabellen uit een MS Access database alle attributen halen, en deze als volgt in de listview-box weergeven:

-Tabelnaam1
Attribuut1 Tabelnaam1 (onzichtbaar) Index (onzichtbaar)
Attribuut2 Tabelnaam1 (onzichtbaar) Index (onzichtbaar)

-Tabelnaam2
Attrbuut1 Tabelnaam2 (onzichtbaar) Index (onzichtbaar)

De weergave in mijn listview-box lijkt echter willekeurig en kriskras.

Mijn 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
48
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
    Set liAttribuut = frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:="-" & sTabelnaam, Index:=1)
    'lege kolommen:
    For j = 2 To frmQueryAttributen.lvwBeschikbareAttributen.ColumnHeaders.Count
      Set liAttribuut.SubItems(1) = 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 ik fout doe??
Ik heb reeds op internet gezocht, ook in de MSDN-library, maar ik kan de oplossing niet vinden....

[ Voor 5% gewijzigd door nenne op 14-06-2004 12:02 ]


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
wat bedoel je met willekeurig en kris-kras ??

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
pkouwer schreef op 14 juni 2004 @ 12:40:
wat bedoel je met willekeurig en kris-kras ??
Er is geen structuur in te ontdekken, gegevens worden soms naast elkaar maar ook onder elkaar toegevoegd, etc.

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 22-05 16:02

Tukk

De α-man met het ẞ-brein

Als je een order by in je query zet, dan krijg je de data tenminste gestructueerd binnen, nu weet je niets een in welke volgorde je de data binnen krijgt, dus weet je ook niet hoe de data in je listview terecht komt, toch?

[ Voor 44% gewijzigd door Tukk op 14-06-2004 12:53 ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • DarkSilence
  • Registratie: December 2002
  • Laatst online: 19-12-2025

DarkSilence

W3designer.nl

Visual Basic:
1
2
3
4
5
6
    'frmQueryAttributen.lvwBeschikbareAttributen.ListItems
    Set liAttribuut = frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:="-" & sTabelnaam, Index:=1)
    'lege kolommen:
    For j = 2 To frmQueryAttributen.lvwBeschikbareAttributen.ColumnHeaders.Count
      Set liAttribuut.SubItems(1) = frmQueryAttributen.lvwBeschikbareAttributen.ListItems.Add(Text:="", Index:=j)
    Next j


Wat je met deze code wil bereiken is mij een groot raadsel. Ik kan niet zeggen dat jou code erg duidelijk over komt. misschien kun je zeggen wat je wil bereiken met die code, want over welke atributen spreken we? Misschien als je de code wat beter uitwerkt dat je dan zelf ook de fout ziet. Wat eerder al is gezegd order by meegeven aan je sql statement kan wel eens wonderen doen. en anders controlleer de code die de lijst vult.
Want wat doet die for in de code erboven?

[ Voor 3% gewijzigd door DarkSilence op 14-06-2004 13:12 ]

W3designer.nl