Listview bdd access [Résolu]

Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Dernière intervention
15 novembre 2012
- - Dernière réponse : nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 4 oct. 2008 à 15:14
HELO

aidez moi svp

je voudrais charger une table en Access dans une listview.
Je suis sur que c'est simple mais je ne sais pas comment relier les colonnes de ma table aux colonne de ma listview

j'ai essayer ce code mais j'ai une erreur






Dim



objConnection

As



New
OleDbConnection(

"Provider=Microsoft.Jet.OLEDB.4.0;Data source=L:\Technique\bdtechnique.mdb;"
)


Dim
objDataAdapter

As
OleDbDataAdapter


Dim
objDataSet

As



New
DataSet


Dim
objDataTable

As
DataTable


Dim
objDataRow

As
DataRow


Dim
SQLString

As



String






Dim
LviItem

As
ListViewItem


Dim
LsiSubItem

As
ListViewItem.ListViewSubItem 

ListView1.AllowColumnReorder =


True



'R‚organisation des colonnes manuellement

ListView1.FullRowSelect =




True



'S‚lection de la ligne complete

ListView1.View = View.Details




'Le listView est en mode D‚tail






' Ajoute le Nom des colonnes

ListView1.Columns.Add(




"Num‚ros"
, 60, HorizontalAlignment.Left)ListView1.Columns.Add(


"D‚finition"
, 200, HorizontalAlignment.Left)ListView1.Columns.Add(


"Action"
, 115, HorizontalAlignment.Center)


' Commande pour lire dans la base de donn‚e la Table et met le en ordre ascendant par date

SQLString =




"SELECT Num‚ros, D‚finition, Action FROM Pr‚ventifs ORDER BY Num‚ros ASC"

objConnection.Open()


objDataAdapter =




New
OleDb.OleDbDataAdapter(SQLString, objConnection)objDataAdapter.Fill(objDataSet)


'lvTelephone.Items.Clear()






' Garde en m‚moire les informations qui vont aller dans le lvtelephone






' Il bloque le rafraichissement de lvtelephone

ListView1.BeginUpdate()







'R‚pete chaque Table dans le DataSet collection.






For



Each
objDataTable

In
objDataSet.Tables


'R‚pete chaque ligne de la table






For



Each
objDataRow

In
objDataTable.RowsLviItem = ListView1.Items.Add(objDataRow(


"Nom"
))


'LviItem.UseItemStyleForSubItems = False '<--- Pour activer la couleur dans les subitems

LsiSubItem = LviItem.SubItems.Add(objDataRow(




"D‚finition"
))


'LsiSubItem.ForeColor = Color.Red ' <--- Mettre la couleur rouge

LsiSubItem = LviItem.SubItems.Add(objDataRow(




"Action"
))


'LsiSubItem.ForeColor = Color.Purple ' <--- Mettre la couleur poupre






Next






Next






' Affiche le contenu au complet de lvtelephone

ListView1.EndUpdate()


objConnection.Close()

A+
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
3
Merci
Ah c'est plus clair

C'est que tu as des enregistrements null dans ta base de données

normalement en transformant
objDataRow("....." ) --> objDataRow(
"......" ).ToString()

Utilise option explicite et option strict dans vb.net
car objDataRow renvoie un object et non un string

dbnull.ToString() --> String.Empty    '(normalement)

Sinon test la valeur avant de l'ecrire dans ton listview

if( not
objDataRow("....." ).Equals(DbNull.Value)) then
 
LsiSubItem = LviItem.SubItems.Add(objDataRow("...."))

end if 

Bon coding

Merci nhervagault 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
3
Merci
C'est pourtant pas compliqué

Avec le débugger tu regarde la requete SQL générée

Elle doit etre avoir la valeur suivante
SQLString "SELECT Num,ros, Nommachine,D,finition, Action,Remarque FROM Pr,ventifs where semaine '1'"
soit
SQLString = "SELECT Num,ros, Nommachine,D,finition, Action,Remarque FROM Pr,ventifs where " & (ComboBox3.Text) &
"='" & 1 &
"'"

Merci nhervagault 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Salut,

Merci d'indiquer l'erreur c'est plus pratique pour trouver le problème?

Un p'tit try catch finally serait le bienvenue
objConnection.Close() dans le finally
Commenter la réponse de nhervagault
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Dernière intervention
15 novembre 2012
0
Merci
Sorry

voila mon erreur

