Acc. 2016 - Générateur d'Expressions - Fonctions intégrées - SQL
Fermé
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
-
2 sept. 2017 à 22:30
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 - 3 sept. 2017 à 18:34
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 - 3 sept. 2017 à 18:34
A voir également:
- Acc. 2016 - Générateur d'Expressions - Fonctions intégrées - SQL
- Generateur mot de passe - Télécharger - Sécurité
- Canva générateur d'image - Accueil - Outils
- Supprimer une page word 2016 - Guide
- Blob sql ✓ - Forum Webmastering
- Sql lister les tables ✓ - Forum Programmation
7 réponses
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
Ambassadeur
1 570
2 sept. 2017 à 23:34
2 sept. 2017 à 23:34
bonsoir, que se passe-t'il si tu encodes le nom de la fonction?
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
2 sept. 2017 à 23:50
2 sept. 2017 à 23:50
Bonsoir,
Merci de te pencher sur mon pb.
Si je tape la fonction, j'ai un message d'erreur qui dit :
l'action de Macro (DéfinirChamp) possède une valeur non valide pour l'argument.
J'ai essayé de faire cela dans une requete, ma formule fonctionne mais le pb est que pour tous les enregistrements toppés, mes champs "N° de RF" ont la même valeur (valeur trouvée par DMax + 1).
Désolée si je ne suis pas claire :-), mais je suis une apprentie débutante.
J'ai également tenté de mettre ma fonction d'incrémentation dans un module VBA, mais impossible de trouver l'action "ExecuterCode dans le catalogue d'actions proposé par les DataMacro.
Merci de te pencher sur mon pb.
Si je tape la fonction, j'ai un message d'erreur qui dit :
l'action de Macro (DéfinirChamp) possède une valeur non valide pour l'argument.
J'ai essayé de faire cela dans une requete, ma formule fonctionne mais le pb est que pour tous les enregistrements toppés, mes champs "N° de RF" ont la même valeur (valeur trouvée par DMax + 1).
Désolée si je ne suis pas claire :-), mais je suis une apprentie débutante.
J'ai également tenté de mettre ma fonction d'incrémentation dans un module VBA, mais impossible de trouver l'action "ExecuterCode dans le catalogue d'actions proposé par les DataMacro.
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
3 sept. 2017 à 09:48
3 sept. 2017 à 09:48
peux-tu partager le code SQL de ta requête, ou, au minimum, l'appel de la fonction DMax?
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
3 sept. 2017 à 13:47
3 sept. 2017 à 13:47
Je pense qu'il est possible d'exécuter du code VBA à partir d'une DataMacro: en utiisant une fonction VBA pour mettre à jour une variable locale de la macro. Cette fonction VBA peut faire tout ce que tu souhaites.
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
Ambassadeur
1 570
3 sept. 2017 à 13:33
3 sept. 2017 à 13:33
je pense que cela fonctionne si, dans (DéfinirChamp), tu appelles une fonction VBA au lieu de DMax.
Exemple de fonction VBA:
Exemple de fonction VBA:
Public Function maxref() As Long maxref = DMax("N° de RF", "Dons") End Function
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 15:26
3 sept. 2017 à 15:26
Bonjour,
Merci pour ta repose et pour ton temps.
Mais j'ai la même erreur qu'avec DMax.
J'ai tenté deux requêtes ( une de mise à jour) et une de selection mais avec la même formulation dans la formule, donc finalement j'obtiens le même rpoblème. Toutes les valeurs du champs N°RFgenere ont la même valeur.
- Requete 1 : UPDATE Donateurs INNER JOIN Donations ON Donateurs.ID = Donations.IDDonateur SET Donations.Champ2 = DMax("[N°RFgenere]","[Donations]",+1)+1;
-Requete 2 (faite pour exporter toutes les informations dont j'ai besoin pour faire un publipostage Word/Excel) :
SELECT Donateurs.Nom, Donateurs.Prénom, Donateurs.Civilité, Donations.[Montant en lettres], Donateurs.Adresse1, Donateurs.Adresse2, Donateurs.Adresse3, Donateurs.[Code postal], Donateurs.Ville, Donateurs.Pays, Donateurs.Pol1, Donateurs.Pol2, Donations.[Date de la donation], Donations.Montant, Donations.[Forme du don], Donations.[Type de don], Donations.[Nature du don], Donations.[Mode de paiement], Donations.[RF à faire], Donations.[Statut RF], (DMax("[N°RFgenere]","[Donations]",+1)+1) AS Expr2
FROM Donateurs INNER JOIN Donations ON Donateurs.ID = Donations.IDDonateur
WHERE (((Donations.[RF à faire])=Yes));
Merci par avance.
Merci pour ta repose et pour ton temps.
Mais j'ai la même erreur qu'avec DMax.
J'ai tenté deux requêtes ( une de mise à jour) et une de selection mais avec la même formulation dans la formule, donc finalement j'obtiens le même rpoblème. Toutes les valeurs du champs N°RFgenere ont la même valeur.
- Requete 1 : UPDATE Donateurs INNER JOIN Donations ON Donateurs.ID = Donations.IDDonateur SET Donations.Champ2 = DMax("[N°RFgenere]","[Donations]",+1)+1;
-Requete 2 (faite pour exporter toutes les informations dont j'ai besoin pour faire un publipostage Word/Excel) :
SELECT Donateurs.Nom, Donateurs.Prénom, Donateurs.Civilité, Donations.[Montant en lettres], Donateurs.Adresse1, Donateurs.Adresse2, Donateurs.Adresse3, Donateurs.[Code postal], Donateurs.Ville, Donateurs.Pays, Donateurs.Pol1, Donateurs.Pol2, Donations.[Date de la donation], Donations.Montant, Donations.[Forme du don], Donations.[Type de don], Donations.[Nature du don], Donations.[Mode de paiement], Donations.[RF à faire], Donations.[Statut RF], (DMax("[N°RFgenere]","[Donations]",+1)+1) AS Expr2
FROM Donateurs INNER JOIN Donations ON Donateurs.ID = Donations.IDDonateur
WHERE (((Donations.[RF à faire])=Yes));
Merci par avance.
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
3 sept. 2017 à 15:55
3 sept. 2017 à 15:55
je propose de faire fonctionner via la DataMacro,
peux-tu partager des informations:
la fonction fonctionne-t'elle quand tu l'appelles en VBA?
peux-tu décrire comment tu as défini l'appel à la fonction dans la datamacro?
peut-être partager ton fichier ou des images?
peux-tu partager des informations:
la fonction fonctionne-t'elle quand tu l'appelles en VBA?
peux-tu décrire comment tu as défini l'appel à la fonction dans la datamacro?
peut-être partager ton fichier ou des images?
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 16:41
3 sept. 2017 à 16:41
La fonction maxref fonctionne.
Je l'ai collé dans une requête et le résultat obtenu est le bon. Elle ressort bien la valeur max des données concernées (N°RFgenere).
Pour la fonction mon module ressemble à cela :
Option Explicit
---------------------------------------------------------------------------------------
Sub RF()
End Sub
---------------------------------------------------------------------------------------
Public Function maxref() As Long
maxref = DMax("N°RFgenere", "Donations")
End Function
Le problème c'est qu'avec les DataMacro dans Access 2016, on ne peut utiliser que les fonctions intégrées dans Access, même si nous définissons une "Public Function", elle n'apparait pas à cet endroit mais est complètement fonctionnelle dans des requêtes (par exemple).
Idem pour les macros : A partir du module VBA ci dessus, je suis supposée avoir créé une macro "RF". Or, elle n’apparaît pas dans ma liste de macro que je peux executer.
Impossible de trouver l'action "ExecuterCode" . Donc je ne sais pas comment appeler ma fonction :-(
J'ai eu le même problème pour transformer mes Montants en chiffres en lettres. J'ai résolu ce souci avec une requête d'ajout.
Je suis perdue.
Je l'ai collé dans une requête et le résultat obtenu est le bon. Elle ressort bien la valeur max des données concernées (N°RFgenere).
Pour la fonction mon module ressemble à cela :
Option Explicit
---------------------------------------------------------------------------------------
Sub RF()
End Sub
---------------------------------------------------------------------------------------
Public Function maxref() As Long
maxref = DMax("N°RFgenere", "Donations")
End Function
Le problème c'est qu'avec les DataMacro dans Access 2016, on ne peut utiliser que les fonctions intégrées dans Access, même si nous définissons une "Public Function", elle n'apparait pas à cet endroit mais est complètement fonctionnelle dans des requêtes (par exemple).
Idem pour les macros : A partir du module VBA ci dessus, je suis supposée avoir créé une macro "RF". Or, elle n’apparaît pas dans ma liste de macro que je peux executer.
Impossible de trouver l'action "ExecuterCode" . Donc je ne sais pas comment appeler ma fonction :-(
J'ai eu le même problème pour transformer mes Montants en chiffres en lettres. J'ai résolu ce souci avec une requête d'ajout.
Je suis perdue.
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
>
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 16:51
3 sept. 2017 à 16:51
moi je n'ai aucun problème pour utiliser maxref()+1 comme valeur dans (DéfinirChamp) de ma DataMacro.
maxref() n’apparaît pas, en effet, à cet endroit, mais fonctionne parfaitement quand je la tape à cet endroit.
maxref() n’apparaît pas, en effet, à cet endroit, mais fonctionne parfaitement quand je la tape à cet endroit.
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 16:53
3 sept. 2017 à 16:53
Mince moi cela ne fonctionne pas.
Il y a peut-être un "truc" à activer et que je n'ai pas.
Aurais-tu une idée ?
Il y a peut-être un "truc" à activer et que je n'ai pas.
Aurais-tu une idée ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 16:59
3 sept. 2017 à 16:59
J'ai eu droit à un message d'erreur qui ne dit que la valeur n'est pas compatible avec le web.
Mais je m'en moque du web. Ma BDD ne sera pas publiée.
Mais je m'en moque du web. Ma BDD ne sera pas publiée.
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
Ambassadeur
1 570
3 sept. 2017 à 17:08
3 sept. 2017 à 17:08
moi j'ai ceci comme datamacro "avant changement", et cela me semble bien fonctionner (sauf quand j'ajoute en une fois plusieurs enregistrements):
(if) ([ref]=0) Or IsNull([ref]) (DéfinirChamp) ref maxref()+1 (end if)
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 17:15
3 sept. 2017 à 17:15
Rien à faire,cela ne fonctionne pas.
Ma BDD doit être dans un format "bizarre" type 'compatible avec le web pour que cela soit bloquant mais je ne sais pas où se définit ce choix ni si on peut revenir en arrière.
En attendant, un grand merci pour ton temps et ton aide.
Ma BDD doit être dans un format "bizarre" type 'compatible avec le web pour que cela soit bloquant mais je ne sais pas où se définit ce choix ni si on peut revenir en arrière.
En attendant, un grand merci pour ton temps et ton aide.
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
3 sept. 2017 à 17:38
3 sept. 2017 à 17:38
peut-être partager ta base, sans données confidentielles?
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 17:49
3 sept. 2017 à 17:49
C'est super gentil mais elle est très remplie.
En fait, je crois que j'ai trouvé. C'est un truc que je en savais pas.
Je suis dans ACC 2016 et ma BDD a été créée comme une BDD web et non de bureau. Et en fonction de cela, nous n'avons pas les mêmes possibilités. Grunch, Grunch et re-Grunch.
(https://support.microsoft.com/fr-fr/office/cr%c3%a9er-une-base-de-donn%c3%a9es-access-%c3%a0-partager-sur-le-web-cca08e35-8e51-45ce-9269-8942b0deab26?ui=fr-fr&rs=fr-fr&ad=fr
Je viens donc de créer une nouvelle BDD de type "Bureau" et j'ai importé mon autre BDD (de type web).
Dans la DataMacro, je n'ai plus de message d'erreur concernant la "Valeur" du Champ à définir.
Par contre, j'ai un petit message d'erreur quand je saisi une donnée qui dit "Types incompatibles".
En fait, je crois que j'ai trouvé. C'est un truc que je en savais pas.
Je suis dans ACC 2016 et ma BDD a été créée comme une BDD web et non de bureau. Et en fonction de cela, nous n'avons pas les mêmes possibilités. Grunch, Grunch et re-Grunch.
(https://support.microsoft.com/fr-fr/office/cr%c3%a9er-une-base-de-donn%c3%a9es-access-%c3%a0-partager-sur-le-web-cca08e35-8e51-45ce-9269-8942b0deab26?ui=fr-fr&rs=fr-fr&ad=fr
Je viens donc de créer une nouvelle BDD de type "Bureau" et j'ai importé mon autre BDD (de type web).
Dans la DataMacro, je n'ai plus de message d'erreur concernant la "Valeur" du Champ à définir.
Par contre, j'ai un petit message d'erreur quand je saisi une donnée qui dit "Types incompatibles".
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
3 sept. 2017 à 17:58
3 sept. 2017 à 17:58
"Types incompatibles": par exemple si tu mets un texte et que Access attend un nombre.
Nefertari67
Messages postés
9
Date d'inscription
samedi 2 septembre 2017
Statut
Membre
Dernière intervention
3 septembre 2017
3 sept. 2017 à 18:06
3 sept. 2017 à 18:06
Un immense merci pour ton temps, ta disponibilité, tes conseils et ta patience.
"Petit scarabée reconnaissant :-)"
"Petit scarabée reconnaissant :-)"
yg_be
Messages postés
23487
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 mars 2025
1 570
3 sept. 2017 à 18:34
3 sept. 2017 à 18:34
avec plaisir!
(si c'est résolu, peux-tu marquer comme résolu?)
(si c'est résolu, peux-tu marquer comme résolu?)