|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre Expert
![]() Vincent OPNI Inscription : décembre 2004 Messages : 1 669 ![]() |
Bonsoir,
J'ai fait quelques recherches et j'ai l'impression d'être tombé sur qqchose d'ennuyeux (pour moi): Je refait un rapport crée de maniére 'classique' (avec un univers et tout, et tout) mais avec sous l'option FreeHand SQL. Mon problème est que je dois obtenir un prompt avec une 'LOV' chargée par les valeurs d'un champ, alors qu'il semblerait que les valeurs doivent être 'codée en dur' directement dans la requête ... Un peu de cette manière: Code :
Qu'est ce qui doit être fait ? Merci d'avance pour vos conseils @ + Petite précision : je suis assez 'nouveau' dans B.O
__________________
Citation:
Mon dernier trip musical Citation:
|
||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : septembre 2006 Messages : 815 ![]() |
il faut que tu remplace la liste de valeur par la localisation de l'objet !! Il prendra ainsi la liste de valeur de l'objet (par défaut ou définie dans l'univers)
@prompt('Choose a report:', 'A', 'MA_CLASSE\Mon_objet', 'MONO', 'CONSTRAINED') mais ça c'est plutot au niveau d'une condition prédéfinie dans l'univers essaye en remplaçant 'MA_CLASSE\Mon_objet' par le code SQL de l'objet (table.champs) j'ai pas BO sous la main pour vérifer mais ça ressemble à ça.... si non fait un essai de requete avec une invite quelconque sur un objet...et regarde ce que ça te donne coté SQL...puis fait la meme chose !!! ...si je ne me trompe pas..c'est peut etre plutot @variable qu'il faut utiliser au lieu de @prompt.... |
|
|
00
|
|
|
#3 | |||
|
Membre Expert
![]() Vincent OPNI Inscription : décembre 2004 Messages : 1 669 ![]() |
Citation:
Effectivement, c'est exactement ce que j'avais fait, d'ailleurs j'avais un @variable au lieu du @prompt au départ. J'ai récupéré toutes le SQL d'un rapport basé sur un univers, histoire de bricoler et de voir comment cela fonctionnait dans le mode FreeHand SQL... Je suis tombé sur un forum british, qui semblait dire qu'effectivement j'allais être un peu coincé -> ici Qu'en penses tu ? D'ailleurs, si je comprends bien ce qui est proposé, je n'adhère pas a la solution alternative proposée ( une sorte de Mix entre Univers et FreeHand ? ) Merci de vos avis, @ +
__________________
Citation:
Mon dernier trip musical Citation:
|
|||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Vincent OPNI Inscription : décembre 2004 Messages : 1 669 ![]() |
Bonsoir,
Savez vous si l'on peut efficacement modifier via du VBA le code SQL des requêtes en 'FreeHand SQL' ? Mon idée est de tenter de travailler sur le SQL dans un évènement comme le 'Before Refresh'. Je fais tourner une autre requête qui fais simplement un 'SELECT' sur le champs dont les valeurs doivent faire ma L.O.V, et j'exporte le résultat dans un fichier Excel avec la méthode : des objets de type DataProvider. La suite de l'idée est d'aller lire dans le fichier les valeurs, les charger dans un String (non, non ... pas d'idées mal placées ) en ajoutant les guillemets et virgules, et inserer le tout dans le SQL de la requête, avec une méthode Replace(...) ou équiv dans la gestion des chaines ...Surtout que j'imaginais facilement localiser le texte a modifier en recherchant les '{' et '}' (avec InStr(...) et Mid(...), par ex ?). J'ai bien les bonnes valeurs a inserer, mais a priori je n'arrive po a modifier le texte du SQl de la requête ... Merci de vos conseils éclairés, @+
__________________
Citation:
Mon dernier trip musical Citation:
|
||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Vincent OPNI Inscription : décembre 2004 Messages : 1 669 ![]() |
Bonsoir,
Ch'tite précision: -> N'hésitez pas a me dire si je dis des bêtises grosses comme moi ... Je préfère tout envisager que de rester bloqué .... @+
__________________
Citation:
Mon dernier trip musical Citation:
|
||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Vincent OPNI Inscription : décembre 2004 Messages : 1 669 ![]() |
YYEEEAAAAHHHH !!!
J'ai trouvé ! Pfiou .... Hé ben, on peut dire que j'aurais ramé mais j'ai trouvé. Mais si ca se trouve, qqu'un avait déja un bout de code du même genre et s'était bien gardé de divulguer sa précieuse découverte. QQ petites 'API' dans l'éditeur VBA sous B.O et hop, c'est dans la boite. Le temps que je mette le tout sous une forme présentable et je post cela, histoire de voir si ca plait. Rooo, mais surtout le plus important : je vais pouvoir aller me défouler sur un site anglais ou je m'étais fait méchamment mouché par un brittish. Celui la, ce soir, je veux son scalp ! Non, mais.
__________________
Citation:
Mon dernier trip musical Citation:
|
||
|
|
00
|
|
|
#7 | ||||||||
|
Membre Expert
![]() Vincent OPNI Inscription : décembre 2004 Messages : 1 669 ![]() |
Re,
Donc l'idée est de travailler - a la base - sur l'évènement BeforeRefresh du document. Pour les 'grosses lignes' de l'idée: Je lance une requête sur le/les champs contenant les valeurs devant constituer ma LOV. (j'ai donc placé une référence a ADOX, dans mon cas) Je lance un Hook ( WH_CBT ) qui va capter le message précédant l'activation d'une fenêtre ( HCBT_ACTIVATE ). A l'aide de WindowSpy, j'ai obtenu les valeurs nécessaires a l'identification de la fenêtre permettant la modification du SQL d'un requête, ainsi que de son élément principal -> un Edit. Je lance donc la méthode Edit() ( de la classe Dataprovider ), ce qui m'ouvre la fenêtre de modification du SQL des requêtes, et le code insère le nouveau texte en remplacement de l'ancien et referme la fenêtre. Le rafraichissement des données se poursuit avec, cette fois ci, la bonne valeur dans le SQL mais surtout dans la définition du prompt. Dans ThisDocument: Code :
Connection a une base de données sous Oracle, avec ADODB, et requete sur les champs devant constituer la List Of Value. On récupère les valeurs et on les met en forme afin d'être le nouveau paramètre du prompt; on met chque valeur entre apostrophe et on place une virgule a la suite. En fin de liste, je fais appel a Left() afin de virer la dernière virgule, devenue inutile; peut être pas tres joli, mais bon .... Code :
Ici, c'est le traitement du Hook: Code :
Mais y a peut être des choses a redire la dessus, c'est surement loin d'être parfait, mais je suis content de ma petite trouvaille. @ +
__________________
Citation:
Mon dernier trip musical Citation:
|
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com