Supprimer un enregstrement dans table avec jointure

cs_lienrag Messages postés 22 Date d'inscription mercredi 4 décembre 2002 Statut Membre Dernière intervention 3 février 2005 - 5 déc. 2002 à 06:40
cs_lienrag Messages postés 22 Date d'inscription mercredi 4 décembre 2002 Statut Membre Dernière intervention 3 février 2005 - 30 déc. 2002 à 08:25
Composant :

1 datagrid

1 adodc avec dans recordsource une jointure :

select table_stock.* , table_media.media_titre from table_stock, table_media where table_media.media_id=table_stock.media_id

je veux supprimer un enregistrement avec adodc.recordset.delete

et là erreur : information sur la colonne cle insuffisante pour la mise à jour ou le rafraichissement.

une solution ?
un autre methode ?

Merci.

2 réponses

cs_hgrandsart Messages postés 45 Date d'inscription samedi 6 juillet 2002 Statut Membre Dernière intervention 4 décembre 2011
29 déc. 2002 à 22:41
hgrandsart

Bonjour Lienrag
c'est encore moi.

Tu doit réappliquer une requête sur ton recordset en cours, requête du style:
DELETE FROM table_stock
WHERE
table_media.media_id="staracademy Volume 1 et 2"
(ça c'est une bonne requete! Je rigole! quoi que?)
bon soyons serieux.
utilise la commande "MonRecordset.Execute Ma_requete"
pour plus de simpliciter mieux vaut charger une variable String
Ca donne ca Par Exemple:

dim strQuery as string 'portée locale Le sub en cours
ou public strQuery as string 'portée globale utilisable partout dans l'appli
strQuery="DELETE FROM table_stock WHERE table_media.media_id=table_stock.media_id"
MonRecordset.Execute strquery

Attention!!! une requête SQL est impardonnable
si tu te goure tant pis. Pas de message style "êtes vous sur de vouloir effacer?"
Je te donne un petit conseil. Travail sur une toute petite base qui te servira de test et facile à reconstruire, ou alors fais une copie de ta base et fais tes tests dessus.

si tout cela ne marche pas oriente toi vers le mode d'ouverture de ton recordset
ca devrait avoir à peu prés cette gueule la:

MonRecordset.CursorLocation = adUseClient
MonRecordset.Open strQuery, CntMaConnection, adOpenDynamic, adLockOptimistic
je sais qu'ADO verrouille par sécurité, certains contextes, pour ma part je contourne avec SQL
voici une requête que j'ai appliquer a une base pour test pas de soucis ça marche.

DELETE Detail.*, *
FROM Categories INNER JOIN Detail ON Categories.RefCategorie = Detail.RefCategorie
WHERE Detail.RefCategorie=2 ;

Procure toi les bouquins suivants ca aide bien
"SQL2 initiation/programmation" de christian Marée et guy Ledant collection DUNOD
C'est un peu hard, surtout si tu debutes, mais y a pas mieux
"La référence du programmeur ADO 2.0" de david Sussman et alex Hommer
prix environ 30 euros
C'est un peu hard, surtout si tu debutes, mais y a pas mieux

bonne prog. A+
0
cs_lienrag Messages postés 22 Date d'inscription mercredi 4 décembre 2002 Statut Membre Dernière intervention 3 février 2005
30 déc. 2002 à 08:25
Merçi de ta réponce, je vais essayer tout ça.
0
Rejoignez-nous