9 messages in org.openoffice.fr.prog[prog] ContrôleTable > macro navigation
FromSent OnAttachments
JovialMar 20, 2005 3:44 am 
JovialMar 20, 2005 11:47 am 
Alain NowakMar 21, 2005 12:28 am 
JovialMar 21, 2005 1:20 am 
Alain NowakMar 21, 2005 6:39 am 
JovialMar 22, 2005 3:07 am 
JovialMar 22, 2005 5:51 am 
Bernard MarcellyMar 22, 2005 11:25 am 
JovialMar 22, 2005 3:49 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] ContrôleTable > macro navigation Actions...
From:Jovial (o.jo@free.fr)
Date:Mar 20, 2005 3:44:35 am
List:org.openoffice.fr.prog

Bonjour :-)

J'ai une feuille calc dans laquelle j'ai placé un control de table. J'ai ajouté une série de bouton A B C ... Z et une macro qui va au 1er champ commençant par la lettre du bouton. Ca fonctionne mais j'ai 2 choses à améliorer:

1- Avec le code que j'ai produit ,le temps de réponse est 2/4 secondes sur une table DBase de 200 enregistrements( sur P650mz), peut on trouver quelque chose plus rapide ?

2- Dès que je me connecte à la source, je perds la barre de navigation de mon formulaire, je la retrouve seulement en cliquant sur un champ du tableControl.. Comment pourrai je faire pour sélectionner par macro l'élément de la colonne NOMAFFICHE sur la ligne 24 > absolute(24)

Jluc

Ci joint pour info la macro

Sub AllerLettreTable(evenement as object) dim maRequete As Object, resuQuery As Object dim LeLibelle As String, LePrix As Double, instrSQL As String dim nbLignesEcrites As Long, indexP As Long, x As Long MonDocument = ThisComponent 'Sélectionne le document en cours MaFeuille = MonDocument.CurrentController.ActiveSheet ' sélectionne la feuille activée DrawPage = MaFeuille.DrawPage 'sélectionne la partie graphique de la feuille Form = DrawPage.Forms.GetByIndex(0)'sélectionne les contrôle de formulaire Control = Form.getByName("TableControl")'sélectionne le controle par son nom 'xray.xray Control

'on s'assure que le ControlTable est ordonné sur la colonne NOMAFFICHE 'print Control.Parent.order Qte = chr(34)' valeur ascii du quote: " OrdreTriCol = Qte & "OCarnetAdr1" & Qte & "." & Qte & "NOMAFFICHE" & Qte '"OCarnetAdr1"."NOM" if Control.Parent.order <> OrdreTriCol then 'Control.Parent.order =OrdreTriCol '> sans effet sur le grill Form.order = OrdreTriCol 'on ordonne la Table Form.reload '> on recharge la forme Exit sub End if

'On récupére la lettre du bouton LettreAlpha = evenement.source.Model.Label 'Lettre du control 'print LettreAlpha

ConnecterSource 'on cherche la postion de l'élément qui commence par la lettre maRequete = maConnexion.createStatement() resuQuery = maRequete.executeQuery("select * from OCarnetAdr1 order by NOMAFFICHE") x=0 FinRecherche =0 While resuQuery.next x=x +1 'print resuQuery.Columns(0).string if FinRecherche =0 then if left(resuQuery.Columns.getByName("NOMAFFICHE").string,1)=LettreAlpha then 'xray.xray resuQuery.Columns 'print resuQuery.Columns.getByName("NOMAFFICHE").string, x FinRecherche =1 IndexLettre = x end if End if wend 'print IndexLettre,IndexLettre+24,x

'Gestion affichage dans ControlTable If FinRecherche = 0 then 'si pas trouvé beep End if if IndexLettre + 24 < x then '24 = nbrlign du grill - 1

Form.Absolute(IndexLettre+24) Form.Absolute(IndexLettre) Else 'si on est hors index table on affiche le dernier Form.Last Form.Absolute(IndexLettre) End if

DeconnecterSource 'end if End Sub