avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
31 déc. 2009 à 15:22
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
1 janv. 2010 à 15:53
Bonjour à tous.
Je un petit problème de code. En ce moment, je suis capable de faire apparaitre dans un listeview le contenu d'une base de donnée access.
Ce que je voudrais faire, c'est de placer 2 combobox, un pour choisir le nom et l'autre pour choisir le prénom. Ensuite, en cliquant sur le bouton OK, il me filtre la liste d'access avec seulement le nom désiré.
Premier combo = Com_nom
2e combo = Com_prenom
Comment faire s.v.p?
Voici mon code:
Private Sub cmdOk_Click()
Dim sSQL1 As String
Dim oRST1 As ADODB.Recordset
Set oRST1 = New ADODB.Recordset
Dim oConnect1 As ADODB.Connection
Set oConnect1 = New ADODB.Connection
sSQL1 = "SELECT [Nom],[Prénom],[Compagnie],[Division],[Événement],[Facture],[Service],[Coût] FROM [Table3]"
oConnect1.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Paramètres.Text2.Text & ";"
With Me.ListView1
'Set ListView style
.View = lvwReport
'This is not supported by ListView 5
.GridLines = True
.FullRowSelect = True
'Clear Header and ListItems
.ListItems.Clear
.ColumnHeaders.Clear
End With
'Set up column headers
With Me.ListView1.ColumnHeaders
.Add , , "Nom", 1800, lvwColumnLeft
.Add , , "Prénom", 1800, lvwColumnLeft
.Add , , "Compagnie", 2000, lvwColumnLeft
.Add , , "Division", 2000, lvwColumnLeft
.Add , , "Événement", 2000, lvwColumnLeft
.Add , , "Facture", 2000, lvwColumnLeft
.Add , , "Service", 2000, lvwColumnLeft
.Add , , "Coût", 2000, lvwColumnLeft
End With
oRST1.Open sSQL1, oConnect1
' Add items and subitems to list control.
On Error Resume Next
oRST1.MoveFirst
Do Until oRST1.EOF
'Set oRST1.Filter "Nom '" & Com_nom.Text & "' AND Prénom = '" & Com_prenom.Text & "'"
Set lstItem = Me.ListView1.ListItems.Add()
lstItem.Text = oRST1!Nom
lstItem.SubItems(1) = oRST1!Prénom
lstItem.SubItems(2) = oRST1!Compagnie
lstItem.SubItems(3) = oRST1!Division
lstItem.SubItems(4) = oRST1!Événement
lstItem.SubItems(5) = oRST1!facture
lstItem.SubItems(6) = oRST1!Service
lstItem.SubItems(7) = oRST1!Coût
'Next row
oRST1.MoveNext
Loop
'close recordset
oRST1.Close
DoCmd.Echo True
End Sub
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 31 déc. 2009 à 15:38
bonjour
je n'utiliserai pas 2 combo et un bouton OK, lorsqu'une seule combo suffit .
utiliser la concanténation de 2 champs en un seul champ : j'espère que s'est possible en access je le fais avec SQL Server
Sub Form_Load
Dim oRST1 as ...
oRST1.Open select [Nom]+ '_'+ {Prenom] from [table3]
while not oRST1.EOF
'Combo.AddItem nom+'_'+prenom
Combo.AddItem oRST1.field(0)
Wend
En Sub
Sub Combo_Click()
'pour filtrer recharger en faisant un select ,,, from table3 where nom=patie avant le caractère souligné AND prenom=partie parès le souligné
End sub
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 31 déc. 2009 à 17:16
salut,
et le WHERE? il faut l'utiliser ;)
sSQL1 = "SELECT [Nom] ....", OK
ensuite on peut imaginer quelque chose du genre:
dim sWhere as string
swhere = vbnullstring
if len(Com_nom.text)>0 then
swhere " WHERE [Nom] '" & replace(Com_nom.text, "'","''") & "'"
endif
if len(Com_prenom .text)>0 then
if len(swhere)=0 then
swhere " WHERE [Prénom] '" & replace(Com_prenom.text, "'","''") & "';"
else
swhere swhere & " AND [Prénom] '" & replace(Com_prenom.text, "'","''") & "';"
endif
endif
'un dernier ; pour finir et go
if len(swhere)=0 then swhere=";"
oRST1.Open sSQL1 & swhere, oConnect1
çà devrait le faire ;)
tapé ici, vérifier un brin la syntaxe...