begin process at 2010 03 21 20:18:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Problème d'appel à un module


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'appel à un module

mardi 22 août 2006 à 11:29:03 | Problème d'appel à un module

observatoire

Bonjour,
J'ai réalisé un outil de requête sur Access. En important mon outil sur un autre poste, une fonction, qui marchait très bien sur le mien, ne marche plus. C'est une fonction que j'appelle à partir du module de classe de mon formulaire et qui est contenue dans un module :

dans le module du formulaire :
CodeSQL = "Select calcul(var1) Calcul From Table In Base;"

dans le module extérieur :
Function Calcul(Variable as double) As Double
  Calcul= Variable*5
End Function

Mais à côté de ça, d'autre transferts entre les deux modules marchent très bien:
dans le module du formulaire :
QryExist(Requête)

dans le module extérieur :
Function QryExist(sQryName As String) As Boolean
...
End Function

Merci
Observatoire

mardi 22 août 2006 à 13:37:18 | Re : Problème d'appel à un module

chaibat05

Bonjour,
Je penses qu' il y' a une erreur dans l' expression
CodeSQL = "Select calcul(var1) Calcul From Table In Base;"

qu' il faut remplacer par
CodeSQL = "Select " & calcul(var1) & " Calcul From Table In Base;"
avec une reserve sur Calcul que je ne sais pas ce que signifie

Mais le mieux serait que tu récupère clacul(var1) dans une
variable et que tu l' insère ensuite dans la requête.

Dim MonCalcul as Double
MonCalcul=Calcul(var1)
( Insère un MsgBox pour tester si Calcul retourne bien une valeur)

Ensuite
CodeSQL = "Select " & MonCalcul & " Calcul From Table In Base"

chaibat


mardi 22 août 2006 à 14:01:02 | Re : Problème d'appel à un module

observatoire

correction :
CodeSQL = "Select calcul(var1)As Calcul From Table In Base;"

Effectivement je penses que ta proposition doit marcher... mais ce que je ne comprends pas, c'est que ma technique marche tout à fait sur mon PC, même sur un deuxième, mais pas sur un troisième, sachant qu'ils ont tous des versions identiques d'Access... ça m'a l'air de venir d'options d'Access qui ne sont pas pareil sur chaque poste! Mais lesquelles???
mardi 22 août 2006 à 14:09:50 | Re : Problème d'appel à un module

chaibat05

Mystère !
En tout cas pour moi.

Dans tout les cas  tiens-moi au courant du résultat.
J' aimerais bien savoir.

Amicalement

chaibat
mardi 22 août 2006 à 22:55:49 | Re : Problème d'appel à un module

PCPT

Administrateur CodeS-SourceS
salut,
(VBA... pas expert du tout )

var1 est initialisée?
à supposer que oui pour 1 :

tu voudrais que çà donne en interprété :
CodeSQL = "Select 5 As Calcul From Table In Base;"

rien que là je bloque !!!
tu as une chaîne. elle ne peut donc pas être interprêtée...

