ListView avec ADO... VB6

cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 - 12 juil. 2005 à 19:05
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005 - 13 juil. 2005 à 10:48
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

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
12 juil. 2005 à 19:18
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 ;-)
0
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 4
12 juil. 2005 à 19:44
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
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
12 juil. 2005 à 21:23
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)
0
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
13 juil. 2005 à 10:42
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
0

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

Posez votre question
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
13 juil. 2005 à 10:48
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
0