ListBox en VB6

Résolu
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008 - 1 mai 2007 à 17:03
Philppe2007 Messages postés 41 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 5 mars 2008 - 2 mai 2007 à 19:35
bonjour,

j'ai un bouton qui effectue une recherche et m'affiche les résultats trouvés dans une listbox, voici le code:
Private Sub devis_Click()
Dim bingoo As Boolean
Dim enr(10) As String ' As UInteger
Dim j As Byte
On Error GoTo Err_Update
strDB = "C:\Comerço V1.0.1\comerço.mdb"
strTable = "Devis"

Set oConn = New ADODB.Connection
oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
oConn.Open strDB

Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient
oRS.Open strTable, oConn, adOpenDynamic, adLockOptimistic, adCmdTable

Do While oRS.EOF = False
If oRS.Fields("Client") = Text1(1).Text Then
bingoo = True
List1.AddItem oRS.Fields("N°devis")
End If
oRS.MoveNext
Loop
If bingoo = True Then
    MsgBox ("Un ou plusieurs devis ont été trouvé!")
Else
MsgBox ("Aucun devis n'est trouvé!")
List1.Text = ""
     End If

Exit Sub
Err_Update:
MsgBox Err.Description
List1.AddItem ""
End Sub
Avec ce code les résultats sont affichés dans la listbox mais une fois je relance la recherche où je sais pertinement qu'il y a aucun résultat un message dans ce sens s'affiche mais ma listbox garde toujours les résultats précédents et c'est pareil quand je trouve des résultats au lieu qu'ils écrasent les anciens ils viennent se rajoutés à l'ancien résultat.

Comment palier à ça

Merci

7 réponses

basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
1 mai 2007 à 18:14
voici une solution plus fiable et stable à mon sens:
Private Sub List1_Click()
Dim a As String
a = List1.Text
Dim bingoo As Boolean
Dim enr(10) As String ' As UInteger
Dim enr10(10), enr20(10), enr30(10), enr40(10) As String
Dim enr1, enr2, enr3 As String
Dim j As Byte
On Error GoTo Err_Update
Frame1.Visible = True
For j = 0 To 3
    Text3(j).Visible = False
    Text4(j).Visible = False
    Text5(j).Visible = False
    Text6(j).Visible = False
    Next
' Chemin complet et nom de la base
strDB = "C:\Comerço V1.0.1\comerço.mdb"
' Nom de la table
strTable = "Devis"
 
' Ouverture connexion vers la base
Set oConn = New ADODB.Connection
oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
oConn.Open strDB
 
' Ouverture recordset sur la table
Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient
oRS.Open strTable, oConn, adOpenDynamic, adLockOptimistic, adCmdTable

Do While oRS.EOF = False
If oRS.Fields("N°devis") = a Then
bingoo = True
enr1 = oRS.Fields(devis_1.Text1.DataField)
enr2 = oRS.Fields(devis_1.Text2.DataField)
enr3 = oRS.Fields(devis_1.Text8.DataField)
For j = 0 To enr3 - 1
enr10(j) = oRS.Fields(devis_1.Text3(j).DataField)
enr20(j) = oRS.Fields(devis_1.Text4(j).DataField)
enr30(j) = oRS.Fields(devis_1.Text5(j).DataField)
enr40(j) = oRS.Fields(devis_1.Text6(j).DataField)
Next
End If
oRS.MoveNext
Loop
If bingoo = True Then
    For j = 0 To enr3 - 1
    Text3(j).Visible = True
    Text4(j).Visible = True
    Text5(j).Visible = True
    Text6(j).Visible = True
    Next
    Text2(0).Text = enr1
    Text2(1).Text = enr2
    Text2(2).Text = enr3
    For j = 0 To enr3
    Text3(j).Text = enr10(j)
    Text4(j).Text = enr20(j)
    Text5(j).Text = enr30(j)
    Text6(j).Text = enr40(j)
    Next
End If

Exit Sub
Err_Update:
MsgBox Err.Description
End Sub

Ce code permet de chercher la sélection de listbox dans la table en question, une fois le n°devis trouvé en charge dans une frame tous leséléments de ce devis sachant que les lignes sont variables d'où l'utilisation d'une boucle en fonction de nombre de ligne renvoyé par la recherche.

Merci à vous tous.
3
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
1 mai 2007 à 17:06
Pour supprimer les anciens résultats en cas où il y en a pas c'est:
List1.Clear

par contre je voulais en cas de résultat cliquer sur une ligne et afficher le détail de résultat comme s'y prendre svp.

Merci
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 mai 2007 à 17:40
Salut Basamir,

Fait un requête de séléction, maitenant tu devrais savoir les faire ....lol..
Sql "SELECT * FROM Devis WHERE TonChamp '" & List1.Text & "'"

A+
Exploreur

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 mai 2007 à 18:16
A+
Exploreur


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
1 mai 2007 à 18:18
qu'est qui va pas Explorer est ce que ma solution ne tient pas la route ou koi?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 mai 2007 à 18:36
je dirais plus :
je dirais
0
Philppe2007 Messages postés 41 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 5 mars 2008
2 mai 2007 à 19:35
Bonsoir

je vue le programme que vous avez développé sur listbox c'est superbe c'est pour cela je vous demande d'aide ,je suis débutant dans la programmation je vous demande de m'aider pour connecter un listbox avec un ado et d'ajouter des données avec un textbox et un bouton de commande. merci de m'aider
0
Rejoignez-nous