VBA ListView Set и Get с именем столбца - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь заполнить набор записей в ListView в VBA.Идея состоит в том, чтобы добавить имя столбца в качестве ключа, чтобы впоследствии я мог получить доступ к элементу с именем

. Вот как я заполняю список.Я хочу показать только один столбец, но оставить остальные свойства с шириной столбца 0

rs.MoveFirst
Dim fieldCounter As Integer
Dim columnWidth  As Integer
With lstProgram
    .View = lvwReport
    .Gridlines = True
    .FullRowSelect = True
    For fieldCounter = 0 To rs.Fields.count - 1
        columnWidth = 300
        If fieldCounter <> 0 Then
            columnWidth = 0
        End If
        .ColumnHeaders.Add fieldCounter + 1, rs.Fields(fieldCounter).Name, rs.Fields(fieldCounter).Name, columnWidth
    Next fieldCounter
    Do
        If Not (IsNull(rs.Fields(0).value)) Then
            Dim tmpItem As ListItem
            For fieldCounter = 1 To rs.Fields.count
                If fieldCounter = 1 Then
                    Set tmpItem = .listItems.Add(, , rs.Fields(fieldCounter - 1).value)
                Else
                    If Not IsNull(rs.Fields(fieldCounter - 1).value) Then
                        tmpItem.ListSubItems.Add text:=rs.Fields(fieldCounter - 1).value
                    Else
                        tmpItem.ListSubItems.Add text:=""
                    End If
                End If
            Next fieldCounter
        End If
        rs.MoveNext
    Loop Until rs.EOF
End With

Тогда я хотел бы сделать что-то вроде этого ...

Private Sub DisplayProgramItem(ByVal Item As MSComctlLib.ListItem)
On Error GoTo error
    '
    txtOpexID.text = Item.ListSubItems("OPEXID")
    txtName.text = Item.text
    cmbCluster.text = Item.ListSubItems("Cluster")

done:
   Exit Sub

error:
   ErrNotify Err, Me.Name, "lstProgram_ItemClick"
   Resume done
End Sub

Любая идея, какчтобы достичь этого?

Я нашел несколько интересных ссылок, но ни одна из них не решила мою проблему, я думаю, или, по крайней мере, я не смог решить проблему с дублированным ключом при попытке

Set tmpItem = .listItems.Add(,rs.Fields(fieldCounter - 1).Name, rs.Fields(fieldCounter - 1).value)

https://social.msdn.microsoft.com/Forums/windows/en-US/b96f9fbe-e128-4b49-833d-2a5f6e678dae/access-listview-subitem-text-by-column-header?forum=winforms

https://social.msdn.microsoft.com/Forums/vstudio/en-us/6ed95bf8-6e37-4306-87a6-2267dd83c1d1/refer-to-listview-subitems-by-name?forum=vbgeneral

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...