FB512
Messages postés6Date d'inscriptiondimanche 14 février 2016StatutMembreDernière intervention 2 mars 2016
-
Modifié par FB512 le 2/03/2016 à 18:31
Whismeril
Messages postés19026Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 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.
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
FB512
Messages postés6Date d'inscriptiondimanche 14 février 2016StatutMembreDerniè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.
Whismeril
Messages postés19026Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 avril 2024656 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.
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....
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
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.
FB512
Messages postés6Date d'inscriptiondimanche 14 février 2016StatutMembreDerniè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.
Whismeril
Messages postés19026Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 avril 2024656 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.