Meilleur auteur de réponses
inserer des données dans plusieurs tables

Question
-
Bonjour,
je suis entrain de développer une application qui doit me permettre de manipuler une base de données Access.
Je doit remplir trois tables à partir d'une interface windowsForm en vb.net. la structure de mes tables:
Inspection(id_inspect, nom,prenom)
Entreprises(id_Ent, RaisonSocial, Responsable, #id_inspect)
Produits(id_Prod, designation, stock, #id_Ent)
Je souhaiterais avoir la syntaxe sql me permettant d’insérer les informations du formulaire dans les tables correspondantes
NB: sur le formulaire la table produit s'affiche dans un datagradview;
Merci pour votre aide et bon week end
Réponses
Toutes les réponses
-
Bonjour,
Je suppose que votre application utilise un DataSet comme interface avec votre DB dans ce cas, c'est ce DataSet et les TableAdapter de chacune des tables que contient votre DB qui doivent faire le travail.
Je n'ai pas de lien à vous fournir mais tapez simplement DataSet sur un moteur de recherche.
Cordialement
-
Bonjour, je ne maîtrise pas encore le principe et la synthaxe mais voici ce que j'ai fais:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Chaîne de connexion Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrateur\Documents\DonnéesPlastiques.accdb") 'INSERTION DES DONNEES DANS INSPECTION con.Open() Dim Requete As String = "insert into inspection(nominspect, prenominspect, dateinspect) values('" & Me.NomInspectTextBox.Text & "','" & Me.PrenomInspectTextBox.Text & "', '" & Me.DateInspectDateTimePicker.Value & "')" Dim Commande As New OleDbCommand(Requete, con) Commande.ExecuteNonQuery() con.Dispose() con.Close() Me.NomInspectTextBox.Text = "" Me.PrenomInspectTextBox.Text = "" Catch ex As Exception MessageBox.Show(ex.Message) End Try 'INSERTION DES DONNEES DANS ENTREPRISE Try 'Chaîne de connexion Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrateur\Documents\DonnéesPlastiques.accdb") con.Open() Dim Requete As String = "insert into entreprises(RsonSociale, reponsable, qualite, contact ) values('" & Me.RsonSocialeTextBox.Text & "','" & Me.ReponsableTextBox.Text & "', '" & Me.QualiteTextBox.Text & "','" & Me.ContactTextBox.Text & "')" Dim Commande As New OleDbCommand(Requete, con) Commande.ExecuteNonQuery() con.Dispose() con.Close() Me.RsonSocialeTextBox.Text = "" Me.ReponsableTextBox.Text = "" Me.QualiteTextBox.Text = "" Me.ContactTextBox.Text = "" Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Class
la table entreprise contient la clé étrangère inspection pour faire la correspondance entre les enregistrements de inspection et entreprise; Le problème est comment récupérer ou faire correspondre les enregistrements? car les identifiants (id_inspect de la table inspection) est auto-Incrementé.
voici le formulaire:
comme vous le voyez les champs id_ent et id_inspect ne figurent pas sur le formulaire car l'utilisateur
ne doit pas rentrer ces informations le prgramme doit le faire automaatiquement.
mais je ne sais pas comment m'y prendre
-
Bonjour Dinjer
la solution serait de créer un système d'auto-incrément, par exemple vous récupérez le nombre de ligne dans la table ou vous voulez rajouter votre ligne et vous définissez l'ID étant égale aux nombre de lignes + 1.
SELECT COUNT(*) FROM inspection; SELECT COUNT(*) FROM entreprise;
Normalement ces 2 requêtes devraient vous retournez le nombre de lignes dans vos tables :)
-
-
Non, l'utilisateur n'aura besoin de rien faire.
il suffira de stocker le nombre de ligne dans un entier et d'ensuite l'incrémenter de 1, j'aurais bien écris une ébauche de code, mais je ne connais pas le VB. Mais l'algorythme ressemblerait à ça:
string requete = "SELECT COUNT(*) FROM inspection";
OleDbCommand command = new OLeDbCommand(requete,con);
int nbligne = command.ExecuteScalar();
nbligne ++
ensuite il suffira lors de l'ajout il faudra passer la valeur de nbligne comme ID ;)
-
salut voici mon code:
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 'insertion des données de l'élève Try Dim connexion As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrateur\Documents\TEST.accdb") Dim requet As String connexion.Open() requet = " insert into eleves(nomel) values('" & Me.NomEl.Text & "')" Dim comde As New OleDbCommand(requet, connexion) comde.ExecuteNonQuery() connexion.Dispose() connexion.Close() Me.NomEl.Text = "" Catch ex As Exception MessageBox.Show(ex.Message) End Try '************************************************* 'RECUPERATION DU NOMBRE DE LIGNE Dim nomb As Integer Try Dim connexion As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrateur\Documents\TEST.accdb") Dim requet As String connexion.Open() requet = " select count(*) from eleves" Dim comde As New OleDbCommand(requet, connexion) nomb = comde.ExecuteScalar() nomb += 1 connexion.Dispose() connexion.Close() Me.NomEl.Text = "" Catch ex As Exception MessageBox.Show(ex.Message) End Try '**************************************************** 'insertion des données des cours Try Dim connexion As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrateur\Documents\TEST.accdb") Dim requet As String connexion.Open() requet = " insert into cours(Nomcrs, id_el) values('" & Me.NomCrs.Text & "', '" & nomb & "')" Dim comde As New OleDbCommand(requet, connexion) comde.ExecuteNonQuery() connexion.Dispose() connexion.Close() Me.NomCrs.Text = "" Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
mais j'ai se message d'erreur
puis-je avoir un bout de code dans ton langage pour mieux comprendre
merci
-
merci pour ton orientation
j'ai trouvé la parade
connexion.Open() requet = " select count(*) from eleves" Dim comde As New OleDbCommand(requet, connexion) nomb = comde.ExecuteScalar() connexion.Dispose() connexion.Close() Me.NomEl.Text = ""
on n'a pas besoin d'incrementer la variable
-
-
-