ListView explication....

Résolu
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 - 14 juil. 2005 à 13:48
wmlogistic Messages postés 1 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 13 juin 2006 - 13 juin 2006 à 09:12
Bonjour...

J'ai besoin d'explication a propos du ListView...

J'utilise ACCESS, ADO et VB6


Voici mon code...


While Not BD2005.EOF
With ListView1.ListItems.Add(, , IsN(BD2005!Dossier)) ' Colonne 1
.Tag = AdoRst!IdClient

.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE]) ' Colonne '2
.SubItems(2) = IsN(BD2005![NATURE DU TRAVAIL]) ' Colonne 3
.SubItems(3) = IsN(BD2005!LOTS) ' Colonne 4
.SubItems(4) = IsN(BD2005!CADASTRE) ' Colonne 5
.SubItems(5) = IsN(BD2005!CLIENTS) ' Colonne 6
.SubItems(6) = IsN(BD2005!TELEPHONE) ' Colonne 7
.SubItems(7) = IsN(BD2005!ADRESSE) ' Colonne 8
.SubItems(8) = IsN(BD2005![DATE DE LIVRAISON]) ' Colonne 9
.SubItems(9) = IsN(BD2005!TERMINE) ' Colonne 10
.SubItems(9) = IsN(BD2005!REMARQUES) ' Colonne 11
End With
BD2005.MoveNext
Wend
BD2005.Close
Set ListView1.SelectedItem = Nothing


Cette ligne plante dans mon programme et elle n'est pas bien codé....

With ListView1.ListItems.Add(, , IsN(BD2005!Dossier)) ' Colonne 1
.Tag = AdoRst!IdClient

J'aimerais savoir comment la changer pour que ca fonctionne avec mon code...

Le nom de ma ListView = ListView1
Recordset = BD2005
Ficchier ACCESS = Dossier_Actif.mdb
Nom de la Table = [Travaux en cours 2005]

J'aimerais sasoir qu'est ce que le IsN dans la ligen de code précédente et à quoi sert le TAG ??? Bon dans mon code je n'ai pas de IdClient. À vrai dire cette ligne (.Tag = AdoRst!IdClient) n'a pas été modifier avec mon code je l'ai laisse comme l'exemple que j'ai recu.

Je me demande que veux dire le IsN mais je crois que c'est une variable mais je veux savoir quelle est cette variable. Je veux la modifier mais je ne sais pas avec quelle variable (si c'est une varaible) la changer pour que ca fonctionne avec mon code..

Meric d'avance..

13 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 juil. 2005 à 23:10
enlève les parenthèses



ListView1.ListItems.Add, , IsN(BD2005!Dossier)


Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
15 juil. 2005 à 13:56
sans le With/End With il fallait pas les
parenthèses, mais tu pouvais pas faire la 2ème ligne puisqu'il n'y a
plus de référence !!!!



ListView1.ListItems.Add , , IsN(BD2005!Dossier)

<strike>.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE])

</strike>


avec le With/End With il faut les parenthèses, et là tu peux mettre tes .subitems



With ListView1.ListItems.Add ( , , IsN(BD2005!Dossier))

.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE])

End With





pour remplacer le With/End With, il y a une autre solution, en espérant que ça va pas trop te perturber:



Dim Ligne As ListItem

Set Ligne = ListView1.ListItems.Add

Ligne.Text = IsN(BD2005!Dossier)

Ligne.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE])




Daniel
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
14 juil. 2005 à 16:31
Salut,

Heu, si c'est TON code, comme tu le dis comment se fait-il que tu ne saches pas ce que tu écris ?

Bon, voilà ce que je pense de TON code.

1 - je suppose que la mise en forme de la listview est faite avant, par ex :
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add ...
ListView1.ColumnHeaders.Add ...
etc ...
Sinon, ça ne marchera pas.

2 - IsN doit être une fonction astucieuse pour éviter les plantages quand le champs est null et en même temps pour éviter d'alourdir le code avec d'innombrables tests, quelque chose comme :

Function IsN(Valeur as string) as string
if isnull(Valeur) then
IsN = ""
else
IsN = Valeur
end if
end function

3 - le Tag, dans le cas présent sert à mémoriser l'id de l'enreg que tu affiches. A quoi ça sert ? tout simplement à retrouver le bon enreg dans le recordset pour le modifier ou le supprimer ou ..., par ex :

AdoRst.Findfirst "IdClient = " & listview1.SelectedItem.Tag
ou
"select * from latable where IdClient = " & listview1.SelectedItem.Tag

4 - Peut-être un tit cafouillis entre les recordset BD2005 et AdoRst ? Dans TON code, le contenu du Tag sera le même pour toutes les lignes. M'enfin, puisque c'est TON code, tu dois savoir ce que fais.



-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 4
14 juil. 2005 à 18:36
Rectification....

J'entendais pas mon code... mon programme

J'ai spécifié que le code à propos du listview était un exemple donné par quelqu'un du site (mais j'ai oublié le nom de la personne qui me l'a donné)...


héhéhéhéhé

Donc MON code, jusqu'à présent je le comprend mais je ne saisi pas le code du ListView (Code qui m'a été donné par quelqu'un du site)


Donc... j'espere avoir été plus clair... Bref... passons à autre chose... héhéhéhéhé

J'essairai d'être plus clair dans mes prochain messages....


Ok alors j'ai changer LE code et j'ai enlever le TAG et ca fonctionne à moitier...

C'est à dire que ca affiche les informations des 6 premières colonnes et randu à la septième colone ca me dit comme Erreur
Utilisation non autorisé de Null

Ce que je ne sais pas c'est que dans l'Exemple que je prends pour faire le test tout les champs ont du texte donc j'ai aucunne valeur Null dans mon exemple. De plus j'ai été dans le fichier ACCESS j'ai mit à Chaîne Vide autorisé à Oui et ca plante pareil...

Je te remte le code que j'ai "modifié"

BD2005.Open "SELECT * FROM [TRAVAUX EN COURS 2005] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic

While Not BD2005.EOF
With ListView1.ListItems.Add(, , IsN(BD2005!Dossier)) ' Colonne 1
'.Tag = AdoRst!IdClient

.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE]) ' Colonne '2
.SubItems(2) = IsN(BD2005![NATURE DU TRAVAIL]) ' Colonne 3
.SubItems(3) = IsN(BD2005!LOTS) ' Colonne 4
.SubItems(4) = IsN(BD2005!CADASTRE) ' Colonne 5
.SubItems(5) = IsN(BD2005!CLIENTS) ' Colonne 6
.SubItems(6) = IsN(BD2005!TELEPHONE) ' Colonne 7
.SubItems(7) = IsN(BD2005!ADRESSE) ' Colonne 8
.SubItems(8) = IsN(BD2005![DATE DE LIVRAISON]) ' Colonne 9
.SubItems(9) = IsN(BD2005!TERMINE) ' Colonne 10
.SubItems(9) = IsN(BD2005!REMARQUES) ' Colonne 11
End With
BD2005.MoveNext
Wend
BD2005.Close
Set ListView1.SelectedItem = Nothing


et j'ai utilisé ton code pour le IsN

Function IsN(Valeur As String) As String

If IsNull(Valeur) Then
IsN = ""
Else
IsN = Valeur
End If

End Function

L'erreur peut provenir de où....

merci d'avance
0

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

Posez votre question
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 4
14 juil. 2005 à 18:46
Et l'autre prob que j ene sais pas c'est que je ne veux (enfin de compte) pas faire de boucle car je veux faire une recherche du dossier et que voir l'information de ce dossier....

Mais c'est toujours la première ligne qui m'embête

QU'EST CE QUE JE METS ICI
.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE]) ' Colonne '2
.SubItems(2) = IsN(BD2005![NATURE DU TRAVAIL]) ' Colonne 3
ETC...

À quoi ressemble le code pour lui dire de mettre le .ADD afin de voir les résult

J'ai essayé ça...

ListView1.ListItems.Add = IsN(BD2005!Dossier) ' Colonne 1
.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE]) ' Colonne 2
.SubItems(2) = IsN(BD2005![NATURE DU TRAVAIL]) ' Colonne 3
.SubItems(3) = IsN(BD2005!LOTS) ' Colonne 4
.SubItems(4) = IsN(BD2005!CADASTRE) ' Colonne 5
.SubItems(5) = IsN(BD2005!CLIENTS) ' Colonne 6
.SubItems(6) = IsN(BD2005!TELEPHONE) ' Colonne 7
.SubItems(7) = IsN(BD2005!ADRESSE) ' Colonne 8
.SubItems(8) = IsN(BD2005![DATE DE LIVRAISON]) ' Colonne 9
.SubItems(9) = IsN(BD2005!TERMINE) ' Colonne 10
.SubItems(9) = IsN(BD2005!REMARQUES) ' Colonne 11

Mais évidemment ca plante et ca me dit
Référence incorrecte ou non qualifié