çà serait donc la proposition de chaibat05 (sans forcément passer par une variable intermédiaire d'ailleurs ; on peut appeler la fonction dans le requête). çà ne change pas le fait que Select 5 ne veut rien dire...

sinon pourquoi çà ne fonctionne que sur ton PC..... voir ma première phrase, désolé

++

Prenez un instant pour répondre à ce sondage svp
mercredi 23 août 2006 à 00:25:44 | Re : Problème d'appel à un module

chaibat05

Bonsoir PCPT,
^^... (sans forcément passer par une variable intermédiaire d'ailleurs ; on peut appeler la fonction dans le requête).

Je sais que ton intention était bonne.

Tu t' en doutais bien que c' était juste pour voir si la fonction
retournait bien une valeur avant d' envisager de l' incorporer dans
le corps de la la requête.C' est ce que j' ai d' ailleur fait à la première
ligne.

chaibat

mercredi 23 août 2006 à 12:04:09 | Re : Problème d'appel à un module

observatoire

Pour Info, je viens de tester texto:

dans le module de classe de mon formulaire
Private Sub bouton_Click()

Dim db As Database
Set db = CurrentDb
Dim matab As QueryDef
QrySuppr ("toto")
totosql = "SELECT calcul(Table1.Geo) as Cal FROM Table1 GROUP BY calcul(Table1.Geo);"
Set matab = db.CreateQueryDef("toto", totosql)
DoCmd.OpenQuery "toto"

End Sub


dans un module
Function calcul(variable As String) As Double
calcul = Left(variable, 2)
End Function


et ça marche nickel sur mon PC!! Alors je ne penses vraiment pas que ce soit vraiment ma ligne de code qui soit fausse, je crois que c'est plutôt de l'ordre d'options du logiciel!!

J'ai d'ailleurs eu un autre bug étrange sur l'autre PC : la ligne de code :
DoCmd.Openreport "EtatToto" ne fonctionne pas
N'est-ce pas étrange??
Enfin mon problème est que je dois régler ça au plus vite!
mercredi 23 août 2006 à 12:35:44 | Re : Problème d'appel à un module

chaibat05

Bonjour,
Tu m' as déjà répondu que ça marchait pour:
CodeSQL = "Select " & calcul(Table1.Geo) & " as Cal FROM Table1 GROUP BY calcul(Table1.Geo);"  ?!!

Pourquoi t' entêter à vouloir mettre :
totosql = "SELECT calcul(Table1.Geo) as Cal FROM Table1 GROUP BY calcul(Table1.Geo);"

Ca m' étonnerais que ça marche .Ta fonction Calcul n' est pas une fonction Integrée.
Ou alors tu dois être la déclarée comme "ProcedureStored"
(ou quelque chose comme ça, je ne sais plus !) 


chaibat
mercredi 23 août 2006 à 13:23:40 | Re : Problème d'appel à un module

observatoire

Alors pour être claire : ta solution ne marche pas, vu qu'en extrayant "calcul(Table1.Geo)" du code sql, il ne peut pas identifier "Table1.Geo" qui n'existe que dans le code SQL.
Et c'est exactement pareil si on met une variable externe au code Sql:
Var = calcul(Table1.Geo)
CodeSQL = "Select " & Var & " as Cal FROM Table1 GROUP BY calcul(Table1.Geo);"
 
De plus mon code est plutôt du genre:
Private Sub bouton_Click()

Dim db As Database
Set db = CurrentDb
Dim matab As QueryDef
QrySuppr ("toto")
totosql = "SELECT calcul1(Table1.Geo), calcul2(calcul1(Table1.Geo)), calcul3(calcul1(Table1.Geo)) FROM Table1 GROUP BY calcul(Table1.Geo);"
Set matab = db.CreateQueryDef("toto", totosql)
DoCmd.OpenQuery "toto"

End Sub

MA SOLUTION MARCHE sur mon PC, donc ce n'est pas un problème de code pour cette ligne. Ce qu'il me faut c'est une solution liée AU LOGICIEL ACCESS.

Merci quand même de ton aide
mercredi 23 août 2006 à 17:03:16 | Re : Problème d'appel à un module

chaibat05

Hormis le problème Materiel,
Dans ta requête totosql = "SELECT calcul1(Table1.Geo), ....
c' est pas comme si tu mettais totosql = "SELECT First(Table1.Geo), ...
ou "SELECT Average(Table1.Geo),...... ou je ne sais quoi d' autres...
Ce sont deux choses totalement différentes.
Dans le second cas les Fonctions Fist, Average , Max, Min, Date, Sum,
...etc sont des fonctions Integrées et reconnues par  Access
Alors que calcul ne l' est pas.Elle est Externe à Acces.Pour que Acces l'  intègre ,
 il faut qu' elle soit
1° Définie dans un Module de ta Base Acces et non dans le code VB.
2° Qu' elle soit déclarée dans ton code comme procédure stockée.
    Dim db As Database
    Set db = CurrentDb
    Dim matab As QueryDef
    Dim Calcul ....je ne sais pas comment (j' ai peur de dire une co^^erie)

est-ce que tu saisi la nuance...?
Essaies de voir dans cette direction.

On n' est pas là pour t' imposer quoi que ce soit.Nous aussi on essaie
de comprendre avec toi.
Même avec ce que je viens de te proposer peut être que quelqu' un
pourrait me corriger.
Je dis ça parce que je t' ai senti agacé par nos réponses

C' est vrai qu' on est incapable de répondre à ta question :
Pourquoi ça marche ici et pas là

Amicalement.


1 2

Cette discussion est classée dans : problème, appel, formulaire, module, calcul


Répondre à ce message

Sujets en rapport avec ce message

Problème de calcul ds formulaire et ss formulaire [ par mystoizo ] salut a tous!!!J'ai un gros problème sur Access, je désire faire des calculs dans mon formulaire et sous formulaire qui sont relié l'un a l'autre par Un problème de taille - appel aux experts [ par Romuald76 ] Bonjour,Voici mon petit problème, peut être que quelqu'un aura une solution...J'ai un formulaire parent (MDI) de démarrage. A partir de ce formulaire, Problème d'appel à un module externe [ par jacques13 ] Bonjour à tous,Ceci est une question que j'ai posée il y a quelques mois mais pour laquelle je n'ai pas reçu de réponse satisfaisante.Soit un programm Problème de formulaire et dll Satellite language [ par OneHacker ] Je reposte ma question car personne n'y avait répobndu précédemment.J'ai un formulaire.La première fois que j'ai créer le formulaire frmParent sa prop problème avec checkbox [ par annyong ] bonjour,J'ai un problème pour "récupérer" la caleur d'une checkbox dans un module.voici  le code de ma checkbox :Public Sub TextBox1_Change()If TextBo associer une requete a un sous formulaire en VBA [ par cherie_cheri ] Bonjour, je me permet de venir vous déranger, car j'ai un petit problème. J'ai un formulaire access avec une zone de choix. Suivant mon choix (1 ou 2) Appel d'un formilaire apartir de mon application [ par marie_rim ] <td id="HB_Focus_Element" valign= appel formulaire [ par moudz84 ] salut, j'ai crée une fonction qui doit remplir au fur et a mesure une Liste dans access.cette liste s'appel "ListeAvancement"et donc dans cette method impression de formulaire [ par Tangshou ] Bonjour,J'ai crée un petite base de données sous ACCESS avec des formulaires et des requetes pour la consultation et l'impression d'infos. Je me trouv appel sur événement listview_columnclick [ par ramaro ] bonjour à tous!J'ai un problème sur l'appel d'un événement sur vb6. En faite, j'ai un listview et j'ai envie qu'au moment du chargement de la fenêtre


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales