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 /
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
Correctif : cela ne fonctionne qu'à partir d'acces 2002.
A+
Rv
"Rv" <herve.pinard@free.fr> a écrit dans le message de
news:uARM9CC9FHA.3592@TK2MSFTNGP12.phx.gbl...
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" <laurent.merlet@wanadoo.fr> a écrit dans le message de
news:43885bb4$0$6644$8fcfb975@news.wanadoo.fr...
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
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