Accueil > Forum > > > > [VBA Access] Fonction à intégrer dans une requête SQL
[VBA Access] Fonction à intégrer dans une requête SQL
vendredi 21 juillet 2006 à 15:52:57 |
[VBA Access] Fonction à intégrer dans une requête SQL

observatoire
|
Bonjour, Dans mon générateur de requête, je souhaite faire intervenir une fonction mathématique que j'ai créé dans le programme (ou plutôt que j'ai repris à partir d'un code du site : c'est le khi-deux). Pour des fonction existantes dans Access pas de problème : MonSql = " Select ABS(Var1), Var2 From Table "
Mais là, ma fonction Chi2() de type : Public Function Chi2(ByVal X As Double, ByVal df As Integer) As Double ... End Function
ne fonctionne pas avec : MonSql = " Select Chi2(Var1,1), Var2 From Table "
ni même avec
X = Chi2(Var1,1) MonSql = " Select " & X & ",Var2 From Table "
Auriez-vous la solution?? siou plait :-(
Observatoire
|
|
vendredi 21 juillet 2006 à 16:01:39 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

pymaster
|
Bonjour,
Bien le premier problème que je vois c'est que ta fonction est placé dans la partie SELECT de ton SQL et qu'elle retourne un Double ?????
Je sais pas ce que tu veux faire avec cette fonction mais je ne pense pas que Access aime 2.5656 comme nom de champs. Par contre si tu veux afficher un nom de colonne avec un chiffre qui proviens d'une fonction de Math alors je ferrais plus
MonSql = "SELECT '" & Chi2(Var1, 1) & "'", Var2 From Table "
Comme ça ton Double va être pris comme un string ;)
PY
|
|
vendredi 21 juillet 2006 à 16:06:17 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

observatoire
|
sauf que je ne veux pas identifier un nom de colonne avec ma formule, je pourrais très bien mettre un alias (MonSql = " Select Chi2(Var1,1) as Alias, Var2 From Table ") ce que je veux c'est créer une colonne qui me calcule à partir de la Var1 (comme paramètre) le Chi2()
|
|
vendredi 21 juillet 2006 à 16:34:04 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL
|
vendredi 21 juillet 2006 à 16:51:00 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

observatoire
|
Et bien pour moi ça ne marche toujours pas. On me dit "Fonction 'Chi2' non définie dans l'expression" ...? Mon code est plus précisément sous la forme de requêtes imbriquées : Sqltab2 = "SELECT tab1.var1 as khi2 FROM (" & Sqltab1 & ") AS tab1"
Sqltab3 = "SELECT tab2.khi2, Chi2(tab2.khi2,1) as ValeurP FROM (" & Sqltab2 & ") AS tab2 "
Public Function Chi2(ByVal X As Double, ByVal df As Integer) As Double ... End Function
|
|
vendredi 21 juillet 2006 à 16:59:17 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

observatoire
|
par contre quand je fais : Sqltab3 = "SELECT tab2.khi2, " & Chi2(tab2.khi2,1) & " as ValeurP FROM (" & Sqltab2 & ") AS tab2 " il reconnaît bien ma fonction chi2, mais plus tab2.khi2
|
|
vendredi 21 juillet 2006 à 18:29:20 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

pymaster
|
Réponse acceptée !
reBonjour !
Je pense que j'ai peut-être trouvé une piste pour toi
ou se situ ta fonction Chi2 ? De la manière dont tu en parle on dirait que ta fonction est public mais dans un form, car ton fonction est valide quand tu affecte ton sql dans tes variables mais pas quand Access roule la query de son bord.
Si ce n'est pas le cas il faudrais que tu place ton fonction dans un module, alors Access pourrait y accédé sans faire d'erreur
J'espère que j'ai trouvé une bonne piste
PY
|
|
dimanche 23 juillet 2006 à 21:56:54 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

rvblog
|
Salut observatoire, salut à tous, beaucoup d'énergie dans l'coin, je viens de trouver la source de la canicule, je crois :)
- d'abord, pymaster n'a pas forcément tort ( même si je trouve que tu as fais pas mal de progrès, et que je doute que n'aies pas fait attention à la portée de ta fonction), donc vérifies ce qu'il dit, ce n'est pas bête du tout ( utilises le générateur de requête d'Access, il possède un assistant pour écrire les expressions, et si c'est assistant voit ta fonction, le moteur SQL la verra aussi). - essaies aussi d'ajouter un niveau d'imbrication, car il est possible qu'il soit trop tôt pour passer tab2.khi2 en argument à une fonction ( d'ailleurs, essaies simplement de mettre "SELECT tab2.khi2, tab2.khi2 + 1) as ..." pour vérifier cette hypothèse).
- en ce qui concerne le MP que tu m'as envoyé, je crois que je n'ai pas bien compris la question. à+ PS: pardon, je ne suis pas en grande forme, je suis très pris, sur un gros projet ( avec plein de robots qui n'ont pas un sens de la conversation très aiguisé), et très fatigué, tiens, je ne sais même pas en quelle page on est :). PS2: je répondrais quand même, bien sûr, mais pas promptement. rvblogn Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges
|
|
lundi 24 juillet 2006 à 16:15:00 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

observatoire
|
j'avoue que je maîtrise assez mal tout ce qui sort des objets form ou tout ce qui concerne les "public" et "private". si vous pouviez m'expliquer un peu... ça a l'air d'être en bonne voie, mais le programme bute sur un morceau du calcul, et j'ai peur de ne être à la hauteur!
|
|
lundi 24 juillet 2006 à 21:25:45 |
Re : [VBA Access] Fonction à intégrer dans une requête SQL

rvblog
|
Salut observatoire,
pas à la hauteur, pas à la hauteur... qui est à la hauteur? Ensuite, la peur dure plus longtemps que la douleur, donc pas de panique, fais-toi mal!
Allez, au boulot maintenant, je ne suis plus sûr du contexte, mais il me semble que tu travailles sous Access.
Un formulaire est une classe, et peut exposer (publier) des propriétés ou des méthodes. Ces dernières peuvent être intégrées (car héritées de la classe formulaire, par exemple la propriété BackColor [que tu n'as pas déclarée toi-même, mais qui existe pourtant] ou la méthode Print [même combat]), et d'autres peuvent être déclarées par l'utilisateur (trice).
Un module est un ensemble conceptuel (parfois physique) de fonctions ou de variables, qui n'existe que pour répondre à un critère de qualité que l'on nomme la modularité, et qui sert donc (le plus souvent) à regrouper les fonctions et declarations d'un même domaine conceptuel (les entrées/sorties fichier, le dessin sur l'écran, la gestion des appels à l'API...).
Tous 2 font partie intégrante de l'application, mais certaines différences les condamnent à être différents :
-Tant que le formulaire n'est pas chargé, l'appel d'une de ses propriétés échoue. Ex : si tu exécutes l'instruction : BackColor = vbGreen l'application ne sait pas de quel objet on parle, et ne peut pas exécuter l'instruction (enfin si, mais on ne sait pas où, on peut guetter, pour voir si quelque chose devient vert, mais à part mes commentaires, je ne vois pas :)). Il en va de même pour ses méthodes. (la portée de ses propriétés/méthodes est dépendante du type de leur déclaration [Public lngMaCouleurDeFond As Long est visible de l'extérieur du formulaire (on dit de l'instance de l'objet, d'où "exposé" ou "publié"), Private m_lngMaCouleurDeFond As Long n'est visible que de l'intérieur du formulaire (on l'appelle un "membre", par opposition à un "attribut")], et leur durée de vie est celle du formulaire (en gros au début le formulaire est une classe [une description qui ne fait rien], ensuite on le charge et il devient une instance de classe [ou un objet], et on le décharge [on détruit l'instance de classe ou l'objet])).
- Dès que l'application s'exécute, toutes les variables déclarées dans un module standard occupent la mémoire et sont accessibles (leur portée est dépendante du type de déclaration [Public strMaVar As String est visible en dehors du module, et Private strMaVar2 As String n'est visible que dans le module], et leur durée de vie est celle de l'application).
Ton problème réside peut-être dans "l'endroit" où tu as déclaré ta fonction Chi2 (dans un formulaire, ou dans un module standard). Elle doit être publique, et dans un module standard pour pouvoir être utilisée à partir du moteur d'exécution SQL d'Access.
Simple, non?
dis nous, à+
rvblogn Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges
|
|
Cette discussion est classée dans : access, fonction, requête, chi2, monsql
Répondre à ce message
Sujets en rapport avec ce message
ACCESS > Execution d'une fonction automatiquement [ par vbtom ]
Bonjour, Est-il possible d'éxéxcuter automatiquement une fonction lorsqu'un nouvel enregistrement est cré?Si oui comment?Merci d'avance.@++ vbtom.
Requêtes imbriquées [ par Luke ]
Je désire faire avec VB6 une requête imbriquée qui ira dans Access 97 me chercher les infos demandées et les afficher. J'ai fait la requête facilement
Requête, liste et bd Access [ par Nathalie ]
Bonjour, Je fais une requête reliée à une base de données Access 2000. Je voudrais que lorsqu'un champ (dans mon cas c'est une liste déroulante à séle
Ajouter une requête à ma base de donnée access depuis mon programme en VB [ par Jayjay ]
J'aimerai ajouter une requête dans ma base de donnée access depuis mon programme en Visual basic (6)Comment faire ... avec create query ?help me! merc
Besoin d'aide VB 6.0 et BD Access 97 [ par DaGreat ]
Bonjour j'ai une base de données faite en Acces (suite office 97) et j'aimerais bien y effectuer des requête SQL venant de mon logiciel Visual Basic 6
Access 2000 Critère requête [ par Léon ]
Comment utiliser une variable Public comme critère de requête dans Access 2000 ?Merci de votre aide
ADO et requête access avec parameteres [ par wels02 ]
Comment on peut ouvrir une requete access qui porte un parametre avec visual basic en utilisant ADOMerci!
Access et requête [ par jpp ]
Dans acces, j'aimerais savoir comment, dans une requête dirigée sur une autre requête,extraire les 18 premiers enregistrements ou les 18 enregistremen
Requête Sous Access [ par pollux ]
Quelles sont les commandes pour executer des requêtes sous access en les écrivans à partie de VB.Du StyleSELECT UtilisateurFROM TableUtilWHERE N°Util
Liens Access Exel [ par caro ]
Bonjour,Je voudrais automatiquement en lancant une requête sous Access que le résultat de cette requête soit directement transféré sous Excel et trans
Livres en rapport
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
VB6 + GRAPHVIZVB6 + GRAPHVIZ par nouirayosra
Cliquez pour lire la suite par nouirayosra
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|