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

ASP.NET Discussion :

pb ajout automatique d'un lien entre deux tables


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut pb ajout automatique d'un lien entre deux tables
    Bonjour,

    J'ai un petit soucis, qui me bloque pas mal dans mon dev et n'ayant pas trouver la solution en cherchant sur google et via les faq/forum j'm'en remet à vous, via un formulaire j'ai un bouton qui me permet d'ajouter un "processus", et par défaut à l'ajout d'un processus il faudrai que je lui associe une "activité" générique (qui est déjà créée).
    Donc en théorie après avoir effectué ma requete d'ajout dans ma table "processus" en code behind, il faut que j'ajoute dans la table "DECOUPE_EN", qui contient ID_PROCESSUS et ID_ACTIVITE, l'id du processus(qui s'incrémente tout seul lors d'un ajout dans la table PROCESSUS) que je viens d'ajouter et l'id de "toute activité" qui est '1'.

    Et j'en viens au problème qui est que ça ne marche pas, celà me génère une erreur, en fait il ne veut pas créer le lien dans la table DECOUPE_EN car l'ajout dans la table PROCESSUS ne s'effectue qu'au postback de la page, donc je n'ai pas trouvé de moyen d'enchainer mes deux requêtes, même en fermant la connexion à la bdd et en la rouvrant pour effectuer la deuxième requête.

    Voilà je n'ai pas trouvé de solution

    Merci d'avance pour votre aide qui serait la bienvenue

  2. #2
    Membre éclairé
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    Très confus tout ça...
    Je ne sais pas ce que viens faire l'histoire de postback dans tout ça...
    L'ajout d'un processus se fait correctement ?
    Peut-on voir du code ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    Le postback n'est qu'une hypothèse de ma part en fait, ça a peut-être rien a voir:
    Pour le code le voici:

    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
    protected void btAjout_Liste_Processus_Click(object sender, ImageClickEventArgs e)
        {
            if (ddlListe_Processus.SelectedItem.Value == "0")
            {
                System.Data.SqlClient.SqlConnection oConnection;
     
                oConnection = new System.Data.SqlClient.SqlConnection();
     
                string sConnectionString;
                sConnectionString = "Server=(local)\\SQLEXPRESS; Initial Catalog='BDD';Trusted_Connection=True;";
                oConnection.ConnectionString = sConnectionString;
     
                oConnection.Open();
     
                System.Data.SqlClient.SqlCommand oCommand;
                string sSQL;
     
                sSQL = "INSERT INTO [PROCESSUS](PROCESSUS,CODE_PROCESSUS,COMMENTAIRE_PROCESSUS) VALUES('" + tbNom_Processus.Text + "','" + tbCode_Processus.Text + "','" + tbCommentaire_Processus.Text + "')";
     
    // et c'est ici que j'aimerai pouvoir effectuer mon lien
     
     
                oCommand = new System.Data.SqlClient.SqlCommand(sSQL, oConnection);
     
                oCommand.ExecuteNonQuery();
     
                Response.Write("<body><script>alert(\"" + "Processus '" + tbNom_Processus.Text + "' ajouté avec succès" + "\");</script></body>");
     
                // Fermeture de la connexion
                oConnection.Close();
            }
            else
                Response.Write("<body><script>alert(\"" + "Erreur: Ajout impossible, il faut se placer sur 'Nouveau processus'" + "\");</script></body>");
        }
    Sinon oui aucun problème à l'ajout d'un processus.

  4. #4
    Membre éclairé
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    Il faut que tu fasses les choses dans l'ordre, d'abord tu ajoutes un processus et seulement ensuite tu ajoutes l'entrée correspondante dans "DECOUPE_EN". Il faut que tes contraintes d'intégrité soient respectées.
    Oui?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    Je suis d'accord, par contre, comment je peux faire pour récupérer l'id du processus juste après son ajout dans la table, car j'en ai besoin pour faire mon lien dans "DECOUPE_EN" :/

  6. #6
    Membre éclairé
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    Et bien tu balances une requête intermédiaire pour récupérer l'ID. Comme il s'agit d'un auto-increment tu peux récupérer l'id MAX.
    Perso je suis pas fan des auto-increment. Je préfère de loin un bon vieux Guid.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    J'ai un soucis (pour changer )

    Comment lire le MAX justement, j'ai testé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string id_procMax;
                string Recup_id_processus = "SELECT MAX(ID_PROCESSUS) FROM PROCESSUS";
                oCommand = new System.Data.SqlClient.SqlCommand(Recup_id_processus, oConnection);
     
                oCommand.ExecuteNonQuery();
                oReader = oCommand.ExecuteReader();
                if (oReader.Read())
                    id_procMax = oReader["ID_PROCESSUS"].ToString();
                else
                    id_procMax = "0";
                oReader.Close();
    Mais il me sort l'erreur suivante: System.IndexOutOfRangeException: ID_PROCESSUS

    En fait je ne sais pas comment lire le MAX d'une valeur avec le datareader

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Deja faut appeler ExecuteScalar
    Ensuite, ça doit être un truc dans le genre:
    Max = (int)oReader[0]

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Fumoffu
    Mais il me sort l'erreur suivante: System.IndexOutOfRangeException: ID_PROCESSUS
    C'est normal, tu n'as pas de colonne ID_PROCESSUS dans ton reader.

    Donc, si tu veux un reader à tout prix (pourquoi ????) Remplace MAX(ID_PROCESSUS) par MAX(ID_PROCESSUS) AS MAXID

    Puis va lire :

    oReader["MAXID"]

    Et, comme dit supra, utiliser plutôt un ExecuteScalar pour récupérer une valeur unique. (le reader ne sert à rien ici).

    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int id_procMax;
    string Recup_id_processus = "SELECT MAX(ID_PROCESSUS) AS MAXID FROM PROCESSUS";
     
    oCommand = new System.Data.SqlClient.SqlCommand(Recup_id_processus, oConnection);
     
    id_procMax = (int)oCommand.ExecuteScalar();
    NB : MAXID pouvant être remplacé par Tartempion ou Neuneu.
    NB2 : un ID de proc, je ne pense pas que ce soit une string, donc j'ai mis un int

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    C'est bon ça marche niquel, un grand merci tout le monde, j'avais jamais utilisé ExecuteScalar en fait, je débute

    Maintenant je saurai comment faire

    Encore merci

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    hs: fumoffu, un rapport avec le fumoffu d'astrowars?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    Ah, nan dsl, oui je vois qui c'est fumoffu ^^, par contre j'ai effectivement joué à Astrowars sous un autre pseudo pendant qq temps de la beta 7 à la gold 2 j'crois

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Fumoffu
    Ah, nan dsl, oui je vois qui c'est fumoffu ^^, par contre j'ai effectivement joué à Astrowars sous un autre pseudo pendant qq temps de la beta 7 à la gold 2 j'crois
    quel pseudo?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    MephistoE et Astares pour les pseudos, et j'ai commencé à la beta 6 en fait j'viens de retrouver sur un ancien forum:

    Beta 6: Alone - Beta 7: [SC] - Beta 8: [UWT] - Beta 9: [FE] - Beta 10: [FE] - Gold 1: [FP] - Gold 2: [FE]

    SC: 1ère petite alliance avec des potes
    UWT (dirigé par Grom) me souviens plus de ce que ça voulait dire
    Et après Fallen Empire (que j'avais fondé avec des gens comme Philipos, Helgar et d'autres), petit passage chez nos amis de Flibs and pirates (dirigé par Lonee) avant de rejouer avec mon alliance, et depuis j'ai arrêté ^^

    Voilou pour les infos HS

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

Discussions similaires

  1. [débutant] lien entre deux tables
    Par t-die dans le forum Débuter
    Réponses: 1
    Dernier message: 03/02/2006, 20h36
  2. lien entre deux table
    Par ept35 dans le forum Débuter
    Réponses: 28
    Dernier message: 21/12/2005, 14h50
  3. [MySQL] Lien entre deux tables
    Par ept35 dans le forum PHP & Base de données
    Réponses: 27
    Dernier message: 14/12/2005, 19h42
  4. [MySQL] Lien entre deux tables
    Par ept35 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/11/2005, 13h56
  5. [VB.NET] ComboBox lien entre deux tables
    Par VDB1 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/07/2004, 12h15

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