web-dev-qa-db-fra.com

Ajout de valeurs à plusieurs colonnes dans listbox dans un accès au formulaire vba

J'ai un problème avec l'ajout de valeurs à plusieurs colonnes dans listbox en accès. J'ai essayé une solution comme celle-ci: Ajout d'éléments dans une listbox à plusieurs colonnes et ceci: vba listbox multicolumn add [duplicate] , mais ça ne marche pas. Listbox dans mon cas n'a pas de propriété "Liste". J'ai une erreur de compilation: 

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

Que puis-je faire dans cette situation?

5
Beacze

Voici un exemple d'ajout d'éléments à une zone de liste non liée à plusieurs colonnes d'un formulaire d'accès si la source de la ligne est une liste de valeurs. Vous devez l'ajouter en créant une chaîne que vous placez dans une liste de valeurs.

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

Voici un exemple complet de la façon dont vous pouvez ajouter plusieurs colonnes à une zone de liste.

SQL pour créer la table:

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')";

Bouton Code d'événement:

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

Si vous souhaitez modifier le contenu de la zone de liste, vous devez supprimer et reconstruire la propriété recordsource de la zone de liste. D'après mon expérience, essayer de modifier des lignes individuelles lorsque plusieurs colonnes sont impliquées - ne fonctionne jamais.

Espérons que cela aide.

0
DHW

sélectionnez la propriété

Type de source de ligne => Liste de valeurs

Code:

ListbName.ColumnCount = 2

ListbName.AddItem "valeur column1; valeur column2"

0
KONG

Tout d'abord définir les propriétés suivantes pour la zone de liste

Type de source de ligne: liste de valeurs Nombre de colonnes: 2

Supposons que le nom de la list box soit: listName Supposons que vous vouliez ajouter deux éléments différents dans deux colonnes différentes et que deux chaînes différentes soient stockées dans

String1 et String2 puis suivez le code

Code:

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

Je ne comprenais pas très bien la réponse de Zaider, mais en prenant son échantillon, je me suis retrouvé avec ceci qui a fonctionné pour ma liste déroulante non liée:

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