m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 février 2012
-
19 nov. 2003 à 01:30
m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 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
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 20092 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
m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 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.
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 20092 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
m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 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.