Requetes dans plusieurs tables (delete + select)

Résolu
Signaler
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
-
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
-
Bonjour,

J'ai 2 tables AP et Positions.
Quand je selectionne une ligne dans le datagrid de la table AP et que je clic sur un bouton delete, j'ai besoin de supprimer un enregistrement de la table Position.
Pour cela je dois recuperer le champ AP_ID qui correspond a celui clique dans la table AP, mais j'ai un probleme dans ma requete sql. La voici, ca sera surement plus explicite :
string query "delete FROM Positions where AP_ID like (select AP_ID from AP where id " + cellvalue1.Replace("'","''") + ")";

Cela me revoie l'erreur suivante : Invalid Memo, OLE, or Hypelink Object in subquery 'AP_ID'.

Je dois peut etre utiliser des jointures? j'ai regarde sur un tutoriel car je ne sais pas du tout comment les utiliser mais je n'ai pas reussi a m'en servir pour ma requete (toujours novice en c# !).

Quelqu'un pourrait-il m'eclairer svp?
merci

*** Kakol ***

6 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
65
Ton problème, c'est du SQL, et pas du c#.

//Si AP_ID est une chaîne de charactères :
string query = "delete FROM Positions where AP_ID like " + cellvalue1.Replace("'","''") + ")";

//Si AP_ID est un entier:string query "delete FROM Positions where AP_ID " + int.Parse(cellvalue1) + ")";

Amicalement, SharpMao
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

Oui c'etait plus un probleme de sql c'est sur, j'aurais du mettre novice en c# et sql lol.
Finalement je me suis debrouillee autrement mais je te remercie de m'avoir repondu.
Bonne continuation.

*** Kakol ***
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
65
Si tu as une solution intéressante, poste-la, afin d'en faire profiter tout le monde.

Amicalement, SharpMao
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

Je me suis tout compte fait rabattue sur ta solution car la mienne etait un peu tiree par les cheveux alors que la en 2 lignes c'est fait car le champ AP_ID est le meme dans les 2 tables :
string cellvalue1=this.dataGrid1[iRownr,1].ToString(); //recup de la valeur de la cellulestring query "delete FROM Positions where AP_ID '"+cellvalue1.Replace("'","''")+"'";

merci beaucoup.

*** Kakol ***
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
65
Hello,
Juste un détail, avoir des clefs et faire des jointure sur des chaînes de charactères, c'est pas terible question efficacité. Il vaut mieux (à mon avis) rajouter une clef de type numérique. Ta solution peut marcher avec de petites tables, mais si tu commences à avoir de grandes tables, la différence va se sentir.

Amicalement, SharpMao
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

ok ben merci pour ton conseil et pour ton aide je vais voir ce que je peux faire.

*** Kakol ***