Bref je suis perdu :(...

J'attends de ton aide...

merci d'avance
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
14 juil. 2005 à 19:18
Pour la function isn une tite modif, comme je n'aime pas le type variant et qu'en vb.net ça n'existe plus, j'ai tendance à oublier donc, remplacer :

Function IsN(Valeur As String) As String
par
Function IsN(Valeur As Variant) As String

ça évitera le msg d''erreur d'utilisation de null.

Pour le ciblage sur un dossier particulier, faut voir au niveau de la requête qui constitue ton bd2005 sans doute rajouter une clause where.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
14 juil. 2005 à 19:24
Peut-être enlever les '%' si txtRechercheNormale.text contient un n° de dossier correct et complet.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 4
14 juil. 2005 à 19:36
Salut non mon erreur ne vient pas de ma requête

BD2005.Open "SELECT * FROM [TRAVAUX EN COURS 2005] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic


MAis elle arrive lorsqu'elle arrive à la prmiere ligne

ListView1.ListItems.Add = IsN(BD2005!Dossier) ' Colonne 1

À mois que j'ai bien écrit le code...

Bref j'aimerais savoir si j'ai bien écrit le code....

ListView1.ListItems.Add = IsN(BD2005!Dossier) ' Colonne 1 ?????????????


Si oui je vais essayer d'enlever le % mais j'avais l'impression que ma requête était bonne... enfin je l'utilise a un autre place avec un recordset différent et ca fonctionne tres biens...


Enfin de compte je veux seulement savoir s'il faut écrire

ListView1.subitems(0) = IsN (BD2005!DOSSIER) Pour la première ligne
et pour les autre ligne j'Écris
.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE])
etc..

??????????????????


J'attends de tes nouvelles...

merci encore
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
14 juil. 2005 à 20:23
Pourquoi veux tu remplacer
ListView1.ListItems.Add(, , IsN(BD2005!Dossier)) ' Colonne 1
par
ListView1.ListItems.Add = IsN(BD2005!Dossier) ' Colonne 1

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 4
14 juil. 2005 à 20:41
Et bien si j'écris ca...

ListView1.ListItems.Add(, , IsN(BD2005!Dossier))

ca me dit qu'il y a une erreur de compilation Attendu: =

Ca me sort ca comme erreur....

J'attends de tes nouvelles...
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
15 juil. 2005 à 09:29
Pour pas te prendre la tête, jte conseil de rajouter une colonne

De rien mettre dans la première et de tout décaler.

Et au cas, ou une de tes valeurs serait null, vaut mieux la tester avant de l'affecter.



If not isnull(BD2005!Dossier) then .SubItems(1) = IsN(BD2005![Dossier])
TBBUIM
0
cs_JeffC1977 Messages postés 926 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 10 septembre 2010 4
15 juil. 2005 à 13:39
Rebonjour... je crois que j'aurai toujours des problèmes...

et bien voici maintenant le code que j'tuilise et ca plante toujours...

BD2005.Open "SELECT * FROM [TRAVAUX EN COURS 2005] WHERE [DOSSIER] like '%" & txtRechercheNormale.Text & "%'", Connection, adOpenKeyset, adLockBatchOptimistic

ListView1.ListItems.Add , , IsN(BD2005!Dossier)
.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE]) ' Colonne '2
.SubItems(2) = IsN(BD2005![NATURE DU TRAVAIL]) ' Colonne 3
.SubItems(3) = IsN(BD2005!LOTS) ' Colonne 4
.SubItems(4) = IsN(BD2005!CADASTRE) ' Colonne 5
.SubItems(5) = IsN(BD2005!CLIENTS) ' Colonne 6
.SubItems(6) = IsN(BD2005!TELEPHONE) ' Colonne 7
.SubItems(7) = IsN(BD2005!ADRESSE) ' Colonne 8
.SubItems(8) = IsN(BD2005![DATE DE LIVRAISON]) ' Colonne 9
.SubItems(9) = IsN(BD2005!TERMINE) ' Colonne 10
.SubItems(9) = IsN(BD2005!REMARQUES) ' Colonne 11

BD2005.Close
Set ListView1.SelectedItem = Nothing

Pour ce qui est de ma requête je crois qu'elle fonctionne bien étant donné que j'en utilise une semblable dans mon programme...

et lorsque je fais une recherche ca plante à la colonne 2
soit à ce code:

.SubItems(1) = IsN(BD2005![DATE D'OUVERTURE]) ' Colonne '2

Ca me sort comme erreur

Erreur de compilation
Référence incorrecte ou non qualifié


Ce que je ne saisi pas c'est que lorsque je faisais une boucle pour voir la totalité de la BD ca ne plantais pas à cet endroit... et j'ai enlever la boucle car je veux seulement voir l'information que je recherche et ca plante...


Si quelqu'un peut m'aider ENCORE...


Merci d'avance...


P.S. ca marche sans les parenthèse :)
Et le Isn dans mon code règle le prob des valeurs nul...

voici le code...

Function IsN(Valeur As Variant) As String

If IsNull(Valeur) Then
IsN = ""
Else
IsN = Valeur
End If

End Function


Merci d'avance
0
wmlogistic Messages postés 1 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 13 juin 2006
13 juin 2006 à 09:12
Salut

Oui bon je sais ... 1 an après lol mais bon ca peut servir pour d'autres hehehe

Pour régler le problème voici la solution :

Tu peux aussi aller dans -> option onglet général et vérifier que l' Arret sur toutes les erreurs ne soit pas coché mais bien le Arret dans le module de classe.

J'ai eu la même blague et maintenant ca marche :)

Salutations :)
0
Rejoignez-nous