Problme insertion [Résolu]

Signaler
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009
-
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009
-
bonjour je veu insérer dans une table payement qui n'a pa de clé primaire elle possède 2 clé étrangères. le problème . l'insertion est faite via une méthode qui se trouve dans un service web, ma méthode fonctionne mais elle ajout 2 fois l'enregistrement.Merci de votre aide . 

9 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Tu aurais dû répondre sur ce post : http://www.csharpfr.com/forum/sujet-INSERER-DONNES_1318366.aspx, pas en faire un nouveau.

Enfin bon...

Tu peux faire un truc du genre
SqlCommand commande = new SqlCommand();
commande.Connection = maConnexionSQL;commande.CommandText "SELECT COUNT(IdCle1) FROM Table WHERE IdCle1 @IdCle1 AND IdCle2 = @IdCle2;";
commande.Parameters.Add(new SqlParameter("@IdCle1", cle1));
commande.Parameters.Add(new SqlParameter("@IdCle2", cle2));

if(commande.ExecuteScalar().ToString() == "0")
{
    // Ajout
}

ou sinon, tu peux peut-être utiliser des procédures stockées (si ta BDD le permet), ce qui te permettra de gagner en performances et simplifiera grandement ton code

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
if(commande.ExecuteScalar().ToString() == "0")
{
    // Ajout
    return true;
}else{
    return false;
}

et dans l'appel à ta webmethod :

if(webMethodInsertion(mesDonnees))
{
    MessageBox.Show("Enregistrement ajouté");
}else{
    MessageBox.Show("L'enregistrement existe déjà");
}

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
if(commande.ExecuteScalar().ToString() == "0")
{
    // Ajout
    return monDataSet;
}else{
    return null;
}

DataSet ds;
ds = webMethodInsertion(mesDonnees);
if(ds != null)
{
    MessageBox.Show("Enregistrement ajouté");
}else{
    MessageBox.Show("L'enregistrement existe déjà");
}

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009

salut, toujours le meme probleme il ajout 2 fois l'enregistrement .Merci de ton aide
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009

je pense que le problème est dans la requête string req = "INSERT INTO Payement(CodeClient,CodeProduit, Dates, Type )VALUES( '" + CodeClient + "','" + CodeProduit + "','" + Dates + "', '" + Type + "');";
quand je met la clé primaire de la table payement dans le champ CodeClient le problème ne pose pas mais il y a un autre problème , dans le champ codeClient pas de doublons .
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
T'es sûr que tu n'exécute pas tout simplement 2 fois ta requête ?
Parce que je peux t'assurer que si tu as déjà un enregistrement avec la même IdCle1 et la même IdCle2, il ne rentre pas dans le if du code que je t'ai link.

Envoie le code de ta fonction, on trouvera peut-être d'où vient l'erreur

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009

merci de ta réponse j'ai trouvé le problème au niveau de cette commande " ExecuteNonQuery();" j'ai enlevé cette commande et sa marché. comment envoyé la résultat a mon application sous forme un messagebox qui m'indique que si cet enregistrement existe ou no s'il existe alors m'affiche cet enregistrement existe" sinon il ajoute l'enregistrement . Merci beaucoup
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009

dommage une erreur   Impossible de convertir implicitement le type 'System.Data.DataSet' en 'bool'  .ma methode retourne une dataset qui est liée a datagridview alors comment testé dans l'application si l'neregistrement est ajouté .Merci du grand travail que tu fait
Messages postés
15
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
5 juin 2009

merci beaucoup