Suppression avec Adodc

m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012 - 19 nov. 2003 à 01:30
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012 - 22 nov. 2003 à 01:46
Salut à tous,
J'ai une requete avec liaison (Adodc2), qui remplie un DataGrid.
L'orsque je veux supprimer une ligne de ma grille, je reçois le message d'erreur suivant :
"Informations sur la colonne clé insuffisantes pour la mise à jour ou le rafraichissement"

voici le code

With Adodc2
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Chemin & "documents.mdb;Persist Security Info=False"
.RecordSource = ("select tache.id_tache, tache.designation, articles.id_articles, articles.reference, articles.designation from tache left join articles
ON tache.id_article = Articles.id_article ")
.Refresh
End With

Private sub Supprimer()
Adodc2.Recordset.Delete
End Sub

Ps: la meme requete fonctionne bien avec un controle DAO

6 réponses

gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
19 nov. 2003 à 07:55
Salut,

c'est normal. Comme tu as un lien entre 2 table et des champs de 2 tables, le système ne sait pas quoi effacer (le record de la première table ou de la deusième).
Il faudrait que tu utilise une Commande.
dim Cmd as new ADODB.Command
Set Cmd.ActiveConnection=ADODC2.Connection
Cmd.CommandText="Delete from table Where champ1 = " & datagrid.Columns(num colonne).value
Cmd.execute
ADOCD2.refresh

A+
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012
19 nov. 2003 à 15:23
Salut, merci pour ton aide.

Tout dabord je partage tout à fait la logique (lequel faut-il supprimer, apres tout y'a bien 2 tables).
Mais voilà que la meme requete fonctionne à merveille avec DAO (via le controle DATA) depuis des annees. Alors plus on avance et plus on recule. Microsoft nous trouve des problemes là ou ça a toujours marché. Bon c pas grave on fait avec.

Dans le bout de code que m'as envoyé, j'ai une erreur à cette ligne .

Cmd.ActiveConnection=ADODC2.Connection
"Méthode ou menbre introuvable"
l'intelisence ne me presente l'objet connection.

comprend vraiment pas ADO...

@+ et merci d'avance si tu as un peu de temps pour mon prob.
0
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
19 nov. 2003 à 15:56
Salut,
Désolé, mais j'ai pas vérifié.
Dim cmd As New ADODB.Command
Dim Cn As New ADODB.Connection
Cn.Open Adodc1.ConnectionString
Set cmd.ActiveConnection = Cn

A+
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012
19 nov. 2003 à 16:17
C'est presque bon !!!! voici ce que ça donne :
Dim cmd As New ADODB.Command
Dim Cn As New ADODB.Connection
Cn.Open Adodc1.ConnectionString
Set cmd.ActiveConnection = Cn cmd.CommandText "Delete from tache Where id_article " & DataGrid1.Columns("id_article").Value & ""
cmd.Execute
Adodc1.Refresh

sauf que mon grid ne rafraichie pas, (un autre clic sur le bouton refresh est necessaire) .
je pense que viens du fait que comme on efface l'enregistement par derriere (SQL),
le controle avec un seul refresh ne voit pas la modif.

En fait c'est ce que je fait dans un autre de mes codes.
CN.Execute " DELETE ..."

Mais le grid ne rafraichie pas de suite...

tu as une derniere idée ?

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
21 nov. 2003 à 07:48
Salut,

datagrid1.refresh.
Si ça ne fonctionne pas,
Set datagrid1.datasource= nothing
set datagrid1.datasource=adodc1.

C'est l'avantage de travailler avec des Objets types ADODC ou DataEnvironment. Il y at oujours des galères avec les mises à jour.

A+
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012
22 nov. 2003 à 01:46
Salut,

C'est bien ce que je pensais, j'ai bien compris que ADO est une evolution par rapport à DAO, mais a part dans des domaines ou l'on touche à l'Internet, je n'ai rencontré que de la complexité de l'emmerde et dès que l'on fouille un peu on se rend compte que l'on est loin d'être le seul.(pour des choses très simple d'ailleurs, suppression mise à jour de grid etc...). J'ai même une fois fait un test de rapidite. Soit une base access 2000 avec 50000 lignes. Une requete de recherche sur un critere donne etais + rapide avec le couple Data controle + DBgrid que avec le couple ADODC + DataGrid!!

A bon entendeur salut, je reste en DAO et merçi à tous pour vos réponses.

Ps: DataEnvironnement reste qqchose de relativement interessent, mais j'ai trouvé peu de documentations, et mon dieu que de Bugs concernant le rafaichissement de ce satané DataGrid.

@+
0
Rejoignez-nous