Supprimer un enregstrement dans table avec jointure

Signaler
Messages postés
22
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
3 février 2005
-
Messages postés
22
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
3 février 2005
-
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

Messages postés
45
Date d'inscription
samedi 6 juillet 2002
Statut
Membre
Dernière intervention
4 décembre 2011

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
Messages postés
22
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
3 février 2005

Merçi de ta réponce, je vais essayer tout ça.
0