Passer la valeur d'une variable à la commande Select (SQL)
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008
-
24 oct. 2008 à 17:02
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008
-
24 oct. 2008 à 18:54
Bonjour à tous,
Encore une question sur les requettes en SQL sous VB:
J'ai une table avec les caractéristiques de pièces mécaniques (matière, poids, nom...). Au lancement du prog j'extrais le nom de toutes les pièces dans une listbox pour que l'utilisateur puisse toutes les voir. Ensuite lorsqu'il clique sur l'une d'entre elles j'aimerais que les infos relatives à cette dernière s'affichent dans différentes TextBoxes prévues à cet effet.
Pour cela, j'ai crée une variable nommée "piece" et je récup le nom grâce à : "ListBox1.SelectedItem". Ensuite j'instancie une connexion avec une commande pour aller récup les infos sur la table. Et là ???
Comment dire que le texte de référence pour WHERE est celui de la variable piece dans : Mycommand.CommandText "SELECT Matière, Poids, Prix_Kg FROM Table_Steel WHERE Nom valeur de ma variable" ???
Merci d'avance
A voir également:
L'identificateur en plusieurs parties ne peut pas être lié
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 oct. 2008 à 17:46
Ya une autre solution, tu pose un dataset et un datatable sur ta form, ainsi qu'un bindingsource.
dans ta listbox tu lui doit que le remplissage de la liste se fait par le binding source (propriété Datasource je crois). Chacun des textbox, tu les lies au champs correspondant du bindingsource.
Comme ça, normalement, lorsque tu va sélectionner une piece dan la listbox, les autres champs devraient automatiquement se mettre à jours.
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 24 oct. 2008 à 17:46
C'est exceptionnel, maintenant ça me dit que le nom de ma pièce choisie n'est pas un nom de colonne valide !!!? la sélection n'est pas censé être un champ plutôt qu'une colonne ?
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 24 oct. 2008 à 17:53
casy :
J'ai essayé, dans les propriétés de la listbox, il y a un truc : "DataBindings" où on peut lier des valeurs de la table à des propriétés. Elles y sont toutes sauf Item, celle qui m'intéresse !
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 24 oct. 2008 à 17:57
zen69 encore une erreur lol
--> Les types de données ntext et varchar sont incompatibles dans l'opérateur equal to.
Mais ici, ça vient du type de donnée que j'ai choisi non ? C'est quoi la différence entre ntext et text, c'est pas un nombre de caractère limité pour ntext ?
ricky84
Messages postés44Date d'inscriptiondimanche 8 septembre 2002StatutMembreDernière intervention13 janvier 2014 24 oct. 2008 à 17:59
et je dirais meme :
WHERE Nom like ' " & ListBox1.SelectedItem &" ' "
mettre la chaine entre apostrophes, là, j'ai mis des espaces pour bien les voir, mais il ne faut pas les mettre les espaces
aussi, si la chaine contient des apostrphes, il faut les remplacer par 3 apostrohes qui se suivent
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 oct. 2008 à 18:02
"...J'ai essayé, dans les propriétés de la listbox, il y a un truc :
"DataBindings" où on peut lier des valeurs de la table à des
propriétés. Elles y sont toutes sauf Item, celle qui m'intéresse !..."
Nan, c'est pas du tout ça.
Pour ta listbox, propriété Datasource, tu lie ton bindingsource, propriété Displaymenber, tu lie le champ piece de ton bindingsource.
Pour les autres texboxs, oui, il faut passer par databinding ou tu liera les champs correspondants de ton bindingsource.
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 24 oct. 2008 à 18:19
Ricky84 --> Tentative non valide de lecture lorsque aucune donnée n'est présente.
J'ai demandé à VB de m'afficher le résultat dans une MsgBox.
casy --> j'arrive à afficher la liste de pièce dans la listbox, mais je n'ai pas d'objet datatable dans la boite à outils.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 oct. 2008 à 18:35
oui excuse moi, c'est un dataset, un tableadapter et un bindingsource qu'il faut.
Mais normalement si tu n'as pas encore de source de données connectée à ta feuille, quand tu vas dans la propriété DataSource de ta listbox, VB vas tout te créer automatiquement
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 24 oct. 2008 à 18:44
Ok c'est nickel ça marche super bien merci, mais je ne comprends pas comment ça fonctionne (qui fait quoi) et j'aime bien avoir une idée du circuit des infos des trucs que je programme, sinon ça sert à rien, je fais que du copier collé d'internet et ça marche aussi, mais je n'y comprendrais rien !
Et comment faire avec les lignes de code maintenant ? Car si je veux faire la même chose avec une treeview, et ajouter des nœuds en fonction des items de la base, je ne peux pas avec le trio dataset/bindingsource/tableadapter.
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 24 oct. 2008 à 18:54
C'est bizarre, j'ai fait deux, trois test et même quand je met une valeur connue, du genre :
Mycommand.CommandText = "SELECT Matière FROM Table_steel WHERE Nom='axe1'"
et j'ai exactement la même erreur qu'avec vos solutions, ça veut donc dire qu'elles sont bonnes mais qu'il y a une erreur autre part !?
message : "Tentative non valide de lecture lorsque aucune donnée n'est présente."