Intégrer une fonction vba à une requête

Fermé
flopre Messages postés 5 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 29 mai 2013 - 28 mai 2013 à 16:17
blux Messages postés 26302 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 - 29 mai 2013 à 17:04
Bonjour,

Je souhaite créer un formulaire qui calcule une date d'expédition à partir d'une date de livraison et d'un délai et une date de début au plus tard de la production à partir de cette date d'expédition et d'un temps de production. J'ai trouvé un code vba qui fonctionne mais étant donné que mon formulaire est en tabulaire, je dois l'intégrer dans ma requête (mon formulaire est créé à partir d'une requête). Toutefois je ne sais pas comment intégrer cette fonction écrite en visual basic dans la requête.

Voici mon code qui est dans un module appelé "delai" (delai, date_livraison sont des champs dans des tables, date_exp deviendra un champ dans la requête).
Faut-il que je spécifie "function Dateexp(date_livraison,delai)" vu que le calcul se fait en fonction de ces champs?

Option Compare Database
Public date_exp As Date
Public jour As Integer
Public ecart As Integer
Public delai As Integer
Public Date_livraison As Date

Function Dateexp()

ecart = 0

jour = Weekday(Date_livraison)

While delai > 0
If jour = 2 Then
ecart = ecart + 3
jour = 6
Else
ecart = ecart + 1
jour = jour - 1
End If

delai = delai - 1
Wend

date_exp = Date_livraison - ecart

End Function


Quand je vais dans ma requête,et dans le générateur d'expression je trouve ma fonction dateexp je double clique dessus et ça note "dateexp()". Mais ça ne donne pas de résultat dans la colonne lors de l'exécution.
Comment faire pour que le calcul se fasse?

J'espère que mon explication est claire.
Merci d'avance.

3 réponses

blux Messages postés 26302 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
28 mai 2013 à 16:19
Salut,

le format est le suivant :

SELECT nom_fonction(paramètre1,paramètre2,...) FROM ....
0
flopre Messages postés 5 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 29 mai 2013
28 mai 2013 à 16:34
D'accord merci.

En ce qui concerne les paramètres il faut que je mette que les champs créés dans ma base de données ou les champs créés dans ma base de données et ceux créés dans le code?
Dans mon cas, faut-il que je mette juste comme paramètre date_livraison et delai ou date_livraison, delai et ecart? (vu que ecart est utilisé pour le calcul de la date_exp)
0
blux Messages postés 26302 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
Modifié par blux le 28/05/2013 à 16:47
En fait, tu dois mettre ce que la fonction attend.
Dans ce que tu as mis, la fonction n'attend rien de particulier, se contentant de calculer des valeurs et de les mettre dans une variable.

Le mieux serait que tu crées deux fonctions, puisque tu dois renvoyer deux résultats et que tu les appelles avec des paramètres (qui pourront être des champs de formulaire).

Et plutôt que de mettre ça dans la requête, tu crées un champ de plus dans ton formulaire où tu appelleras ces fonctions...
0
flopre Messages postés 5 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 29 mai 2013
28 mai 2013 à 16:54
Non je ne peux les mettre dans mon formulaire car mon formulaire est en mode tabulaire, donc le résultat de la première ligne se calcule mais après il se copie sur toutes les autres lignes... Car oui ce serait plus simple de le mettre directement dans mon formulaire autrement
0
flopre Messages postés 5 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 29 mai 2013
28 mai 2013 à 16:42
Désolé mais ça ne fonctionne pas, j'ai noté :
date_exp: (select Dateexp([Date_livraison],[délai_livraison]) from )

J'ai mis select entre parenthèse car le logiciel m'a dit que c'était une sous requête, et maintenant il me met "erreur de syntaxe dans l'expression". Ai-je mal noté dans le générateur d'expression?
0
blux Messages postés 26302 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
29 mai 2013 à 09:40
Déjà, ta requête est incorrrecte, il manque quelque chose après le FROM.
Et comme je l'ai dit, ta fonction n'a pas de paramètres appelés.
0
flopre Messages postés 5 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 29 mai 2013
29 mai 2013 à 10:19
Oui mais il faut mettre quoi après le from?
Et j'ai appelé les paramètres dans ma fonction c'est bon j'ai changé
0
blux Messages postés 26302 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
29 mai 2013 à 17:04
Je crois qu'il y a un peu de confusion dans ton esprit, je vais essayer de regarder ce qu'on peut faire car je pense que tu essayes tes trucs compliqués qui peuvent, à mon avis, être simplifiés...
0