Datagridview et base de donnée

Messages postés
7
Date d'inscription
dimanche 14 février 2016
Dernière intervention
2 mars 2016
-
Bonjour,

Je souhaiterais Afficher le nom ("PRONOM") des produits de ma base de donnée dont la colonne "PROSTOCK" vaut zéro dans une nouvelle datagridview appelée dgvListeCourse, mais mon code ne fonctionne pas.
Le voici:

Public Class frmListecourse
Private Sub frmListecourse_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lig As Integer
Dim maLigne As String()
lig = 0


While lig < BddCoursesDataSet1.PRODUIT.Rows.Count()
If BddCoursesDataSet1.PRODUIT.Rows(lig).Item("PROSTOCK") = "0" Then
maLigne = New String() {BddCoursesDataSet1.PRODUIT.Rows(lig).Item("PRONOM").ToString()}


dgvListeCourse.Rows.Add(maLigne)

End If
lig = lig + 1
End While

End Sub


End Class

Voilà, donc le datagriview reste vide au lancement du formulaire au lieu d'être rempli de noms de produits. Espérons que quelqu'un voit mon ou mes erreurs, merci d'avance.
Afficher la suite 

Votre réponse

9 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
dont la colonne "PROSTOCK" vaut zéro

déjà "0" est un caractère (donc de type string) et n'est 0, qui est un numérique
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
dimanche 14 février 2016
Dernière intervention
2 mars 2016
0
Merci
Ok je vais corriger ça, merci!
Commenter la réponse de FB512
Messages postés
7
Date d'inscription
dimanche 14 février 2016
Dernière intervention
2 mars 2016
0
Merci
J'ai essayé


BddCoursesDataSet1.PRODUIT.Rows(lig).Item("PROSTOCK").ToString = "0"

BddCoursesDataSet1.PRODUIT.Rows(lig).Item("PROSTOCK").Equals(0)

et

BddCoursesDataSet1.PRODUIT.Rows(lig).Item("PROSTOCK")= 0



Mais ça ne remplit toujours pas le datagridview, pourtant les données sont bien insérée car elles apparaissent dans un autre datagridview auquel je les ai liées directement.
Commenter la réponse de FB512
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Je ne connais rien à VB.Net, mais m'interroge sur la raison de l'utilisation d'un Equals(0) là où j'attendrais logiquement celle d'un tout bête = 0 (comparaison logique de deux numériques).
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
dimanche 14 février 2016
Dernière intervention
2 mars 2016
0
Merci
En fait comme je suis pas non plus expert de vb.net, mais plutot débutant, je l'ai essayé au cas où ça marcherait, mais aucun des trois essais(= 0 compris) ne fonctionne. Merci de m'avoir éclairé sur l'utilité du Equals qui restait un peu flou pour moi.
Commenter la réponse de FB512
Messages postés
12406
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
0
Merci
Bonsoir,

je vais être sévère, mais ton problème est typique des débutants qui ne prennent pas la peine d'apprendre les bases et se jettent confiant dans un développement.
Du coup, ils se trouvent coincé sur un truc tout bête mais ne le comprennent pas car ils ont fait l'impasse sur les trucs tout bête.
Ça peut marcher, mais si on se lance dans un projet complexe, y a toujours un moment ou les bases vont manquer sérieusement, ou il faudrait y passer et probablement se rendre compte qu'on a fait beaucoup d'erreurs, que peut être le projet entier est bancal....
Tout ça pour ne pas avoir voulu perdre une semaine ou deux à bien maitriser les bases...

Je connais bien, je l'ai fait aussi.....

Pour illustrer, demande à un enfant de 5 ans qui apprend les additions de calculer 7*6, il ne trouvera pas, pourtant c'est simple, mais il faut "maitriser" les additions avant de passer à la multiplication.

Donc pour les bases, c'est là:
http://plasserre.developpez.com/cours/vb-net/

