циклическое переключение значений в окне списка MS Access

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

11
задан HansUp 4 February 2016 в 16:41
поделиться

2 ответа

Вы можете выполнить цикл For для проверки каждой строки в списке и выполнить что угодно с выбранными строками. В этом примере я показываю второй столбец из выбранных элементов в списке lstLocations . (Нумерация столбцов начинается с нуля.)

Private Sub cmdShowSelections_Click()
    Dim lngRow As Long
    Dim strMsg As String

    With Me.lstLocations
        For lngRow = 0 To .ListCount - 1
            If .Selected(lngRow) Then
                strMsg = strMsg & ", " & .Column(1, lngRow)
            End If
        Next lngRow
    End With

    ' strip off leading comma and space
    If Len(strMsg) > 2 Then
        strMsg = Mid(strMsg, 3)
    End If
    MsgBox strMsg
End Sub

Примечание. Я предполагал, что вам нужны выбранные элементы из списка. Если вы хотите всех элементов, независимо от того, выбраны они или нет, вы можете использовать .ItemData , как предложил @DavidRelihan . Однако в этом случае вы можете получить их из списка .RowSource .

19
ответ дан 3 December 2019 в 01:13
поделиться

Вот как вы выполняете итерации в ListBox:

Dim i as Integer

For i = 0 to Me.ListBoxName.ListCount -1
   'Access each item with 
   'Me.ListBoxName.ItemData(i)
Next i
24
ответ дан 3 December 2019 в 01:13
поделиться