datagrid éditable ?

datagrid éditable ? - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 21-01-2004 à 14:58:43   

Reply

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


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-01-2004 à 15:11:09    

j'utilise vb6
 
mais je vais toujours voir ca


---------------
oui oui
Reply

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.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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..."


Public Sub Form_Load()
Dim CoConnection As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim query As String
 
   Set CoConnection = New ADODB.Connection
    Set Rs = New ADODB.Recordset
 
    CoConnection.ConnectionString = "driver={SQL Server};server=sql_serveur;uid=login;pwd=password;database=base"
    CoConnection.Open
    query = "SELECT * FROM table"
     
    'Set Rs.Properties("Bookmarkable" ) = True
    Set Rs = CoConnection.Execute(query)
    Set grille.DataSource = CoConnection.Execute(query)
     
    Rs.Close
    CoConnection.Close
End Sub


 
:(


Message édité par art_dupond le 21-01-2004 à 16:07:17

---------------
oui oui
Reply

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).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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 [:joce]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 21-01-2004 à 16:37:23    

ben j'ai déjà eu des problèmes en ne le fermant pas, alors je le ferme.
 
je vais essayer en le laissant ouvert


---------------
oui oui
Reply

Marsh Posté le 21-01-2004 à 16:38:08    

fais gaffe aux courants d'air si tu le laisses ouvert !
 
[:neowen]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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.
 
je vais essayer en le laissant ouvert


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.


Message édité par drasche le 21-01-2004 à 16:42:45

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 21-01-2004 à 16:41:51   

Reply

Marsh Posté le 21-01-2004 à 16:43:12    

arf, je viens de comprendre.
 
le datagrid est lié à la base, c'est pourtant simple
 
sorry d'être neuneu :p
 
 
merci drasche :)


---------------
oui oui
Reply

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 :(


---------------
oui oui
Reply

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 :
  1. Set Rs = New ADODB.Recordset
  2. Call Rs.Open(query, CoConnection)


 
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.


Message édité par drasche le 22-01-2004 à 10:48:24

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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 ?


Message édité par art_dupond le 22-01-2004 à 10:34:58

---------------
oui oui
Reply

Marsh Posté le 22-01-2004 à 10:47:55    

ah mais merde, quel distrait [:joce]
 
faut préciser l'objet connection en paramètre (juste après query)
j'ai édité mon précédent post.


Message édité par drasche le 22-01-2004 à 10:53:34

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 22-01-2004 à 10:57:56    

yop voici le truc complet
 


Call Rs.Open(query, CoConnection, , adCmdTable)


 
encore merci monsieur :)


---------------
oui oui
Reply

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 ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 22-01-2004 à 11:08:49    

ah... en tout cas ca ne marche pas si je ne le mets pas... enfin bon.. ca marche, on va pas chipotter :p
 
 
merci beaucoup en tout cas


---------------
oui oui
Reply

Marsh Posté le 22-01-2004 à 11:23:04    

argh... sorry mais ca marche pas en fait :p
 
je peux bien éditer, mais ca ne fait pas "vraiment" les changements dans la base.
 
je pourrais le faire en récupérant les valeurs, mais comme tu as dit que c'était sensé se faire tout seul :ange:


---------------
oui oui
Reply

Marsh Posté le 22-01-2004 à 11:28:26    

[:gratgrat]
 
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é.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 22-01-2004 à 11:33:37    

yop ca marche :)
 
:jap:
 
 
ps: c'est ca un recordset déconnecté ?  
 
Private WithEvents rs As ADODB.Recordset


---------------
oui oui
Reply

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.


Message édité par drasche le 22-01-2004 à 11:41:31

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 22-01-2004 à 13:15:25    

yop yop  :)
 
 
 :jap:  
 
 
 :hello:


---------------
oui oui
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed