wake-up-neo.com

Hinzufügen mehrerer Werte zur Listbox in der Formularzugriffs-vba

Ich habe Probleme beim Hinzufügen von Werten zu mehreren Spalten in der Listbox in access. Ich habe eine Lösung wie die folgende versucht: Hinzufügen von Elementen in einer Listbox mit mehreren Spalten und diese: vba Listbox mehrspaltig hinzufügen , aber es funktioniert nicht. Listbox hat in meinem Fall keine Eigenschaft "List". Ich habe einen Kompilierungsfehler: 

enter image description here

Private Sub cmdAddPosition_Click()

Dim i As Integer

Me.lstAddPositions.ColumnCount = 7

If Me.txtAddPos.Value = i And i > 0 And i < 50 Then
     Me.lstAddPositions.AddItem (Me.txtAddPos.Value)
    'Me.lstAddPositions.AddItem(Me.txtAddPos.Value,(i))
     Me.lstAddPositions.List(0, i) = Me.txtAddPos.Value
    'Me.lstAddPositions.Column(0, i) = Me.txtAddPos.Value 'adding number of position
    'Me.lstAddPositions.Column(2, i) = Me.lstAddHidden.Column(0, 0) 'adding titel
End If

Me.lstAddPositions.Requery

End Sub

Was kann ich in dieser Situation tun?

5
Beacze

Hier ein Beispiel für das Hinzufügen von Elementen zu einem ungebundenen mehrspaltigen Listenfeld auf einem Zugriffsformular, wenn die Zeilenquelle eine Werteliste ist. Sie müssen es hinzufügen, indem Sie eine Zeichenfolge erstellen, die Sie in eine Werteliste einfügen.

Private Sub cmdAddPosition_Click()
    Dim i As Integer

    Me.lstAddPositions.ColumnCount = 7

    If Me.txtAddPos.Value = i And i > 0 And i < 50 Then
         Me.lstAddPositions.AddItem "Col1" & "," & "col2" & "," & "Col3" & "," & _
         "Col4" & "," & "Col5" & "," & "col6" & "," & "col7"  &";"     
    End If

    Me.lstAddPositions.Requery
End Sub
5
Zaider

Hier ein vollständiges Beispiel, wie Sie einer Listbox mehrere Spalten hinzufügen können.

SQL zum Erstellen der Tabelle:

DROP TABLE Test;
CREATE TABLE Test (TestID AUTOINCREMENT(1, 1),
                   TestName TEXT,
                   TestDescription TEXT,
        CONSTRAINT TestPKey PRIMARY KEY (TestID));
INSERT INTO Test (TestName, TestDescription)
          VALUES ('Test A', 'Testing Record A')";
INSERT INTO Test (TestName, TestDescription)
          VALUES ('Test B', 'Testing Record B')";
INSERT INTO Test (TestName, TestDescription)
          VALUES ('Test C', 'Testing Record C')";

Button Ereigniscode:

Private Sub TestButton_Click()
  Dim rst As DAO.Recordset
  Dim fld As DAO.Field
  Dim lb As ListBox
  Dim rowStr As String

  Set rst = CurrentDb.OpenRecordset("Test")
  Set lb = Me.TestListBox

  ' Set the number of listbox columns to reflect recordset fields
  lb.ColumnCount = rst.Fields.Count
  ' Set the row source type to Value List
  lb.RowSourceType = "Value List"
  ' Erase the listbox data so we can populate it
  lb.RowSource = ""

  ' If ColumnHeads property is enabled, then first record is field
  ' names.  Lets populate those.
  If lb.ColumnHeads Then
    rowStr = ""
    ' Build a string for each record
    For Each fld In rst.Fields
      rowStr = rowStr & replace(fld.Name,",","") & ","
    Next
    ' Strip final comma
    rowStr = Left(rowStr, Len(rowStr) - 1)
    ' Add each record (all fields) at once.
    lb.AddItem rowStr
  End If

  ' Loop through each record
  Do Until rst.EOF
    ' Build a record string and add it
    rowStr = ""
    For Each fld In rst.Fields
      rowStr = rowStr & replace(fld.Value,",","") & ","
    Next
    rowStr = Left(rowStr, Len(rowStr) - 1)
    lb.AddItem rowStr
    rst.MoveNext
  Loop

  ' Close and release objects
  rst.Close
  Set fld = Nothing
  Set rst = Nothing
  Set lb = Nothing
End Sub

Wenn Sie den Inhalt der Listbox ändern möchten, müssen Sie die Recordsource-Eigenschaft der Listbox neu erstellen. Meiner Erfahrung nach, der Versuch, einzelne Zeilen zu ändern, wenn mehrere Spalten beteiligt sind, funktioniert nie.

Hoffentlich hilft das aus.

0
DHW

Propety auswählen

Zeilenquellentyp => Werteliste

Code:

ListbName.ColumnCount = 2

ListbName.AddItem "Wert Spalte1; Wert Spalte2"

0
KONG

Legen Sie zunächst die folgenden Eigenschaften für das Listenfeld fest

Zeilenquellentyp: Werteliste Spaltenanzahl: 2

Angenommen, der Name des Listenfelds lautet: listenname Angenommen, Sie möchten zwei verschiedene Elemente in zwei verschiedenen Spalten hinzufügen, und zwei verschiedene Zeichenfolgen werden in gespeichert

String1 und String2 folgen dann dem Code

Code:

Dim strName as string
strName=String1&";"&String2
Me.listName.addItem strName
0

Ich habe Zaiders Antwort nicht ganz verstanden, aber als ich seine Probe nahm, endete dies mit dem Ergebnis für meine ungebundene Listbox:

Me.listbox2.AddItem (Me.listbox1.Column(0) & ";" & Me.listbox1.Column(1))
0
Kristian