datagrid éditable ? - VB/VBA/VBS - Programmation
Marsh Posté le 21-01-2004 à 15:03:30
je sais pas si tu utilises ou pas le DataGrid de .NET, mais si c'est le cas, tu dois utiliser la méthode SetDataBinding de ton objet DataGrid pour le remplir
Marsh Posté le 21-01-2004 à 15:44:06
Il n'y a pas de problème au niveau code, même que la méthode Refresh est superflue. C'est forcément le recordset qui foire.
Marsh Posté le 21-01-2004 à 16:07:06
yop,
bon, je faisais ca avec un DataEnv
maintenant, je fais ça comme ça et il me fait : recordset "not bookmarkable..."
|
Marsh Posté le 21-01-2004 à 16:33:45
ya un truc qui me choque en tout cas, c'est que tu fermes le recorset à la fin de la procédure. La connection à la limite on s'en fout (d'ailleurs mettre la propriété ActiveConnection du recordset à Nothing est de bon aloi).
Marsh Posté le 21-01-2004 à 16:34:46
ah ben c'est pour ça que le datagrid est vide, c'est justement parce que tu as fermé ton recordset
Marsh Posté le 21-01-2004 à 16:38:08
fais gaffe aux courants d'air si tu le laisses ouvert !
Marsh Posté le 21-01-2004 à 16:41:51
art_dupond a écrit : ben j'ai déjà eu des problèmes en ne le fermant pas, alors je le ferme. |
tu DOIS le laisser ouvert, il n'y a aucun doute à avoir là dessus
l'intérêt du recordset est que tu passes toujours par lui lorsque tu browses ton datagrid et qu'éventuellement tu modifies des données dedans. Tout se passe de manière transparente.
Marsh Posté le 22-01-2004 à 10:08:43
yop le datagrid c'est bon...
par contre, j'arrive pas à le rendre éditable
j'ai trouvé un exemple sur le net ou le datagrid est éditable, mais en le copiant dans mon projet, il ne l'est plus
et je ne vois pas ce qui le rend "editable" dans le code
Marsh Posté le 22-01-2004 à 10:15:07
c'est ton Execute qui te met dedans: il est prévu pour retourner un recordset et .|
Si tu veux avoir une chance d'updater:
Code :
|
Attention, avec ça tu es connecté à la DB directement et les modifs se font en temps réel. Si tu veux éviter ça, il y a la technique des recordsets déconnectés.
Marsh Posté le 22-01-2004 à 10:34:43
yop merci,
mais il me dit:
cette opération n'est pas autorisée sur un objet ayant une référence vers une connection non valide ou fermée. |
Pourtant je n'ai changé que
Set Rs = CoConnection.Execute(query)
par ce que tu as donné. Donc à priori, la connection doit être bonne, non ?
Marsh Posté le 22-01-2004 à 10:47:55
ah mais merde, quel distrait
faut préciser l'objet connection en paramètre (juste après query)
j'ai édité mon précédent post.
Marsh Posté le 22-01-2004 à 11:04:37
le adCmdTable est optionnel, et il est à spécifier si tu passes une query style "le_nom_de_ma_table", alors qu'avec une requête SQL, tu mettras plutôt adCmdText
Marsh Posté le 22-01-2004 à 11:28:26
essaie un Update ou UpdateBatch sur le recordset lorsque tu quittes ta fenêtre. Perso je travaille toujour par recordset déconnecté donc je sais pas comme ça se passe lorsque tu restes connecté.
Marsh Posté le 22-01-2004 à 11:41:19
Non, ça c'est pour gérer les évènements émis par le recordset. Cela peut être utile si tu veux voir l'état de chargement d'un très gros recordset par exemple.
Un recordset déconnecté, comme son nom l'indique, est séparé de l'objet connection (on met la propriété ActiveConnection à Nothing). De cette manière, le recordset travaille de façon locale à 100%, mais les enregistrements chargés sont verrouillés côté DB.
Une fois que ton boulot est fini (tu fais des ajouts, modifications et suppressions, ce que tu veux), tu te reconnectes à la DB et tu te synchronises en faisant un UpdateBatch. A l'occasion, je posterai une version épurée de mon code qui démontre cette technique fort utile.
Marsh Posté le 21-01-2004 à 14:58:43
youp,
j'essaye de remplir un datagrid avec des données d'une DB
après recherche, je fais :
Set rs = coco.Execute(query)
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
mais ca ne marche pas... mon datagrid reste vide
(le Rs est un recordset et il est bien rempli)
ce qui est bizarre, c'est qu'il ne se passe rien non plus quand je fais :
Datagrid1.columns(1).width = 1000
j'ai loupé quelque chose (surement) ?
merci
Message édité par art_dupond le 22-01-2004 à 10:01:38
---------------
oui oui