Datagridview et base de donnée

FB512 Messages postés 6 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 2 mars 2016 - Modifié par FB512 le 2/03/2016 à 18:31
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 2 mars 2016 à 22:24
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.

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 mars 2016 à 18:50
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
0
FB512 Messages postés 6 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 2 mars 2016
2 mars 2016 à 18:53
Ok je vais corriger ça, merci!
0
FB512 Messages postés 6 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 2 mars 2016
2 mars 2016 à 19:03
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 mars 2016 à 19:12
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).
0

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

Posez votre question
FB512 Messages postés 6 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 2 mars 2016
2 mars 2016 à 19:32
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.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
2 mars 2016 à 20:11
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....
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 2/03/2016 à 21:06
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.
0
FB512 Messages postés 6 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 2 mars 2016
Modifié par FB512 le 2/03/2016 à 21:17
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.
0
FB512 Messages postés 6 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 2 mars 2016
2 mars 2016 à 20:54
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.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
2 mars 2016 à 22:24
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.
0
Rejoignez-nous