Ajout d'un element pour chaque element dans autre Table

Résolu
cs_ezus Messages postés 6 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 26 mai 2011 - 26 mai 2011 à 09:19
cs_ezus Messages postés 6 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 26 mai 2011 - 26 mai 2011 à 17:29
Bonjour,

Je réalise un logiciel de gestion de restaurant. Le principe est très simple : on peut ajouter/supprimer des plats et des villes (une Form pour les plats, une Form pour les villes) et via une 3ème Form, on peut indiquer pour chaque plat dans chaque ville son prix.

Mon problème se pose lors de l'ajout : j'aimerai que lorsque que l'on ajoute un nouveau plat, celui-ci soit ajouté dans toutes les villes existantes.

J'ai essayé plusieurs méthodes avec des boucles pour indiquer qu'une fois le nouveau plat ajouté dans la table Plat, il ajoute ce nouveau plat dans chaque ville (de la table Ville).


Voici mes différents essais, avec les erreurs renvoyées :

Méthode EOF (fonctionne pourtant avec les listes déroulantes) :
REC.Open("INSERT INTO Plat (nom_plat) VALUES ('" & champ_nom_plat.Text & "')", CON)


REC.Open("SELECT nom_ville FROM Ville", CON)

While Not REC.EOF
  Label2.Text =   (REC("nom_ville").Value.ToString)
  REC.Open("INSERT INTO Prix (nom_ville, nom_plat) VALUES ('" & Label2.Text & "', '" & champ_nom_plat.Text & "')", CON) 'Erreur : Cette opération n'est pas autorisée si l'objet est ouvert.
  REC.MoveNext()
 End While

REC.Close()



Méthode qui fonctionne mais qui n'enregistre pas dans la dernière ville de la Table ville :
ville.ResetListeDeroulanteVille() 'fonction qui remplit la liste déroulante des villes dans la Form ville
indexVille   = ville.ComboBox_ville_suppr.Items.Count


While ville.ComboBox_ville_suppr.SelectedIndex < indexVille - 1 //recupere le contenu de la liste déroulante des villes dans la Form ville

REC.Open("INSERT INTO Prix (nom_ville, nom_plat) VALUES ('" & ville.ComboBox_ville_suppr.SelectedItem & "', '" & champ_nom_plat.Text & "')", CON)

ville.ComboBox_ville_suppr.SelectedIndex =   ville.ComboBox_ville_suppr.SelectedIndex + 1 'passe à l'élément suivant de la liste déroulante des villes dans la Form ville

End While



Méthode qui fonctionne mais qui plante car l'index est dépassé :
...

While ville.ComboBox_ville_suppr.SelectedIndex <  = indexVille - 1

...

ville.ComboBox_ville_suppr.SelectedIndex = ville.ComboBox_ville_suppr.SelectedIndex + 1 'plante car l'index est dépassé (OutOfRange / InvalidArgument=La valeur '4' n'est pas valide pour 'SelectedIndex'. Nom du paramètre : SelectedIndex



Merci d'avance pour votre aide !

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mai 2011 à 17:03
Salut

Méthodes bizarres pour du VB.Net

Comment sont dimensionnés tes objets CON, REC ?

Insert Into et Delete ne se font pas au travers d'un RecordSet mais directement avec la méthode .Execute de la connexioon.

Tu ne peux pas ouvrir le même RecordSet à l'intérieur d'une boucle qui s'appuie elle même sur celui-ci.

REC("nom_ville").Value
Non
REC.Fields("nom_ville").Value

Un peu de lecture :
- de l'aide sur les objets comme ComboBox
- des différentes sources du site qui traite de base de données
te permettrait d’acquérir les bases.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_ezus Messages postés 6 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 26 mai 2011
26 mai 2011 à 17:29
Bonjour,

Merci bien !

En effet les SGBD ne sont pas ma tasse de thé et je m'y embrouille facilement...

Je teste ça dès que possible
0
Rejoignez-nous