Sinon pour ton problème, une patate ne vaudra jamais 0, car une patate c'est pas un nombre c'est évident non? Et bien, un item c'est pas un nombre non plus, c'est un item.
Les bases de données c'est pas mon rayon, mais l'objet Item doit avoir une propriété Value, Text ou au pire la méthode ToString qui vont retourner un object (donc un truc) ou un string (donc un mot) ça ne sont pas des nombres non, il va falloir les convertir, enfin bref on en revient aux bases....
Commenter la réponse de Whismeril
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bonjour, Whism,
j'ai personnellement VOULU m'arrêter au plus "gros".
Si je devais aller plus loin (ce que j'ai évité de faire), ce serait bien évidemment :
- pour m'interroger sur ce que contient le jeu d'enregistrement qu'il traite ... - et voir par quelle requête il a été constitué - (car ma foi ... s'il ne contient rien qui répond à son critère ...).
Car si je demande d'abord à mon voisin d'extraire d'un sac de pois ceux qui sont verts, puis que je compte ceux de sa sélection qui sont rouges, ma foi ... je n'en trouve aucun ...
- pour m'interroger sur cette syntaxe :
BddCoursesDataSet1.PRODUIT
où et comment PRODUIT a-t-il été défini depuis VB.Net dans son appli ? Est-ce la nomination d'une table ? Quelle est le nom de cette table ?
Il ferait mieux, selon moi, de se contenter à ce stade de la notation :

BddCoursesDataSet1.Tables("nom_réel_de_la-table")

- on ignore par ailleurs tout de ce qui parait être le champ "PROSTOCK" de la table traitée de son jeu d'enregistrement : son type, les valeurs qu'il admet ou non (vide, NULL, etc ...) et ce qu'il est supposé contenir, donc . Ce sont pourtant là des éléments fondamentaux ...
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
FB512
Messages postés
7
Date d'inscription
dimanche 14 février 2016
Dernière intervention
2 mars 2016
-
N'ayant appris que la création des tables et la liaison direct dans la datagridview, je ne connaissait rien à la vraie notation, merci pour cet eclaircissement. PRODUIT est une des possibilitées données automatiquement à la suite de BddCoursesDataSet1., c'est une "BddCoursesDataSet1.PRODUITDataTable", donc une datatable je pense.

En tout cas c'est le nom de la table que je veux parcourir.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
dimanche 14 février 2016
Dernière intervention
2 mars 2016
0
Merci
Merci pour ton aide, mais j'ai essayé en utilisant ToString et ça ne marche pas, pareil pour .value. peut-être que c'est un problème du code généré par visual studio? J'ai conscience que je suis débutant(2 mois de cours à mon actif avec seulement deux heures par semaine de vb.net) et que mes bases sont donc peu solides, c'est pour celà que je suis venu poser la question. Par contre ce n'est pas trop complexe comme projet, je n'ai qu'une table dans ma base de donnée et que deux formulaires dans ma solution...
Je vais essayer de chercher sur le lien que tu m'as donné Whismeril, mais j'y suis presque, je vous tiendrais au courant si je trouve la solution au problème.
Commenter la réponse de FB512
Messages postés
12406
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
0
Merci
En effet VS dispose d'outils qui créent des liaisons de données à notre place, et qui prennent le nom de ce qu'elles contiennent.
Et donc Produit est probablement une Datatable, mais comme je l'ai écrit plus haut les bases de données c'est pas mon truc.
Je n'ai fait qu'une application avec Access en 2007, la base ne contenait que 2 tables et ne servait exclusivement qu'à cette appli qui ne pouvait être lancée qu'un un exemplaire. Du simple en résumé. Habituellement je travaille avec des csv, des xls, des fichiers binaires ou des flux.

Que Value ou ToString ne marchent pas directement, je te l'ai dit, ce ne sont pas des nombres.
Il faut d'abord savoir de quel type ils sont, ToString c'est un string, mais Value je ne sais pas, mais il y a fort à parier que ce soit object ou string, donc tu dois passer par des conversions avant de vouloir faire des opérations dessus.

C'est pour ça que l'utilisation de Datatable ne me plait pas, je préfère manipuler des listes ou collections de classes, on charge tout et convertit les données une fois pour toute et ensuite on ne travaille que sur des données correctement typées.
De plus le binding et Linq sont parfaitement adaptés à cette manipulation de données.

Cependant ce n'est pas forcément adapté à une base de données partagée entre plusieurs applications/utilisateurs/oridinateurs.
Commenter la réponse de Whismeril

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.