La résolution de surcharge a échoué, car aucun 'Add' Public ne peut être appelé avec ces arguments :     'Public Overrides Function Add(text As String) As System.Windows.Forms.ListViewItem':         L'argument qui correspond au paramètre 'text' ne peut pas être converti de 'DBNull' en 'String'.     'Public Overrides Function Add(value As
Commenter la réponse de inraf
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Dernière intervention
15 novembre 2012
0
Merci
SUPER MERCI
Commenter la réponse de inraf
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Dernière intervention
15 novembre 2012
0
Merci
je te remerci pour ta reponce

mais j'ai encor un problème je n'arrive pas a faire une relation la relation est dans une colonne que je ne dois pas afficher

voici le code

on

As
New OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data source=L:\Technique\bdtechnique.mdb;")

Dim objDataAdapter
As OleDbDataAdapter

Dim objDataSet
As
New DataSet

Dim objDataTable
As DataTable

Dim objDataRow
As DataRow

Dim SQLString
As
String

Dim LviItem
As ListViewItem

Dim LsiSubItem
As ListViewItem.ListViewSubItem 

ListView1.AllowColumnReorder =

True
'R‚organisation des colonnes manuellementListView1.FullRowSelect =

True
'S‚lection de la ligne completeListView1.View = View.Details

'Le listView est en mode D‚tail

' Ajoute le Nom des colonnesListView1.Columns.Add(

"Num‚ros", 80, HorizontalAlignment.Left)ListView1.Columns.Add(

"Nommachine", 150, HorizontalAlignment.Left)ListView1.Columns.Add(

"D‚finition", 300, HorizontalAlignment.Left)ListView1.Columns.Add(

"Action", 300, HorizontalAlignment.Center)ListView1.Columns.Add(

"Remarque", 300, HorizontalAlignment.Center)

' Commande pour lire dans la base de donn‚e la Table et met le en ordre ascendant par dateSQLString =

"SELECT Num‚ros, Nommachine,D‚finition, Action,Remarque FROM Pr‚ventifs where " & (ComboBox3.Text) &
"='" & 1 &
"'"""objConnection.Open()

objDataAdapter =

New OleDb.OleDbDataAdapter(SQLString, objConnection)objDataAdapter.Fill(objDataSet)

'lvTelephone.Items.Clear()

' Garde en m‚moire les informations qui vont aller dans le lvtelephone

' Il bloque le rafraichissement de lvtelephoneListView1.BeginUpdate()

'R‚pete chaque Table dans le DataSet collection.

For
Each objDataTable
In objDataSet.Tables

'R‚pete chaque ligne de la table

For
Each objDataRow
In objDataTable.RowsLviItem = ListView1.Items.Add(objDataRow(

"Num‚ros").ToString)
'LviItem.UseItemStyleForSubItems False '<--- Pour activer la couleur dans les subitemsLsiSubItem LviItem.SubItems.Add(objDataRow(

"Nommachine").ToString)
'LsiSubItem.ForeColor Color.Red ' <--- Mettre la couleur rougeLsiSubItem LviItem.SubItems.Add(objDataRow(

"D‚finition").ToString)
'LsiSubItem.ForeColor Color.Purple ' <--- Mettre la couleur poupreLsiSubItem LviItem.SubItems.Add(objDataRow(

"Action").ToString)
'LsiSubItem.ForeColor Color.Purple ' <--- Mettre la couleur poupreLsiSubItem LviItem.SubItems.Add(objDataRow(

"Remarque").ToString)

'LsiSubItem.ForeColor = Color.Purple ' <--- Mettre la couleur poupre

Next

Next

' Affiche le contenu au complet de lvtelephoneListView1.EndUpdate()

objConnection.Close()

 

End
Sub

et mon message d'erreure est            
Erreur de syntaxe (opérateur absent) dans l'expression 'semaine 33='1'"'.

merci
Commenter la réponse de inraf
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Ta requete est fausse

Gere pour que ta requete deviennent
il semble que ta colonne ait un espace (pas une bonne pratique)
Mets dans la requete [semaine 33] = '1'
Commenter la réponse de nhervagault
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Dernière intervention
15 novembre 2012
0
Merci
ça ne va pas il me donne cette erreur

Erreur de syntaxe dans la chaîne dans l'expression 'semaine33='1'"'.

je charger de manière suivante

SQLString = "SELECT Num,ros, Nommachine,D,finition, Action,Remarque FROM Pr,ventifs where " & (ComboBox3.Text) &
"='" & 1 &
"'"""
Commenter la réponse de inraf
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Dernière intervention
15 novembre 2012
0
Merci
je voi mon problème ce sont met ""
Commenter la réponse de inraf
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Tu n'aurais pas ce probleme avec des requetes parametrees.

Bonne continuation
Commenter la réponse de nhervagault

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.