ExecuterSQL
Objet
Exécute une instruction de requête SQL pour l'occurrence de table spécifiée dans un fichier FileMaker Pro.
Format
ExecuterSQL ( RequêteSQL ; séparateurRubrique ; séparateurLigne{; arguments...} )
Paramètres
RequêteSQL : instruction SQL SELECT. L'instruction peut inclure une clause Union associant les résultats de deux requêtes. L'instruction peut contenir des éléments SQL générés par programmation (paramètres dynamiques) indiquant où les arguments facultatifs doivent être utilisés dans la requête. Utilisez lepoint d'interrogation (?) pour indiquer un paramètre dynamique.
séparateurRubrique : chaîne de caractères utilisée en tant que séparateur entre les rubriques du résultat. Si une chaîne vide est indiquée, le séparateur est une virgule. Le séparateur de rubrique n'est pas affiché après la dernière rubrique du résultat.
séparateurLigne : chaîne de caractères utilisée en tant que séparateur entre les enregistrements du résultat. Si une chaîne vide est indiquée, le séparateur est un retour chariot. Le séparateur de ligne n'est pas affiché après la dernière ligne du résultat.
arguments : une ou plusieurs
expressions évaluées et utilisées en tant que valeurs pour les paramètres dynamiques de l'instruction de requête.
Résultat
Texte
Provenance
FileMaker Pro 12.0
Description
ExecuterSQL vous permet d'exécuter des instructions SQL SELECT contenant des paramètres dynamiques afin d'interroger en toute sécurité des bases de données FileMaker Pro et d'éviter les vulnérabilités de sécurité par l'introduction d'attaques.
ExecuterSQL ne reconnaît pas les liens créés dans FileMaker Pro, ce qui vous offre la flexibilité de définir des liens dans les instructions SQL et de récupérer les données de n'importe quelle table, indépendamment du contexte du modèle.
ExecuterSQL ne peut pas être utilisé avec des instructions SQL qui modifient des données ou le schéma de la base de données (par exemple les commandes Insérer dans ou Supprimer table).
En cas d'erreur pendant l'analyse ou l'exécution, FileMaker Pro renvoie?.
Remarques
•Pour que les dates aient le format approprié dans une requête SQL, utilisez l'instruction DATE. Sans cette instruction, ExecuteSQL traite les dates comme des chaînes littérales.
•FileMaker Pro renvoie les données de date, d'heure et de nombre au format Unicode/SQL et non pas conformément aux paramètres régionaux du système d'exploitation ou du fichier.
•ExecuteSQL accepte uniquement également les formats de date et d'heure ISO syntaxe SQL-92 sans accolades. ExecuteSQL n'accepte pas les constantes de date, d'heure et d'horodatage au format ODBC/JDBC entre accolades.
•FileMaker SQL utilise l'ordre de tri binaire Unicode, qui est différent de l'ordre de tri FileMaker Pro utilisé avec le tri d'après la langue ou de l'ordre de tri indépendant de la langue par défaut.
Exemple 1
Supposons qu'une base de données contient deux tables, Employés et Salaires, liées par la rubrique IDEmployés.
Remarque Les rubriques Employés::IDEmployés, Salaires::IDEmployés et Salaires::Salaire sont des rubriques Nombre.
Vous pouvez utiliser la fonction ExecuterSQL pour renvoyer une valeur de rubrique depuis un enregistrement spécifique sans modifier l'enregistrement actif, ni le jeu d'enregistrements trouvés.
ExecuterSQL ( "SELECT Service FROM Employés WHERE IDEmployés = 1" ; "" ; "" ) renvoie Développement, quels que soient l'enregistrement actif, le jeu d'enregistrements trouvés ou le modèle.
Exemple 2
Supposez que vous souhaitiez ajouter une rubrique à la table Employés pour afficher le pourcentage du salaire d'un employé par rapport au total des salaires d'un service. Même si vous pourriez utiliser un calcul dans FileMaker Pro pour générer cette valeur, vous pouvez utiliser la fonction ExecuterSQL pour définir cette requête à l'aide de paramètres dynamiques. L'exemple ci-dessous utilise les alias de table pour la table Employés (E) et la table Salaire (S) au moment de spécifier les rubriques (S.Salaire, E.IDEmployés et S.IDEmployés).
Définissez une rubrique Calcul dans la table Employés, puis utiliser la fonction ExecuterSQL pour définir l'instruction de requête suivante :
Arrondi (
100 * Salaires::Salaire / ExecuterSQL (
"SELECT SUM ( S.Salaire )
FROM Employés E
JOIN Salaires S
ON E.IDEmployés = S.IDEmployés
WHERE E.Service = ?" ;
"" ; "" ; Employés::Service
) ;
2 )
Dans chaque enregistrement d'employé, la rubrique Calcul affiche le pourcentage du salaire de l'employé par rapport au total des salaires du service de l'employé. Par exemple, l'enregistrement avec le Nom "Martin" renvoie 52,97 et l'enregistrement avec le Nom "Mehmet" renvoie 100.
Rubriques connexes