ListView avec ADO... VB6

Signaler
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
Messages postés
79
Date d'inscription
mardi 4 juin 2002
Statut
Membre
Dernière intervention
29 juillet 2005
-
Salut...

C'est la première fois que j'utilise un listview et je suis pas capable de faire apparaitre de l'info dans le Listview..

Je veux quand je fais une recherche.. Humm voici le code que j'utilise pour la recherche

(BD2.Open "SELECT * FROM [dossiers_actif] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic)

Cette recherche est effectuée à partir du fichier Dossier_Actif.mdb et dans la table Dossier_Actif

Je veux faire apparaitre l'information du dossier rechercher mais provenant de la table Travaux en cours 2005.


Bref je veux faire apparaitre dans mon programme les information du dossier rechercher provenant des 2 tables... La table Dossier_Actif sera visible à partir de textbox (Pour cela il n'y a pas de problème) et la table Travaux en Cours 2005 sera visible dans le listview.


J'ai essayé plusieurs truc mais je n'y arrive pas... J'.ai seuelemnt réussi à faire apparaitre le nom des colone...

Private Sub Init_ListView()

'Initialisation de la listview
ListView1.View = lvwReport
ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear

ListView1.ColumnHeaders.Add , , "Dossier", ListView1.Width / 3 '0
ListView1.ColumnHeaders.Add , , "Date d'Ouverture", ListView1.Width / 3 ', lvwColumnCenter '1
ListView1.ColumnHeaders.Add , , "Nature du travail", ListView1.Width / 3 ', lvwColumnCenter '2
ListView1.ColumnHeaders.Add , , "Lots", ListView1.Width / 3 '/ 10
ListView1.ColumnHeaders.Add , , "Cadastre", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Clients", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Téléphonne", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Adresse", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Municipalité", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Livraison", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Terminé", ListView1.Width / 3
ListView1.ColumnHeaders.Add , , "Remarque", ListView1.Width / 3

Exit Sub



Et voici le code pour le Load


Dim Connection As New ADODB.Connection
Dim BD As New ADODB.Recordset
Dim BD2 As New ADODB.Recordset
Dim BD2005 As New ADODB.Recordset

Private Sub Form_Load()

'Type de bases de donnée pour la connexion (Pour Acces 2000 (4.0), pour la version 95 et 97 (3.51)
Connection.Provider = "Microsoft.jet.OLEDB.4.0"
'Chemin de la base de donnée (APP.PATH permet de ce mettre dans le chemin
'courant la ou ce trouve le projet)- Paramettrage de la chaine de connection
Connection.ConnectionString = App.Path & "\dossier_actif.mdb"
'Ouverture de la connection
Connection.Open

'Set BD = New ADODB.Recordset

'Ouverture de la requête sql dans le recordset
BD.Open "Select * from dossiers_actif", Connection, adOpenDynamic, adLockOptimistic
BD2005.Open "Select * from [TRAVAUX EN COURS 2005]", Connection, adOpenDynamic, adLockOptimistic

'Cette commande ne fonctionne pas (Init_ListView)
Init_ListView

Me.Show

Form_Activate

Call ListView

txtRechercheNormale.SetFocus

End Sub


Serait-il possible d'avoir un exemple de code pour pouvoir faire apparaitre l'info dans le listview....
Et comment code correctement le code que j'ai mit plus haut pour faire la recherche dans les 2 tables....

meric d'avance

5 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
salut



For Each tmpVente In colVente

Set Item = lvVentes.ListItems.Add()

Item.text = tmpVente.NumFacture

Item.SubItems(1) = tmpVente.client.nom

Item.SubItems(2) = Format(tmpVente.DateVente, "dd/mm/yyyy")

Next



C'est un peu objet mais le pincipe est la ;-)
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
4
Ok merci je vais essayé ton truc....


et pour ma commande Recherche....


Comment je fais pour lui dire de chercher dans deux tables...

Est ce que je suis mieux de rajouter une table dans ma recherche comme ce code
(il manque l'ajout de ma deuxième table (chose que je recherche depuis plusieurs jours)
BD2.Open "SELECT * FROM [dossiers_actif] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic

Ou bien je me fais une chose comme ca...

BD2.Open "SELECT * FROM [dossiers_actif] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic

BD2005.Open "SELECT * FROM [travaux en cours 2005] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic

Bref je lui ipose 2 condition et dans mon listview j'utiliserai mon BD2005 recordset ????????


J'attends de tes nouvelles...


Aussi dans l'exmple que tu m'as donné...
For Each tmpVente In colVente
Set Item = lvVentes.ListItems.Add()
Item.text = tmpVente.NumFacture
Item.SubItems(1) = tmpVente.client.nom
Item.SubItems(2) = Format(tmpVente.DateVente, "dd/mm/yyyy")
Next

Le tmpVente c'est quoi et le ColVente c'est quoi....

Je veux direje le remplace avec quoi par rapport à mon code.... J'ai encore un peu de difficul;té avec les boucles.. et je ne les utilisent pas souvent....


merci d'avance
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
RE



If (rsADO.RecordCount <> 0) Then

While Not rsADO.EOF

Set item = lvwSalarie.ListItems.Add

item.Text = rsADO![Numéro salarié]

item.Key = "ID" & item.Text

item.SubItems(1) = supprNull(rsADO![nom])

item.SubItems(2) = supprNull(rsADO![prenom])

item.SubItems(3) = supprNull(rsADO![Date])

rsADO.MoveNext

Wend

end if



Est - ce plus clair?

Dans l'autre exemple j'utilisais des collections.



La j'utilise des recordset ADO



Supprnull est une fonction utilitaire.

Public Function supprNull(ByVal data As Variant, Optional numeric As Boolean) As Variant

If IsNull(data) Then

If numeric Then

supprNull = 0

Else

supprNull = ""

End If

Else

supprNull = data

End If

End Function



Ca plaitait dans l'appli conc j'ai fait cette fonction.



J'ai pas chercher a comprendre la premiere partie je reagrderais plus tard . (Peut etre)
Messages postés
79
Date d'inscription
mardi 4 juin 2002
Statut
Membre
Dernière intervention
29 juillet 2005

Voici comment je procède pour charger un control "Listview"



Dans un module

------------------------



Option Explicit



Global Connexion As ADODB.Connection



'Procédure chargeant la ListeView



Sub ChargeLvClients(C1 As ListView)

Dim AdoRst As New ADODB.Recordset

Screen.MousePointer = vbHourglass

C1.ListItems.Clear

AdoRst.Open "Select * From Clients Order By Nom asc", Connexion

While Not AdoRst.EOF


With C1.ListItems.Add(, , IsN(AdoRst!Nom))
' Colonne 1


.Tag = AdoRst!IdClient


.SubItems(1) = IsN(AdoRst!Rue)

' Colonne 2


.SubItems(2) = IsN(AdoRst!Complément)
' Colonne 3


.SubItems(3) = IsN(AdoRst!CodePostal)
' Colonne 4


.SubItems(4) = IsN(AdoRst!Ville)

' Colonne 5


.SubItems(5) = IsN(AdoRst!Téléphone1)
' Colonne 6


.SubItems(6) = IsN(AdoRst!Téléphone2)
' Colonne 7


.SubItems(7) = IsN(AdoRst!Télécopie)

' Colonne 8


.SubItems(8) = IsN(AdoRst!Email)


' Colonne 9


.SubItems(9) = IsN(AdoRst!Codification)
' Colonne 10

End With

AdoRst.MoveNext

Wend

AdoRst.Close

Set C1.SelectedItem = Nothing

Screen.MousePointer = vbDefault

End Sub



'Fonction remplacant les valeurs null par un espace



Function IsN(ByVal Mot As Variant) As String

IsN = IIf(IsNull(Mot), " ", Mot)

End Function



Au Form_Load de ta Form

-----------------------------------



'Connexion à la base de données en ADO



Set Connexion = New ADODB.Connection

Connexion .Provider = "Microsoft.jet.OLEDB.4.0"

Connexion .ConnectionString = App.Path & "\MaBase.mdb"

Connexion .Open



'Chargement de la ListeView



Call ChargeLvClients(Me.MaListeViewClient)



'Permet de charger tout les clients de ma table "Clients" se trouvant dans la base de données




J'éspère que cela va t'aider.



En ce qui concerne le fait que tu ai besoin d'accéder aux données se
trouvant dans 2 tables, j'aurais besoin d'un peu plus d'information STP.



Les tables en question ont telle une intégrité référencielle, sont
elles liées? Si tel est le cas, il te suffirait de faire une jointure
entre les deux tables afin de récupérer les infos que tu as besoin.


Ricks27
Messages postés
79
Date d'inscription
mardi 4 juin 2002
Statut
Membre
Dernière intervention
29 juillet 2005

Petit précision pour que ce code fonctionne correctement :



Il faut que tu ai créé tes colonnes dans ton control ListView. Click droit sur le control, Propriété, Onglet En-têtes de colonnes.


Ricks27