IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Conception BDD: relation n:n [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut Conception BDD: relation n:n
    Bonjour à tous,

    Tout d'abord, je vous donne une petite description de ma base de donnée créer sous access 2007.J'ai 3 table :
    famille: nom_famille(clé primaire)
    article:code,nom_art
    et la dernière table qui contient les deux clé primaire des tables ci_dessus:
    article_famille(nom_famille,code)
    Chaque article à une famille.
    Une famille peut contenir plusieurs article.
    Lors d’insertion d'un nouveau article, je dois remplir un formulaire qui contient: code, famille, prix d'un article.
    Supposons que j'ai insérer un article avec le nom de famille ameublement par suite je veux insérer un autre article qui appartient à la même famille une erreur s'affiche et j'arrive pas à insérer un nouveau élément avec vb.net 2010.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
            ' OleDbCommand représentera ici une instruction SQL à exécuter par rapport à une source de données
            Dim cmd_article As OleDb.OleDbCommand
            Dim cmd_famille As OleDb.OleDbCommand
            Dim cmd_AF As OleDb.OleDbCommand
            ' Déclaration de sql_ajouter, qui contiendra la requête SQL permettant d'ajouter un enregistrement
            Dim sql_ajouter_article As String
            Dim sql_ajouter_famille As String
            Dim sql_ajouter_AF As String
            ' On écrit notre requête et on l'assigne à la variable sql_ajouter
            sql_ajouter_article = "INSERT INTO Article (Code, Designation, Prix) VALUES('" & codeTextBox.Text & "', '" & designationTextBox.Text & "', '" & prixTextBox.Text & "')"
            sql_ajouter_famille = "INSERT INTO Famille (nomFamille) VALUES('" & familleTextBox.Text & "')"
            sql_ajouter_AF = "INSERT INTO articleFamille (nomFamille, Code) VALUES('" & familleTextBox.Text & "', '" & codeTextBox.Text & "')"
     
            ' Initialisation de la requête
            cmd_article = New OleDb.OleDbCommand(sql_ajouter_article, con)
            cmd_famille = New OleDb.OleDbCommand(sql_ajouter_famille, con)
            cmd_AF = New OleDb.OleDbCommand(sql_ajouter_AF, con)
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,
    Citation Envoyé par foufou.mr Voir le message
    Chaque article à une famille.
    Une famille peut contenir plusieurs article.
    A la vue de ta définition des relations, il s'agit donc d'une relation 1,n
    Le code famille doit se trouver dans la table article en tant que clé étrangère.

    L'ajout d'une famille ne doit pas être faite à chaque création d'un article.
    Quand on cré un article la famille doit déjà exister, sinon on propose la possibilité de créer la famille. (la famille est gérée a part.)

    Il est préférable d'utiliser les requêtes paramétrées. Voir Tuto ou Faq.

    Restructure un peu tout cela, et revient si tu as toujours des soucis.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Bonjour,

    Désolé pour la qualité de code.j'ai utilisé la balise code mais ......

    Merci pour votre réponse.Je reviens vers vous après avoir restructuré ma code.
    Juste une remarque, j'ai utilisé une relation n-n juste pour que l'application soit extensible et plus générique.


    Vous trouveriez ci-dessous le nouveau code et ci-joint une image des tables en base de données:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub okButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles okButton.Click
            ' Nous devons d'abord nous connecter à notre BDD,
            Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data source=C:\Users\NHaouel\Desktop\ecureuilServices\P13PRESSING\P13PRESSING_DB.accdb")
            ' Déclaration de la variable cmd
            ' OleDbCommand représentera ici une instruction SQL à exécuter par rapport à une source de données
            Dim cmd_article As OleDb.OleDbCommand
            Dim cmd_famille As OleDb.OleDbCommand
            Dim cmd_AF As OleDb.OleDbCommand
            ' Requêtes sql
            Dim sql_ajouter_article As String
            Dim sql_ajouter_famille As String
            Dim sql_ajouter_AF As String
            'Requete mise a jour de la table client
            sql_ajouter_article = "INSERT INTO [Article] ( [_code],[designation],[prix]) VALUES (@id_article, @nom_article, @prix_article)"
            sql_ajouter_famille = "INSERT INTO [Famille] ( [nomFamille]) VALUES (@nom_famille)"
            sql_ajouter_AF = "INSERT INTO [articleFamille] ( [NomFamille],[_code]) VALUES (@nom_famille, @id_article)"
            'Création des commandes SQL
            cmd_article = New OleDb.OleDbCommand(sql_ajouter_article, con)
            cmd_famille = New OleDb.OleDbCommand(sql_ajouter_famille, con)
            cmd_AF = New OleDb.OleDbCommand(sql_ajouter_AF, con)
            'Création et décalartion des paramètres
            With cmd_article.Parameters
                .Add(New OleDb.OleDbParameter("@id_article", OleDbType.VarChar, 255)).Value = codeTextBox.Text
                .Add(New OleDb.OleDbParameter("@nom_article", OleDbType.VarChar, 255)).Value = designationTextBox.Text
                .Add(New OleDb.OleDbParameter("@prix_article", OleDbType.Double, 8)).Value = CDbl(prixTextBox.Text)
            End With
            With cmd_famille.Parameters
                .Add(New OleDb.OleDbParameter("@nom_famille", OleDbType.VarChar, 255)).Value = familleTextBox.Text
            End With
            With cmd_AF.Parameters
                .Add(New OleDb.OleDbParameter("@nom_article", OleDbType.VarChar, 255)).Value = familleTextBox.Text
                .Add(New OleDb.OleDbParameter("@id_article", OleDbType.VarChar, 255)).Value = codeTextBox.Text
            End With
     
            Try
     
                'Execution de la requête
                cmd_article.Connection.Open()
                cmd_article.ExecuteNonQuery()
                cmd_article.Connection.Close()
     
                cmd_famille.Connection.Open()
                cmd_famille.ExecuteNonQuery()
                cmd_famille.Connection.Close()
     
                cmd_AF.Connection.Open()
                cmd_AF.ExecuteNonQuery()
                cmd_AF.Connection.Close()
     
            Catch ex As OleDbException
     
                Write(ex.Message)
     
            End Try
     
     
        End Sub


    Et j'ai comme Exception: " L'exception InvalidCastException n'a pas été gérée.La conversion de la chaîne "Modifications non effectuées: ri" en type 'Integer' n'est pas valide. "
    Images attachées Images attachées  

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    La colonne "code" de ta table article ne serait-elle pas de type numérique ?

    Tes insertions devraient être dans une transaction pour garantir l'intégrité de tes données.
    (La famille devrait être gérée à part, tu n'auras pas une nouvelle famille pour chaque article.)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2007, 22h02
  2. [Conception] Quelles relations entre mes tables ?
    Par jeromepiwees dans le forum Modélisation
    Réponses: 4
    Dernier message: 26/03/2007, 12h12
  3. conception BDD immobiliere
    Par mealtone dans le forum Débuter
    Réponses: 4
    Dernier message: 14/06/2006, 17h34
  4. conception BDD
    Par Naruto_kun dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/04/2006, 17h46
  5. [Conception] BDD & PHP, néophite à besoin d'aide pour un site
    Par Cusack dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 14/02/2006, 20h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo