cs_ezus
Messages postés6Date d'inscriptionlundi 30 mars 2009StatutMembreDernière intervention26 mai 2011
-
26 mai 2011 à 09:19
cs_ezus
Messages postés6Date d'inscriptionlundi 30 mars 2009StatutMembreDernière intervention26 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 !
A voir également:
Ajout d'un element pour chaque element dans autre Table
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)