tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009
-
5 déc. 2008 à 20:37
tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009
-
9 déc. 2008 à 14:23
Bonjour,
En Vb6, sur un SSTab, comment provoquer un évènement en cliquant sur un onglet (autre que de lui donner le focus).
Un évènement du genre DataGrid1.Update
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 déc. 2008 à 20:31
Re
On est bien d'accord : Update, c'est pour écrire les modifications dans la DB.
Faire un Update au moment où tu visualises un onglet n'est peut-être pas le meilleur moment, je l'aurais plutôt provoqué au moment où l'onglet quitte la visu, c'est à dire avec le PreviousTab et pas le Tab.
Dans ton explication, tu dis "dès que je clique sur une autre cellule" : tu sous-entends "sans changer de Tab" ?
Dans ce cas, ne te focalise pas sur les Tabs, tu vois bien qu'il n'y a pas de lien.
Tu as dû mettre du code dans le DataGrid du premier onglet que tu n'as pas mis dans les autres
Regarde voir dans les évènements du premier DataGrid, dans OnAddNew, SelChange, Change, AfterColEdit ...
ou encore, recherche partout dans ton code où tu aurais pu faire un RecordSet.AddNew
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 déc. 2008 à 05:01
Salut
Pour provoquer un évènement, il faut qu'il existe.
Dans ta page de code, une fois que tu as sélectionné ton ssTab dans la ComboBox située en haut à gauche de la page, regarde dans la ComboBox de droite sur cette même page : Tu verras ici tous les évènements attachés à cet objet.
A toi de mettre du code dedans.
Si tu veux exécuter ce code sans que l'évènement se soit produit, il te suffit de faire
Call maSsTab_monEvènement(ici, éventuelle liste de paramètres si la Sub l'éxige)
Exemple classique avec un CommandButton :
Call monBouton_Click
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009 7 déc. 2008 à 16:08
Merci de ta réponse Jack,
Mais je crois m'être mal exprimé. Je veux obtenir un évènement différent selon l'onglet (Tab) que j'actualise. Dans SSTab, les onglets ne se comportent pas comme un objet. Il n'y a donc ni méthode, ni procédure qui lui sont associées.
J'ai un DataGrid sur chaque onglet associé à un Adodc différent pour chacun.
Lorsque je change d'onglet, le DataGrid se rempli bien, mais pour le update, il n'y a que celui du premier onglet qui fonctionne étant donné que je dois le commander dans le SSTab et non dans le Tab. J'étais habitué avec Delphi, qui était différent.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 déc. 2008 à 01:07
Re
Un ssTab n'est qu'un container qui n'affiche qu'une partie des objets qu'il héberge.
Les objets, comme tes DataGrids, sont donc des objets tous différents.
"Le Update" : Comment procèdes-tu ? C'est un bouton ? Quel code y a t-il derrière ? A quel DataGrid fait-il référence ? (le premier surement)
Le plus simple serait d'indexer les DataGrid et d'utiliser l'index de l'onglet actuellement affiché pour désigner le DataGrid(x) à mettre à jour.
"dans le SSTab et non dans le Tab" : pas clair
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009 8 déc. 2008 à 14:46
Salut et merci
J'ai placé un Datagrid1 et un Adodc1 dans le Tab1, Un Datagrid2 et un Adodc2 dans le Tab2, etc
À l'exécution, lorsque je clique sur un onglet les Datagrid indiquent bien les données des tables respectives.
Dans le SSTab, j'ai essayé ce code
Private Sub SSTab1_Click(PreviousTab As Integer)
If SSTab1.Tab = 0 Then
Adodc1.Recordset.Update
ElseIf SSTab1.Tab = 1 Then
Adodc2.Recordset.Update
ElseIf SSTab1.Tab = 2 Then
Adodc3.Recordset.Update
End If
End Sub
Dans le premier Datagrid, je change une valeur, je clique dans une autre cellule et la valeur se met à jour. Par contre dans les autres Datagrid, je change une valeur et dès que je clique sur une autre cellule la nouvelle valeur disparait (s'efface). Je ne comprend pas ce comportement.
tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009 9 déc. 2008 à 14:23
Merci beaucoup Jack pour ta patience et ton aide précieuse.
Je vais pouvoir m'en sortir avec Update et PreviousTab en forçant l'ordre de déroulement des tab.
Tu avais bien raison de me faire fouiller dans mon code pour l'entrée de donnée qui s'effaçait. J"avais tout simplement un Refresh qui était mal placé sauf pour mon premier Tab.