OVH Cloud OVH Cloud

Méthode de remplissage avec AddItem

21 réponses
Avatar
Laurent Merlet
Bonjour à tous,

Je souhaiterai remplir ma listbox avec la méthode AddItem à partir d'un
recordset, voici comment je procède :

Set rs = CurrentDb.OpenRecordset("SELECT TblAppels.NumAppel,
TblAppels.DateAppel, TblAppels.Contact, TblAppels.TypeAppel,
TblAppels.DateTraitement, TblAppels.Destinataire FROM TblAppels WHERE
TblAppels.TypeEmetteur ='Client Sun Service SAS' and TblAppels.Traite = -1
and TblAppels.NumClient = " & VarNumClient & " ORDER BY TblAppels.DateAppel
")
rs.MoveFirst
Me.LstAppels.Clear
Do Until rs.EOF
Me.LstAppels.AddItem rs![NumAppel]
rs.MoveNext
Loop
rs.Close
Set rs = Nothing

Le problème est qu'au déboggage il ne me reconnait pas les propriétés .Clear
et .AddItem. Pourtant ces propriétés sont disponibles dans la bibliothèque
MSForms / ListBox /

D'avance merci

Laurent

Pour info je suis sous Access 2000 SP3

1 réponse

1 2 3
Avatar
Rv
Correctif : cela ne fonctionne qu'à partir d'acces 2002.

A+

Rv

"Rv" a écrit dans le message de
news:
Salut,

Une alternative est possible en utilisant la propriété Recordset de la
liste pour y affecter un Recordset déconnecté préalablement construit et
chargé. Dans ce cas on garde la liste déroulante d'Acces, en mode
déconnecté, et il n'y pas de limitation liée au nombre d'enregistrements.
Exemple testé en Access2000 et 2002:

Dans un module standard:

' Construire et remplire un Rs deconnecté à partir d'une table ou requête
Public Sub remplirListe(strTableSource As String, objRsSourceListe As
ADODB.Recordset)
Dim objField As ADODB.Field
Dim objRsSourceData As New ADODB.Recordset
Dim strRequeteSource As String

strRequeteSource = "SELECT * FROM " & strTableSource
objRsSourceData.Open strRequeteSource, CurrentProject.Connection,
adOpenForwardOnly, adLockReadOnly
If Not objRsSourceData.EOF Then
For Each objField In objRsSourceData.Fields
Call objRsSourceListe.Fields.Append(objField.Name,
objField.Type, objField.DefinedSize)
Next
objRsSourceListe.Open , , adOpenKeyset, adLockOptimistic
Do While Not objRsSourceData.EOF
objRsSourceListe.AddNew
For Each objField In objRsSourceData.Fields
objRsSourceListe(objField.Name).Value = objField.Value
Next
objRsSourceListe.Update
objRsSourceData.MoveNext
Loop
End If
objRsSourceData.Close
Set objRsSourceData = Nothing
objRsSourceListe.MoveFirst
End Sub


*********************************************
Dans le formulaire contenant la liste (lstTest initialisée à partir de
table1):

Public objRsSourceListe As New ADODB.Recordset

Private Sub Form_Load()
initialiserListe
End Sub

Sub initialiserListe()
Set objRsSourceListe = New ADODB.Recordset
Call remplirListe("table1", objRsSourceListe)
Me.lstTest.RowSourceType = "Table/requête"
Set Me.lstTest.Recordset = objRsSourceListe
End Sub

A+

Rv

"Laurent Merlet" a écrit dans le message de
news:43885bb4$0$6644$
Bonjour à tous,

Je souhaiterai remplir ma listbox avec la méthode AddItem à partir d'un
recordset, voici comment je procède :

Set rs = CurrentDb.OpenRecordset("SELECT TblAppels.NumAppel,
TblAppels.DateAppel, TblAppels.Contact, TblAppels.TypeAppel,
TblAppels.DateTraitement, TblAppels.Destinataire FROM TblAppels WHERE
TblAppels.TypeEmetteur ='Client Sun Service SAS' and TblAppels.Traite
= -1


and TblAppels.NumClient = " & VarNumClient & " ORDER BY
TblAppels.DateAppel

")
rs.MoveFirst
Me.LstAppels.Clear
Do Until rs.EOF
Me.LstAppels.AddItem rs![NumAppel]
rs.MoveNext
Loop
rs.Close
Set rs = Nothing

Le problème est qu'au déboggage il ne me reconnait pas les propriétés
.Clear

et .AddItem. Pourtant ces propriétés sont disponibles dans la
bibliothèque


MSForms / ListBox /

D'avance merci

Laurent

Pour info je suis sous Access 2000 SP3








1 2 3