54
Wonderware FactorySuite™ Guide de l’utilisateur du gestionnaire SQL Access RØvision A DerniLre rØvision : 7 novembre 2002 Invensys Systems, Inc.

Wonderware factory suite

Embed Size (px)

DESCRIPTION

Guide de l’utilisateur du gestionnaire SQL Access Révision A Dernière révision : 7 novembre 2002 Invensys Systems,

Citation preview

Page 1: Wonderware factory suite

Wonderware® FactorySuite�Guide de l'utilisateur du gestionnaire SQL Access

Révision A

Dernière révision : 7 novembre 2002

Invensys Systems, Inc.

Page 2: Wonderware factory suite

Tous droits réservés. Aucune partie de cette documentation ne peut être reproduite, stockée sur un système d'extraction ou transmise sous quelque forme ou par quelque moyen que ce soit, électronique ou mécanique, y compris photocopie et enregistrement, sans la permission écrite expresse de Invensys Systems, Inc. Aucun droit d'auteur ou de brevet n'est requis pour utiliser les informations contenues ici. Bien que toutes les précautions aient été prises lors de la préparation de cette documentation, l'éditeur et l'auteur déclinent toute responsabilité en cas d'erreur ou d'omission éventuelles. ou de dommages potentiels qui pourraient résulter de l'utilisation des informations qu'elle contient.

Les informations présentes dans ce manuel sont susceptibles d'être modifiées sans avis préalable et n'engagent pas Invensys Systems, Inc. Le logiciel décrit dans ce manuel est régi par un octroi de licence ou un accord de confidentialité. Il ne peut être utilisé ou copié qu'aux termes de ce contrat ou accord.

© 2002 Invensys Systems, Inc. Tous droits réservés.

Invensys Systems, Inc.33 Commercial StreetFoxboro, MA 02035(949) 727-3200http://www.wonderware.com

Marques commerciales

Tous les termes mentionnés dans ce manuel connus comme marques commerciales ou marques de service sont en majuscules. Invensys Systems, Inc. décline toute responsabilité quant à la précision de ces informations. L'utilisation d'un terme dans ce guide ne peut pas être considérée comme affectant la validité d'une marque commerciale ou d'une marque de service.

Alarm Logger, ActiveFactory, ArchestrA, Avantis, DBDump, DBLoad, DTAnalyst, FactoryFocus, FactoryOffice, FactorySuite, hotlinks, InBatch, InControl, IndustrialRAD, IndustrialSQL Server, InTouch, InTrack, MaintenanceSuite, MuniSuite, QI Analyst, SCADAlarm, SCADASuite, SuiteLink, SuiteVoyager, WindowMaker, WindowViewer, Wonderware et Wonderware Logger sont des marques commerciales de la société Invensys plc, ses délégations et filiales. Toutes les autres marques sont des marques commerciales appartenant à leurs propriétaires respectifs.

Page 3: Wonderware factory suite

Sommaire 3

Sommaire

CHAPITRE 1: Module SQL Access ...................5

Introduction ............................................................................................ 5À propos de ce guide.............................................................................. 6Support technique................................................................................... 7Compatibilité ODBC.............................................................................. 8

CHAPITRE 2: Configuration et connexion des bases de données.................9

Utilisation de Oracle 8.0......................................................................... 9Syntaxe de la fonction SQLConnect()................................................ 9Enregistrement de la date et de l'heure dans un champ de date Oracle .............................................. 10

Utilisation de Microsoft SQL Server ....................................................11Configuration du client ......................................................................11Types de données pris en charge....................................................... 12

Utilisation de Microsoft Access ........................................................... 12Longueur de chaîne .......................................................................... 13

Valeurs des types de données pour les bases de données prises en charge........................................................ 14

CHAPITRE 3: Configuration du module SQL Access Manager..........................15

Présentation du module SQL Access Manager .................................... 15Configuration d�une liste de liens..................................................... 16

Utilisation de séparateurs spéciaux ...................................................... 20Configuration d�un modèle de table..................................................... 21Fichier SQL.DEF ................................................................................. 24

CHAPITRE 4: Utilisation des fonctions SQL..25Fonctions SQL...................................................................................... 25

Fonction ............................................................................................ 25Paramètres SQL.................................................................................... 34Utilisation de fonctions SQL dans des QuickScripts InTouch............. 38

Définition de requêtes complexes..................................................... 38Récupération de valeurs dans les variables InTouch ........................ 42Conservation de variables InTouch dans des champs de base de données................................................ 43Implications des règles de mise à jour de données ........................... 43

Guide de l�utilisateur du gestionnaire SQL Access

Page 4: Wonderware factory suite

4 Sommaire

CHAPITRE 5: Dépannage ................................45Dépannage des fonctions ......................................................................45

Messages d'erreur des codes de résultat ............................................45Messages d'erreur spécifiques aux bases de données............................47Mise au point de SQL Access ...............................................................48

ANNEXE A: Mots-clés réservés ......................49SQL Access et ODBC .......................................................................49InTouch..............................................................................................51

Index..................................................................53

Guide de l�utilisateur du gestionnaire SQL Access

Page 5: Wonderware factory suite

Module SQL Access 5

C H A P I T R E 1

Module SQL Access

Le Gestionnaire SQL Access de Wonderware FactorySuite vous permet d'accéder, de modifier, de créer et de supprimer des tables d'une base de données. Une base de données stocke les informations dans des tables ayant un attribut ou un champ en commun. L'accès à ces informations s'effectue par le biais du langage SQL (Structured Query Language, langage de requêtes structuré).

Sommaire� Introduction

� À propos de ce guide

� Support technique

� Compatibilité ODBC

IntroductionLe programme gestionnaire SQL d'InTouch est conçu pour faciliter le transfert de données, telles que des recettes par lots, d'une base de données SQL vers une application InTouch. Il simplifie également le transfert, vers la base de données SQL, de données figurant dans InTouch, qu'il s'agisse de données d'exploitation, historiques ou relatives à l'état des alarmes. Par exemple, lorsque le cycle d'une machine prend fin, il se peut qu'une société ait besoin d'enregistrer plusieurs groupes de données, chacun d'eux étant destiné à une application distincte. Les bases de données SQL permettent de transférer facilement des informations entre une ou plusieurs applications distantes. Le module SQL pour InTouch permet d'accéder à ces données et de les afficher dans n'importe quelle application InTouch.

Guide de l'utilisateur du gestionnaire SQL Access

Page 6: Wonderware factory suite

6 Chapitre 1

Le module SQL pour InTouch comprend le programme SQL Access Manager et les fonctions SQL. Le programme SQL Access Manager permet de créer et d'associer les colonnes d'une base de données aux variables de votre dictionnaire de variables dans InTouch. Un tel processus d'association s'appelle « une liaison ». La liaison des variables d'une base de données InTouch aux colonnes de la base de données permet au module SQL Access Manager d'y exploiter directement les informations. Le module SQL Access enregistre les noms de champ de la base de données et leurs associations dans un fichier de variables séparées par des virgules (.CSV) nommé « SQL.DEF ». (Ce fichier se trouve dans le répertoire de l'application InTouch et peut être consulté ou modifié à l'aide du module SQL Access Manager ou de n'importe quel éditeur de texte tel que le Bloc-notes.) Le module SQL Access Manager crée également des modèles de tables qui définissent la structure et le format des bases de données.

Pour de plus amples informations sur les listes de liens et sur les modèles de tables, reportez-vous au Chapitre 3, « Configuration du module SQL Access Manager ».

Les fonctions SQL peuvent être utilisées dans tout script d'action InTouch. Vous pouvez leur indiquer de s'exécuter automatiquement lorsque l'utilisateur entre une information, ou que la valeur d'une variable change, ou bien encore lorsque des conditions particulières sont réunies. Par exemple, lorsqu'une condition d'alarme existe, l'application exécute une commande SQLInsert() ou SQLUpdate() pour enregistrer le contenu de tous les points de données concernés ainsi que l'état de l'alarme. Les fonctions SQL vous permettent de créer, de vider ou de supprimer des tables, d'y insérer de nouveaux enregistrements ou de modifier ceux qui s'y trouvent déjà, ou encore de sélectionner des enregistrements et de les explorer, etc.

Remarque Les systèmes de bases de données qui ne sont pas présentés dans ce guide ne sont pas pris en charge.

À propos de ce guideCe guide est divisé en plusieurs chapitres logiques décrivant les différents aspects de l'utilisation du module SQL Access Manager. Sa rédaction est « procédurale » et décrit la plupart des fonctions ou tâches suivant des étapes numérotées.

Si vous visualisez ce manuel en ligne, cliquez sur le texte apparaissant en vert pour accéder à la section ou au chapitre référencé(e). Lorsque vous passez à une autre section ou un chapitre différent et que vous souhaitez revenir à la section d'origine, une option «Retour» est disponible.

Astuce Ce symbole représente un «astuce» décrivant un moyen plus rapide ou plus simple pour accomplir une tâche ou une fonction.

Pour vous familiariser avec l'environnement de développement WindowMaker et ses outils, reportez-vous au chapitre 1, «Éléments du programme WindowMaker», du Guide de l'utilisateur InTouch . Pour en savoir plus sur l'utilisation des fenêtres, objets graphiques, Wizards, contrôles ActiveX, etc., consultez le Chapitre 2, «Utilisation de WindowMaker».

Guide de l'utilisateur du gestionnaire SQL Access

Page 7: Wonderware factory suite

Module SQL Access 7

Pour plus de détails sur l'environnement d'exploitation InTouch (WindowViewer), reportez-vous au Guide de l'utilisateur � Exploitation InTouch.

De plus, le Manuel de référence InTouch présente des références détaillées relatives au langage de script, aux variables système et aux .champs de variables InTouch.

Pour plus de détails sur l'utilitaire SPC Pro, reportez-vous au Guide de l�utilisateur - SPC Pro InTouch.

Pour plus de détails sur l'utilitaire Gestionnaire de recettes, reportez-vous au Guide de l�utilisateur du Gestionnaire de recettes.

Les manuels en ligne sont également inclus dans votre progiciel FactorySuite pour tous les composants de ce dernier.

Remarque Vous devez installer Adobe Acrobat Reader (version 4.0 ou supérieure) pour visualiser ou imprimer les manuels en ligne.

SuppositionsCe manuel considère comme acquis les points suivants:

� Connaissance de l'environnement de travail du système d'exploitation Windows 2000, XP et/ou Windows NT.

� Connaissance de l'utilisation d'une souris, des menus Windows, des options de sélection et de l'accès à l'aide en ligne.

� Expérience d'un langage de programmation ou de macros. Pour obtenir de meilleurs résultats, vous devriez être familier avec les concepts de programmation tels que variables, instructions, fonctions et méthodes.

Support techniqueLe support technique de Wonderware offre toute une gamme d�options d�assistance, afin de répondre aux questions sur les produits Wonderware et leur mise en �uvre.

Avant de contacter le support technique, veuillez vous reporter au Guide de l'utilisateur du Gestionnaire SQL Access afin de trouver une solution possible pour le problème rencontré. Si vous jugez toutefois nécessaire de contacter le support technique pour une assistance supplémentaire, veuillez avoir les informations suivantes disponibles:

1. Le numéro de série de votre logiciel.

2. La version d'InTouch exécutée.

3. Le type et la version du système d'exploitation utilisé. Par exemple, station de travail Microsoft Windows NT version 4.0.

4. Les messages d'erreur système exacts rencontrés.

5. Tout listage de sortie significatif du Wonderware Logger, de l'utilitaire Microsoft Diagnostic (MSD), ou de toute autre application de diagnostic.

Guide de l'utilisateur du gestionnaire SQL Access

Page 8: Wonderware factory suite

8 Chapitre 1

6. Les détails des tentatives effectuées pour résoudre le ou les problèmes et le résultat.

7. Les détails permettant de recréer le problème

8. Si connu, le numéro de cas du support technique Wonderware attribué à votre problème (si ce problème est répétitif).

Pour de plus amples informations relatives au support technique, reportez-vous au Guide de l'administrateur système de FactorySuite.

Compatibilité ODBCLe module SQL Access Manager est une application compatible avec ODBC elle communique avec tout système de bases de données, dès lors que ce dernier est doté d'un pilote ODBC approprié. Avant d'utiliser un tel pilote, vous devez le configurer à l'aide du programme Administrateur Microsoft ODBC Data Source. Vous devez en effet définir les liens qui existeront entre l'application compatible avec ODBC et la base de données.

Pour configurer un pilote ODBC

1. Démarrez le programme Administrateur ODBC Microsoft.

2. Sélectionnez un pilote ou une source de données, puis cliquez sur Ajouter, Par défaut ou Configurer. La boîte de dialogue Configuration de pilote ODBC .

Astuce Complétez tout autre champ nécessaire à la configuration du pilote sélectionné.

3. Cliquez sur OK.

Astuce Le pilote écrit les valeurs de chaque champ dans le fichier ODBC.INI. Ces valeurs sont les valeurs par défaut d'une connexion à la source de données. Vous pouvez modifier ces valeurs en modifiant les champs de la source de données. Dans la section appropriée de la source de données du fichier ODBC.INI, vous pouvez entrer manuellement des informations pour n'importe quel attribut non pris en charge par la boîte de dialogue de configuration du pilote ODBC.

Option DescriptionNom de la source de données

Nom défini par l'utilisateur, identifiant la source de données

Description Description de cette source de données, définie par l'utilisateur

Répertoire de la base de données

Identifie le répertoire contenant les fichiers de base de données. Si aucun répertoire n'est indiqué, le répertoire de travail en cours sera utilisé.

Guide de l'utilisateur du gestionnaire SQL Access

Page 9: Wonderware factory suite

Configuration et connexion des bases de données 9

C H A P I T R E 2

Configuration et connexion des bases de données

Le Gestionnaire SQL Access prend en charge les bases de données Oracle, Microsoft SQL Server et Microsoft Access. Les exigences associées à chaque base de données sont uniques et spécifiques. Ce chapitre comprend des sections distinctes pour chaque base de données, qui indiquent comment les configurer en vue de les faire communiquer avec le Gestionnaire SQL Access.

Sommaire� Utilisation de Oracle 8.0

� Utilisation de Microsoft SQL Server

� Utilisation de Microsoft Access

� Valeurs des types de données pour les bases de données prises en charge

Utilisation de Oracle 8.0Pour communiquer avec Oracle 8.0

1. Vérifiez que le fournisseur OLEDB de Oracle (MSDAORA.DLL) existe dans le système InTouch client. Ce fichier est installé avec les composants MDAC (Microsoft Data Access), eux-mêmes installés lors de l'installation de InTouch.

2. Connectez-vous à Oracle en exécutant la fonction SQLConnect() dans un script d'action InTouch.

Pour plus d'informations sur l'utilisation de la fonction SQLConnect(), reportez-vous au Chapitre 4, « Utilisation des fonctions SQL ».

Syntaxe de la fonction SQLConnect()La fonction SQLConnect() est utilisée pour établir une connexion avec les bases de données Oracle. La chaîne de connexion utilisée par la fonction SQLConnect() se présente comme suit :SQLConnect(IDConnexion,"< attribut> =< valeur>;

<attribut> =< valeur>; ...");

Guide de l'utilisateur du gestionnaire SQL Access

Page 10: Wonderware factory suite

10 Chapitre 2

Les attributs utilisés par Oracle sont décrits dans le tableau suivant :

Exemple

SQLConnect(IDConnexion,"Provider=MSDAORA; Data Source=OracleServer; User ID=SCOTT;

Password=TIGER;");

Enregistrement de la date et de l'heure dans un champ de date Oracle

Pour enregistrer la date et l'heure dans un champ de date Oracle, vous devez configurer la liste des liens à l'aide de la fonction delim.

Pour enregistrer la date et l'heure dans un champ de date Oracle

1. Dans l'Explorateur d'applications du Gestionnaire SQL Access, double-cliquez sur l'option Liste de liens. La boîte de dialogue Configuration de la liste des liens apparaît.

2. Dans le champ Variable.Champ, entrez le nom de la variable à utiliser.

3. Dans le champ Nom de la colonne, indiquez la fonction DATE_TIME delim().

Attribut ValeurProducteur MSDAORAID utilisateur Nom de l'utilisateurMot de passe Mot de passe.Source de données Nom du serveur Oracle

Guide de l'utilisateur du gestionnaire SQL Access

Page 11: Wonderware factory suite

Configuration et connexion des bases de données 11

4. Dans votre application InTouch, créez un QuickScript pour préparer les données à saisir à partir de la date et de l'heure actuelles. Par exemple :

DATE_TIME_TAG = "TO_DATE('" + $DateString + "" + StringMid($TimeString,1,8) + "','jj/mm/aa hh24:mi:ss')";

Astuce Date_Time_Tag apparaît sous la forme suivante dans l'environnement d'exploitation :

TO_DATE('22/08/97 23:32:18' , 'jj/mm/aa hh24:mi:ss')

Utilisation de Microsoft SQL ServerPour communiquer avec Microsoft SQL Server

1. Configurez le client de base de données Windows.

2. Pour vous connecter à Microsoft SQL Server, exécutez la fonction SQLConnect() dans un QuickScript InTouch.

Pour plus d'informations sur l'utilisation de la fonction SQLConnect(), reportez-vous au Chapitre 4, « Utilisation des fonctions SQL ».

Configuration du client

Syntaxe de la fonction SQLConnect()La fonction SQLConnect() sert à se connecter à une base de données Microsoft SQL Server. Elle vous permet d'accéder au serveur de base de données et d'ouvrir une connexion de manière à permettre l'exécution d'autres fonctions SQL. La chaîne de connexion utilisée par la fonction SQLConnect() se présente comme suit :

SQLConnect(IDConnexion,"< attribut> =< valeur>;<attribut> =< valeur>; ...");

Le tableau ci-dessous répertorie les attributs utilisés par Microsoft SQL Server :

ExempleSQLConnect(IDConnexion,"DSN=SQL_Data;UID=OPERATOR;PWD=XYZ

Attribut ValeurProducteur SQLOLEDBDSN Nom de la source de données tel qu'il apparaît dans

l'Administrateur ODBC MicrosoftUID ID de connexion, sensible à la casse.PWD Mot de passe, sensible à la casse.SRVR Nom du serveur sur lequel sont installées les tables

de base de données à utiliser.DB Nom de la base de données à ouvrir.

Guide de l'utilisateur du gestionnaire SQL Access

Page 12: Wonderware factory suite

12 Chapitre 2

Z");

Types de données pris en chargeLe module SQL Access Manager associe les quatre types de données InTouch (variable discrète, entier, réel et message) avec d'autres types dans les systèmes de bases de données. Le type de données Caractères (char) contient des chaînes de caractères de longueur fixe. Ce type de données est requis dans les variables InTouch de type Message. Vous devez indiquer une longueur de champ. Les bases de données Microsoft SQL Server prennent en charge des champs de 8000 caractères maximum. Toutefois, les variables InTouch de type Message sont limitées à 131 caractères. Si une variable de type message contient un nombre plus élevé de caractères, la chaîne sera tronquée au moment de son insertion dans la base de données.

Le type de données int représente les entiers InTouch. Sauf indication contraire, la longueur des champs est la valeur par défaut de la base de données. Si vous souhaitez indiquer une autre longueur, elle doit être conforme au format de longueur. Ce format détermine le nombre maximal de chiffres pour la colonne.

Le type de données float représente les nombres réels InTouch. La longueur des champs est déterminée par la base de données. Il n'est pas nécessaire d'indiquer une longueur de champ pour ce type de données.

Utilisation de Microsoft AccessPour communiquer avec Microsoft Access, vous devez vous y connecter en exécutant la fonction SQLConnect() dans un QuickScript InTouch.

Syntaxe de la fonction SQLConnect()La fonction SQLConnect() est utilisée pour la connexion aux bases de données Microsoft Access. Elle vous permet d'accéder au serveur de base de données et d'ouvrir une connexion de manière à permettre l'exécution d'autres fonctions SQL. La chaîne de connexion utilisée par SQLConnect() se présente comme suit :SQLConnect(IDConnexion,"< attribut> =< valeur>;

<attribut> =< valeur>; ...");

DSN est un attribut utilisé par Microsoft Access et correspond au nom de la source de données, tel qu'il apparaît dans le Gestionnaire ODBC de Microsoft.

ExempleSQLConnect(IDConnexion,"DSN=MSACC");

Guide de l'utilisateur du gestionnaire SQL Access

Page 13: Wonderware factory suite

Configuration et connexion des bases de données 13

Longueur de chaîneLes types de données pris en charge par le module SQL Access Manager dépendent de la version du pilote ODBC utilisé. Les données de type texte sont des chaînes de caractères de longueur fixe utilisées pour les variables InTouch de type Message. Vous devez préciser une longueur. Les bases de données Microsoft Access prennent en charge les champs de texte d'une longueur maximale de 255 caractères. Toutefois, les variables InTouch de type Message sont limitées à 131 caractères. Si une variable de ce type contient un nombre plus élevé de caractères, la chaîne sera tronquée au moment de son insertion dans la base de données. Le pilote ODBC pour Microsoft Access prend en chargejusqu'à 17 caractères par nom de colonne. Le nombre maximal de colonnes autorisé lors de l'utilisation de SQLSetStatement( Select Col1, Col2, ...) est de 40.

Guide de l'utilisateur du gestionnaire SQL Access

Page 14: Wonderware factory suite

14 Chapitre 2

Valeurs des types de données pour les bases de données prises en charge

Oracle

Microsoft SQL Server

Microsoft Access 2000

Type de données Longueur

Valeurs par défaut Plage

Type de variable

char 2000 caractères 1 caractère Messagenombre 38 chiffres 38 chiffres Entier

Type de données Longueur

Valeurs par défaut Plage

Type de variable

char 8000 caractères

Message

entier -2 147 483 647 à 2 147 483 647

Entier

float 15 chiffres entre -1.79E

+308 et 1.79E

+308

Réel

Type de données Longueur

Valeurs par défaut Plage

Type de variable

texte 255 caractères Messagenombre Entiernombre Réel

Guide de l'utilisateur du gestionnaire SQL Access

Page 15: Wonderware factory suite

Configuration du module SQL Access Manager 15

C H A P I T R E 3

Configuration du module SQL Access Manager

L'utilitaire SQL Access Manager crée des listes de liens et des modèles de tables. La liste de liens associe les colonnes de la base de données aux variables contenues dans le dictionnaire des variables InTouch. Le modèle de table définit la structure et le format d'une nouvelle table dans la base de données.

Sommaire� Présentation du module SQL Access Manager

� Configuration d�une liste de liens

� Configuration d�un modèle de table

� Fichier SQL.DEF

Présentation du module SQL Access ManagerLorsqu'une application InTouch exécute une commande SQLCreateTable(), l'argument Modèle de table définit la structure du nouveau fichier de base de données.

Guide de l'utilisateur du gestionnaire SQL Access

Page 16: Wonderware factory suite

16 Chapitre 3

Lors de l'exécution d'une commande SQLInsert(), SQLSelect() ou SQLUpdate(), l'argument Liste de liens définit les variables InTouch qui sont utilisées et les colonnes de la base à leur associer.

Configuration d�une liste de liensLa liste de liens associe les colonnes de la base de données et les variables du dictionnaire InTouch.

Pour créer une liste de liens

1. Dans le menu Spécial, pointez sur SQL Access Manager, puis cliquez sur Liste de liens, ou bien dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Liste de liens.

2. Cliquez sur Nouveau.

Guide de l'utilisateur du gestionnaire SQL Access

Page 17: Wonderware factory suite

Configuration du module SQL Access Manager 17

3. La boîte de dialogue Configuration de la liste des liens apparaît.

Astuce Si vous cliquez avec le bouton droit de la souris sur l'un des champs de saisie, un menu affiche les commandes pouvant être appliquées au texte sélectionné.

4. Dans la zone Nom de la liste, indiquez le nom de la liste de liens.

Astuce Le nom d'une liste de liens peut contenir jusqu'à 32 caractères. La nouvelle liste de liens associe les colonnes de la base de données aux variables InTouch. Par exemple, si vous créez une liste de recensement d'employés, vous allez indiquer ici le nom de la liste de liens associant les informations sur les employés.

Remarque Les fonctions SQLInsert(), SQLSelect(), et SQLUpdate() font appel aux paramètres de la liste de liens.

5. Dans la zone Variable.Champ , tapez un nom de variable.champ InTouch.

Astuce Le dictionnaire des variables associe cette zone variable.champ au Nom de la colonne dans la base de données. Si la variable n'est pas encore définie dans le dictionnaire des variables, double-cliquez dessus pour ouvrir la boîte de dialogue Dictionnaire de variables et la définir maintenant.

6. Cliquez sur Variable pour sélectionner une variable existante. L'Explorateur de variables s'ouvre.

Guide de l'utilisateur du gestionnaire SQL Access

Page 18: Wonderware factory suite

18 Chapitre 3

Astuce L'Explorateur de variables affiche les variables définies pour la source de variables courante. Pour sélectionner une variable, double-cliquez dessus ou sélectionnez-la puis cliquez sur OK. Pour sélectionner un .champ pour la variable, cliquez sur la flèche à côté de .Champ, sélectionnez le .champ souhaité dans la liste, puis cliquez sur OK.

Remarque Les variables de type E/S qui ne sont pas utilisées dans votre application mais qui sont spécifiées dans une liste de liens SQLAccess seront activées (à l'intention du serveur d'E/S) dès le démarrage de WindowViewer. Aucune connexion à une base de données n'est nécessaire pour observer ce comportement.

Pour plus d'informations sur l'Explorateur de variables, reportez-vous au Guide de l'utilisateur InTouch en ligne.

7. Cliquez sur Champ pour ajouter un .champ à la variable. La boîte de dialogue Sélection d'un nom de champ s'affiche.

8. Cliquez sur le .champ à utiliser. La boîte de dialogue est refermée et le .champ est automatiquement ajouté au nom de la variable dans la zone Variable.Champ.

Pour plus d'informations sur les .champs de variables, reportez-vous au chapitre 4 du Guide de l'utilisateur InTouch.

9. Dans la zone Nom de colonne , entrez le nom de la colonne.

Astuce Le nom d'une colonne peut contenir jusqu'à 30 caractères. Le nom de la colonne est directement associé au nom de la colonne dans la base de données. Si le nom de la colonne comporte un espace, placez-le entre crochets dans la liste de liens et lorsque vous l'utilisez dans un script. Par exemple :

WHERE EXPR= "[Jet de cuve} = " texte (variable,"#");

Astuce Des séparateurs spéciaux peuvent également être utilisés pour associer le nom de colonne à la base de données.

Pour plus d'informations sur les séparateurs spéciaux, reportez-vous à la section « Utilisation de séparateurs spéciaux ».

10. Cliquez sur Déplacer vers le haut pour faire remonter le nom de la variable sélectionnée d'un niveau dans la liste.

11. Cliquez sur Déplacer vers le bas pour faire descendre le nom de la variable sélectionnée d'un niveau dans la liste.

12. Cliquez sur Ajouter un élément pour ajouter votre combinaison Variable.Champ et Nom de colonne à la liste de liens.

13. Cliquez sur Supprimer un élément pour supprimer une combinaison Variable.Champ et Nom de colonne de la liste.

14. Cliquez sur Modifier un élément pour modifier une Variable.Champ ou un Nom de colonne de la liste.

15. Cliquez sur OK pour enregistrer la nouvelle configuration de la liste de liens et refermer la boîte de dialogue.

Guide de l'utilisateur du gestionnaire SQL Access

Page 19: Wonderware factory suite

Configuration du module SQL Access Manager 19

Astuce Vous pouvez cliquer sur Enregistrer pour enregistrer les paramètres sans refermer la boîte de dialogue.

Pour modifier une liste de liens

1. Dans le menu Spécial, pointez sur SQL Access Manager, puis cliquez sur Liste de liens, ou bien dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Liste de liens.

2. La boîte de dialogue Sélection d'une liste de liens s'affiche.

3. Sélectionnez le nom de la liste de liens à modifier, puis cliquez sur Modifier. La boîte de dialogue Configuration de la liste des liens apparaît.

4. Modifiez les éléments souhaités.

5. Cliquez sur OK pour enregistrer les modifications et refermer la boîte de dialogue.

Pour plus d'informations sur la configuration d'une liste de liens, reportez-vous à la section « Pour créer une liste de liens ».

Pour supprimer une liste de liens

1. Dans le menu Spécial, pointez sur SQL Access Manager, puis cliquez sur Liste de liens, ou bien dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Liste de liens.

2. La boîte de dialogue Sélection d'une liste de liens s'affiche.

3. Sélectionnez le nom de la liste de liens à supprimer.

4. Cliquez sur Supprimer. Un message vous invite à confirmer la suppression. Cliquez sur Oui pour supprimer le modèle sélectionné ou sur Non pour annuler la suppression. La boîte de dialogue Configuration de la liste des liens réapparaît.

5. Cliquez sur OK pour fermer la boîte de dialogue.

Guide de l'utilisateur du gestionnaire SQL Access

Page 20: Wonderware factory suite

20 Chapitre 3

Utilisation de séparateurs spéciauxLes fonctions SQLInsert() et SQLUpdate() utilisent un format par défaut qui place les chaînes de message entre apostrophes. Certaines bases de données SQL attendent des chaînes encadrées par un autre type de séparateur. Ainsi, Oracle attend de recevoir les chaînes de date entre crochets. Dans ce cas, vous devez utiliser la fonction Delim() de la manière suivante :

Dans le champ Nom de la colonne de la boîte de dialogue Configuration de la liste des liens , après le nom de colonne, tapez le mot-clé « delim » (pas de différenciation majuscules/minuscules). Ce mot-clé « delim » doit être suivi :

� d'une parenthèse gauche ;

� du séparateur de gauche ;

� d'une virgule ;

� du séparateur de droite ;

� d'une parenthèse droite.

Exemple : datestring delim (',')

Pour utiliser le même séparateur à gauche et à droite, il suffit de l'indiquer entre parenthèses, sans virgule.

Exemple : datestring delim (' ')

L'exemple suivant utilise des séparateurs de gauche et de droite différents. Remarquez la position de la fonction date delim (',') dans le champ Nom de la colonne .

Pour plus d'informations sur l'enregistrement de la date et de l'heure dans un champ de date Oracle, reportez-vous au Chapitre 2, « Configuration et connexion des bases de données » .

Guide de l'utilisateur du gestionnaire SQL Access

Page 21: Wonderware factory suite

Configuration du module SQL Access Manager 21

Configuration d�un modèle de tableCette commande crée un modèle de table définissant la structure et le format d'une nouvelle table dans la base de données.

Pour créer un modèle de table

1. Dans le menu Spécial, pointez sur SQL Access Manager, puis cliquez sur Modèle de table, ou dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Modèle de table.

2. Cliquez sur Nouveau.

3. La boîte de dialogue Configuration du modèle de table s'affiche.

Astuce Si vous cliquez avec le bouton droit de la souris sur l'un des champs de saisie, un menu affiche les commandes pouvant être appliquées au texte sélectionné.

4. Dans le champ Nom du modèle, tapez le nom du modèle de table.

Guide de l'utilisateur du gestionnaire SQL Access

Page 22: Wonderware factory suite

22 Chapitre 3

Remarque Le nom d'un modèle de table peut contenir jusqu'à 32 caractères. Si vous créez un index, unique ou non, le nom du modèle de table est dans ce cas limité à 24 caractères. Le nom du modèle de table permet d'identifier la structure d'une base de données pour la fonction SQLCreateTable().

5. Dans le champNom de la colonne, tapez le nom de la colonne pour le modèle de table. Le nom d'une colonne peut contenir jusqu'à 30 caractères.

6. Dans le champ Type de colonne, indiquez le type de données pour la colonne. Les différents choix de types de données varient selon la base de données utilisée.

Pour plus d�informations sur les types de données de bases de données spécifiques, reportez-vous au Chapitre 2, « Configuration et connexion des bases de données ».

7. Sélectionnez le type d'index, comme suit :

UniqueChaque valeur de la colonne doit être unique.

Non uniqueLes valeurs de la colonne ne doivent pas forcément être uniques.

AucunePas d'index.

AstuceLorsque vous exécutez une fonction SQLCreateTable(), un fichier d'index est automatiquement créé.

8. Sélectionnez l'option Autoriser les entrées nulles (NULL) pour permettre la saisie de données nulles dans cette colonne.

Remarque InTouch n'accepte pas les données nulles.

Si une valeur n�a pas été entrée pour une variable donnée lorsque vous insérez des données, les valeurs seront :

Lors de la sélection de données, les valeurs nulles seront converties selon le type de données indiqué ci-dessus.

9. Cliquez sur Ajouter un élément pour ajouter votre combinaison Nom de colonne, Type de colonne, Longueur et Type d'index au modèle de table.

10. Cliquez sur Supprimer un élément pour supprimer une combinaison Nom de colonne, Type de colonne, Longueur et Type d'index de la liste de modèles de table.

11. Cliquez sur Modifier un élément pour modifier un Nom de colonne, Type de colonne, Longueur ou Type d'index dans le modèle de table.

Type de données ValeurDiscret 0Entier 0Message Chaînes sans caractères

Guide de l'utilisateur du gestionnaire SQL Access

Page 23: Wonderware factory suite

Configuration du module SQL Access Manager 23

12. Cliquez sur OK pour enregistrer la nouvelle configuration de modèle de table et refermer la boîte de dialogue.

Astuce Vous pouvez cliquer sur Enregistrer pour enregistrer les paramètres sans refermer la boîte de dialogue.

Pour modifier un modèle de table

1. Dans le menu Spécial, pointez sur SQL Access Manager, puis cliquez sur Modèle de table, ou dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Modèle de table.

2. La boîte de dialogue Sélection d'un modèle de table s'affiche.

3. Sélectionnez le nom du modèle de table à modifier, puis cliquez sur Modifier. La boîte de dialogue Configuration du modèle de table s'affiche.

4. Modifiez les éléments souhaités.

5. Cliquez sur OK pour enregistrer les modifications et refermer la boîte de dialogue.

Pour plus d'informations sur la configuration d'un modèle de table, reportez-vous à la section « Pour créer un modèle de table ».

Pour supprimer un modèle de table

1. Dans le menu Spécial, pointez sur SQL Access Manager, puis cliquez sur Modèle de table, ou dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Modèle de table.

2. La boîte de dialogue Sélection d'un modèle de table s'affiche.

3. Sélectionnez le nom du modèle de table à supprimer.

4. Cliquez sur Supprimer. Un message vous invite à confirmer la suppression. Cliquez sur Oui pour supprimer le modèle sélectionné ou sur Non pour annuler la suppression. La boîte de dialogue Configuration du modèle de table réapparaît.

5. Cliquez sur OK pour fermer la boîte de dialogue.

Guide de l'utilisateur du gestionnaire SQL Access

Page 24: Wonderware factory suite

24 Chapitre 3

Fichier SQL.DEFLe module SQL Access Manager enregistre les informations de configuration des listes de liens et modèles de tables dans un fichier intitulé «SQL.DEF». Il s'agit d'un fichier de variables séparées par des virgules (.CSV). Il est possible de le consulter ou de le modifier à l'aide du module SQL Access Manager ou de n'importe quel éditeur de texte tel que le Bloc-Notes. Les données apparaissent dans le fichier de la manière suivante :

:BindListName;NomListeLiens

Variable1.Champ;NomColonne1

Variable2.Champ;NomColonne2

Variable3.Champ;NomColonne3

:TableTemplateName,NomModèleTable

NomColonne1;TypeColonne;[LongueurColonne];Null;Index

NomColonne2;TypeColonne;[LongueurColonne];Null;Index

NomColonne3;TypeColonne;[LongueurColonne];Null;Index

Guide de l'utilisateur du gestionnaire SQL Access

Page 25: Wonderware factory suite

Utilisation des fonctions SQL 25

C H A P I T R E 4

Utilisation des fonctions SQL

InTouch fait appel aux fonctions SQL pour modifier les informations de la base de données. Elles constituent une extension des fonctions QuickScript standard d'InTouch et peuvent être utilisées dans tous les scripts. Elles vous permettent de sélectionner, de modifier, d'insérer ou de supprimer des enregistrements dans les tables que vous décidez d'ouvrir.

Sommaire� Fonctions SQL

� Paramètres SQL

� Utilisation de fonctions SQL dans des QuickScripts InTouch\

Fonctions SQLCette section répertorie toutes les fonctions SQL. Notez que les actions SQL sont synchrones. InTouch ne reprend le contrôle que lorsque les opérations SQL sont terminées (les courbes, scrutations et autres opérations InTouch sont entre-temps suspendues).

Toutes les fonctions SQL (à l'exception de SQLNumRows()) renvoient un CodeResultat. Si le CodeResultat est différent de zéro, la fonction échoue et d'autres opérations doivent être effectuées. Le CodeResultat peut être utilisé par la fonction SQLErrorMsg().

La syntaxe classique des fonctions SQL est la suivante :FonctionSQL(Paramètre1, Paramètre2, ...)

Pour obtenir davantage d'informations sur chaque fonction SQL ou des exemples d'utilisation, reportez-vous au Manuel de référence InTouch.

Fonction

SQLAppendStatement (IDConnexion, InstructionSQL)Ajoute l'instruction « InstructionSQL » à l'instruction SQL par défaut pour IDConnexion.

Guide de l'utilisateur du gestionnaire SQL Access

Page 26: Wonderware factory suite

26 Chapitre 4

SQLClearParam (IDInstruction, NumParametre)Initialise le paramètre NumParametre associée à IDInstruction, à la valeur zéro, ou à une chaîne de longueur nulle, selon le type numérique ou chaîne du paramètre.

SQLClearStatement (IDConnexion, IDInstruction)Libère les ressources associées à IDInstruction. Toutefois, l'instruction par défaut associée à IDConnexion reste inchangée.

SQLClearTable (IDConnexion, NomTable)Supprime toutes les lignes dans la table appelée NomTable.

SQLCommit (IDConnexion)Valide la transaction créée par la dernière instruction SQLTransact.

SQLConnect (IDConnexion, ChaineConnexion)Le paramètre ChaineConnexion correspond à l'objet ConnectionString tel qu'il est décrit dans la plupart des documentations consacrées à ADO (L'ouvrage « Référence de l'API ADO » de Microsoft étant sans doute le plus complet). Il s'agit d'un paramètre qu'il peut s'avérer nécessaire de modifier dans une application InTouch en vue d'améliorer les performances d'un fournisseur OLE DB original dans le cas concret d'un système de bases de données.

Une présentation courante du paramètre ChaineConnexion consiste en différents composants séparés par des points-virgules. Le premier composant est normalement spécifié sous la forme Provider=NomProducteur, où NomProducteur correspond au fournisseur OLE DB du système de base de données utilisé. Les fonctions SQLConnect existantes dans les applications InTouch ne disposant pas du mot-clé Provider dans le paramètre ChaineConnexion, ADO utilise par conséquent le fournisseur Microsoft OLE DB par défaut pour ODBC, c'est à dire MSDASQL.DLL. Les anciennes applications InTouch continueront de fonctionner, mais il est fortement recommandé de modifier le paramètre ChaineConnexion afin d'utiliser le fournisseur OLE DB d'origine. Exemples de ChaineConnexion :

Exemple 1

Fournisseur Microsoft OLE DB pour Microsoft Jet (utilisation recommandée)

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\DBName.mdb;User ID=UserIDStr;Password=PasswordStr;"

Microsoft.Jet.OLEDB.4.0 est le fournisseur OLE DB natif utilisé par Microsoft Jet (le moteur de la base de données Microsoft Access).

Exemple 2

Fournisseur Microsoft OLE DB pour ODBC (utilisant le fournisseur MSDASQL par défaut pour MS Access):

"Provider=MSDASQL;DSN=DSNStr;UID=UserName;PWD=PasswordStr;"

Guide de l'utilisateur du gestionnaire SQL Access

Page 27: Wonderware factory suite

Utilisation des fonctions SQL 27

Remarque User ID et uid peuvent être utilisés indifféremment, tout comme Password et pwd. Cependant, comme indiqué précédemment, il est recommandé de faire appel à Microsoft.Jet.OLEDB.4.0 dans le paramètre ChaineConnexion.

Exemple 3

Fournisseur Microsoft OLE DB pour SQL Server (utilisation recommandée)

"provider=sqloledb;Data Source=MyServer;Initial Catalog=MyDB;User Id=sa;Password=;"

Fournisseur OLE DB du serveur SQL sqloledb.

Exemple 4

Fournisseur Microsoft OLE DB pour SQL Server (utilisation recommandée)

"Provider=SQLOLEDB;uid=sa;pwd=;Database=MyDB"

Exemple 5

Fournisseur Microsoft OLE DB pour ODBC (utilisant le fournisseur MSDASQL par défaut pour SQL Server):

"DSN=Pubs;UID=sa;PWD=;"

Exemple 6

Fournisseur Microsoft OLE DB pour ODBC (utilisant le fournisseur MSDASQL par défaut pour SQL Server):

"Data Source=Pubs;User ID=sa;" "Password=;"

Remarque Il est possible de changer Data Source par Server, et de même pour Initial Catalog et Database.

Exemple 7

Fournisseur Microsoft OLE DB pour Oracle (utilisation recommandée)

"Provider=MSDAORA;Data Source=ServerName;User ID=UserIDStr; Password=PasswordStr;"

Si l'initialisation SQLTrace=1 figure sous la section [InTouch] du fichier win.ini, la fonction SQLConnect enregistrera dans Wonderware Logger les informations de version de ADO, du fournisseur et du système de base de données à chaque exécution réussie.

SQLCreateTable (IDConnexion, NomTable, NomModele)Crée une table appelée NomTable, utilisant NomModele.

SQLDelete (IDConnexion, NomTable, ExprWhere)Supprime les lignes vérifiant la clause ExprWhere dans la table NomTable.

Guide de l'utilisateur du gestionnaire SQL Access

Page 28: Wonderware factory suite

28 Chapitre 4

SQLDisconnect (IDConnexion)Déconnexion de la base de données, avec libération des ressources créées par SQLPrepareStatement et SQLInsertPrepare qui ne l'ont pas encore été (par exemple, par les fonctions SQLClearStatement ou SQLInsertEnd).

SQLDropTable (IDConnexion, NomTable)Supprime la table appelée NomTable dans la base de données.

SQLEnd (IDConnexion)Libération des ressources liées à la table logique associée à IDConnexion.

SQLErrorMsg (CodeResultat)Renvoie un CodeResultat avec la valeur -1 en cas d'erreur émise par le fournisseur de la base de données. Le CodeResultat renvoyé est toujours -1, mais le message exact du fournisseur est renvoyé tel quel.

Pour consulter la liste des codes d'erreur et une description des messages d'erreur, reportez-vous au Chapitre 5, « Dépannage ».

SQLExecute (IDConnexion, ListeLiens, IDInstruction)Exécute l'instruction associée à IDInstruction (requête de MS Access, procédure stockée de MS SQL Server ou une instruction de texte SQL). Le paramètre ListeLiens peut être une chaîne de longueur nulle. Lorsque IDInstruction est associé à une requête renvoyant une ligne, le résultat de SQLExecute sert à mettre à jour la table logique. Lorsque la liste de liens spécifiée existe, le résultat est associé au paramètre ListeLiens. Une liste de liens de longueur zéro est utile dans les cas connus d'avance, où le paramètre IDInstruction n'est pas associé à une requête de ligne.

SQLFirst (IDConnexion)Se place sur la première ligne de la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLGetRecord (IDConnexion, NumeroEnreg)Se place sur le numéro de ligne NumeroEnreg dans la la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLInsert(IDConnexion, NomTable, ListeLiens)Insère une ligne dans la table NomTable à partir des valeurs actuelles des variables InTouch.

Guide de l'utilisateur du gestionnaire SQL Access

Page 29: Wonderware factory suite

Utilisation des fonctions SQL 29

SQLInsertEnd(IDConnexion, IDInstruction)Libère les ressources associées à IDInstruction qui ont été créées par SQLInsertPrepare.

SQLInsertExecute(IDConnexion, ListeLiens, IDInstruction)Insère une ligne, à partir des valeurs actuelles des variables InTouch, dans la table identifiée par la fonction SQLInsertPrepare précédente. Dans le cas d'une table MS SQL Server, si le paramètre ListeLiens compte un champ clé d'identité, il faut définir l'option IDENTITY_INSERT avant de lancer l'exécution de SQLInsertExecute.

Exemple

Insertion d'une ligne en incluant une clé d'identité dans la liste des liens :

CodeResultat = SQLSetStatement(IDConnexion, "SET IDENTITY_INSERT Produits ON");

CodeResultat = SQLExecute(IDConnexion, "", 0);

CodeResultat = SQLInsertPrepare(IDConnexion, NomTable, ListeLiens, IDInstruction);

CodeResultat = SQLInsertExecute(IDConnexion, ListeLiens, IDInstruction);

CodeResultat = SQLInsertEnd(IDConnexion, IDInstruction);

SQLInsertPrepare(IDConnexion, NomTable, ListeLiens, IDInstruction)Renvoie une IDInstruction utilisable avec les fonctions SQLInsertExecute et SQLInsertEnd.

SQLLast(IDConnexion)Se déplace à la dernière ligne de la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLLoadStatement(IDConnexion, NomFichier)Lit l'instruction contenue dans le fichier NomFichier dans l'instruction par défaut correspondant à IDConnexion.

SQLManageDSN(IDConnexion)Le paramètre IDConnexion n'est pas utilisé. Il est conservé pour des raisons de compatibilité avec des versions plus anciennes de SQL Access. Il est donc possible de passer à la fonction n'importe quel nombre. Il n'est pas nécessaire d'établir une connexion à une base de données avant d'appeler cette fonction.

ExempleSQLManageDSN( 0 )

Guide de l'utilisateur du gestionnaire SQL Access

Page 30: Wonderware factory suite

30 Chapitre 4

SQLNext(IDConnexion)Se déplace à la ligne suivante de la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLNumRows(IDConnexion)Renvoie le nombre de lignes de la table logique. Dans la mesure où un code d'erreur peut-être renvoyé par cette fonction, son utilisation recommandée est la suivante :DIM TEMP AS INTEGER;

TEMP = SQLNumRows(IDConnexion);

IF (TEMP >= 0) THENNombreCols= TEMP;

ELSECodeResultat = TEMP;

ENDIF;

Définition

Une instruction par défaut est une instruction associée à un ID de connexion. Il peut s'agir d'une instruction de texte SQL (SELECT, INSERT, DELETE ou UPDATE), le nom d'une requête dans MS Access (avec ou sans paramètres) ou le nom d'une procédure stockée de MS SQL Server (avec ou sans paramètres). L'instruction par défaut est modifiée par les fonctions SQLLoadStatement, SQLSetStatement et SQLAppendStatement. Elle est utilisée par la fonction SQLExecute lorsque le paramètre IDInstruction = 0 est défini.

SQLPrepareStatement(IDConnexion, IDInstruction)Prépare l'instruction par défaut et renvoie un IDInstruction (1, 2, 3 et ainsi de suite). Cette préparation est utile pour les instructions dont les paramètres doivent être définis à l'aide des fonctions SQLSetParam{Type}. SQLHandle apparaît comme deuxième paramètre de cette fonction dans des versions précédentes de SQL Access. La version actuelle a cependant rebaptisé SQLHandle à IDInstruction pour toutes les fonctions. Le comportement de la fonction reste le même.

SQLPrev(IDConnexion)Se déplace à la ligne précédente de la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLRollback(IDConnexion)Annule la transaction créée par la dernière instruction SQLTransact.

Guide de l'utilisateur du gestionnaire SQL Access

Page 31: Wonderware factory suite

Utilisation des fonctions SQL 31

SQLSelect(IDConnexion, NomTable, ListeLiens, ExprWhere, ExprOrderBy)Demande à la base de données d'extraire des informations d'une table. Lors de l'exécution de la fonction SQLSelect() une table de résultats provisoire est créée en mémoire : elle contient des enregistrements que vous pouvez parcourir à l'aide des commandes SQLFirst(), SQLLast(), SQLNext(), SQLNumRows et SQLPrev().

Exécute l'instruction :SELECT FROM NomTable WHERE ExprWhere ORDER BY ExprOrderBy

En cas d'exécution réussie de l'instruction, un jeu d'enregistrements temporaires (désigné comme une table logique) est alors créé. Le paramètre ListeLiens est alors utilisé pour associer des variables InTouch aux colonnes de cette table logique, afin de préparer l'appel des fonctions SQLFirst, SQLPrev, SQLNext, SQLLast et SQLNumRows. La table logique reste valide, même en l'absence de lignes. C'est le cas, par exemple, si le résultat de ExprWhere est Faux pour tous les enregistrements.

SQLSetParamChar(IDInstruction, NumParametre, Valeur, Longueur)Initialise le paramètre NumParametre associé à IDInstruction à une valeur de type chaîne de caractères (la chaîne pouvant compter un seul caractère). Le dernier paramètre de la fonction spécifie la longueur maximum du paramètre. Si la longueur de la chaîne Valeur est supérieure à la longueur spécifiée, la chaîne Valeur est tronquée à la longueur spécifiée. Si la longueur spécifiée est 0, toute la longueur de Valeur est utilisée.

SQLSetParamDate(IDInstruction, NumParametre, Valeur)Initialise le paramètre NumParametre associé à IDInstruction à une valeur de type date. L'heure considérée est 12:00:00 AM (c'est à dire, le début de la date indiquée).

SQLSetParamDateTime(IDInstruction, NumParametre, Valeur, Precision)Initialise le paramètre NumParametre, associé à IDInstruction, à une valeur de type date/heure.

Guide de l'utilisateur du gestionnaire SQL Access

Page 32: Wonderware factory suite

32 Chapitre 4

SQLSetParamDecimal(IDInstruction, NumParametre, Valeur, Precision, DegrePrecision)Initialise le paramètre NumParametre, associé à IDInstruction, à une valeur de type décimal. Valeur est soit une chaîne (ou une variable InTouch de type message) représentant un nombre décimal (123.456) soit une valeur numérique (ou une variable InTouch de type mémoire réel). Pour s'assurer de la précision du paramètre, il est préférable d'utiliser une variable de type message, au lieu d'une variable de type réel. La fonction s'exécutera correctement si le paramètre Valeur doit cependant être un nombre en virgule flottante (une valeur de type réel renvoyée par un serveur d'E/S, par exemple). Mais dans ce cas, les limites inhérentes à la représentation des nombres en virgule flottante ne permettent plus de garantir une précision élevée. Precision est le nombre total de chiffres de la valeur et DegrePrecision celui à droite de la virgule décimale.

SQLSetParamFloat(IDInstruction, NumParametre, Valeur)Initialise le paramètre NumParametre, associé à IDInstruction à un nombre signé en virgule flottante de 64 bit.

SQLSetParamInt(IDInstruction, NumParametre, Valeur)Initialise le paramètre NumParametre, associé à IDInstruction à un nombre entier signé de 16 bits.

SQLSetParamLong(IDInstruction, NumParametre, Valeur)Initialise le paramètre NumParametre, associé à IDInstruction à un nombre entier signé de 32 bits.

SQLSetParamNull(IDInstruction, NumParametre, Type, Precision, DegrePrecision)Initialise le paramètre NumParametre, associé à IDInstruction, à NULL.

Le paramètre Type peut avoir la valeur suivante :

0: chaîne

1: date/heure

2: entier

3: float

4: décimal

Guide de l'utilisateur du gestionnaire SQL Access

Page 33: Wonderware factory suite

Utilisation des fonctions SQL 33

Dans MS SQL Server, la comparaison avec une valeur NULL est contrôlée par l'option ANSI_NULLS. Le moment auquel l'option s'applique dépend du système de base de données. Dans SQL Server 7.0, l'option est appliquée lors de la création de l'objet (non au moment où la requête est exécutée). Lorsqu'une procédure stockée est créée SQL Server 7.0, cette option prend la valeur ON par défaut, de sorte qu'une clause comme « WHERE CeChamp = NULL » renvoie toujours NULL (FAUX). Une instruction SELECT utilisant cette clause ne renverra donc aucune ligne. Pour faire en sorte qu'une comparaison = ou <> renvoie une valeur VRAI ou FAUX, il faut définir l'option à OFF au moment de la création de la procédure stockée. La fonction SQLSetParamNull ne s'exécutera pas comme attendu si l'option ANSI_NULLS ne prend pas la valeur OFF. Si c'est le cas, une comparaison sur la valeur NULL devrait faire appel à la syntaxe « WHERE CeChamp IS NULL » ou encore « WHERE CeChamp IS NOT NULL ».

Exemple

Utilisation de SQLSetParamNull pour renvoyer toutes les lignes de la table Produits où le NomProduit n'a pas la valeur NULL.

Prenons le cas d'une procédure stockée créée dans SQL Server à l'aide du texte suivant.

SET ANSI_NULLS OFF

GO

CREATE PROCEDURE ps_TestNonNull @ParamProduit varchar(255)

AS SELECT * FROM Produits WHERE NomProduit <> @ParamProduit

GO

SET ANSI_NULLS ON

GO

InTouch peut exécuter les scripts SQL Access suivants.CodeResultat = SQLSetStatement(IDConnexion,

"ps_TestNonNull");

CodeResultat = SQLPrepareStatement(IDConnexion, IDInstruction);

CodeResultat = SQLSetParamNull(IDInstruction, 1, 0, 0, 0);

CodeResultat = SQLExecute(IDConnexion, ListeLiens, IDInstruction);

CodeResultat = SQLFirst(IDConnexion);

CodeResultat = SQLClearStatement(IDConnexion, IDInstruction);

SQLSetParamTime(IDInstruction, NumParametre, Valeur)Initialise le paramètre NumParametre, associé à IDInstruction, à une valeur de type heure. La date courante du système est utilisée avec l'heure spécifiée.

Guide de l'utilisateur du gestionnaire SQL Access

Page 34: Wonderware factory suite

34 Chapitre 4

SQLSetStatement(IDConnexion, InstructionSQL)Définit l'instruction SQLStatement dans l'instruction SQL par défaut pour IDConnexion.

SQLTransact(IDConnexion)Démarrage d�une transaction de base de données. Si le fournisseur OLE DB sous-jacent du système de base de données l'admet, il est possible d'imbriquer les transactions. Un fournisseur OLE DB natif pour Microsoft Jet, par exemple, peut prendre en charge jusqu'à 5 niveaux de transactions, y compris la première et la dernière transaction.

SQLUpdate(IDConnexion, NomTable, ListeLiens, ExprWhere)Utilise les valeurs courantes des variables InTouch pour mettre à jour toutes les lignes de la table NomTable qui vérifient la clause ExprWhere.

SQLUpdateCurrent(IDConnexion)Met à jour la ligne courante de la table logique à l'aide des variables InTouch associées aux champs de la table via la liste de liens spécifiée dans SQLSelect ou SQLExecute. Les lignes identiques à la ligne courante sont toutes mises à jour. Il peut arriver que la fonction renvoie une erreur après un certain nombre de lignes identiques, si leur nombre est trop élevé pour pouvoir les mettre à jour dans SQL Access. La traduction du message d'erreur peut ressembler à ceci : "Microsoft Cursor Engine: Information sur la colonne d'index insuffisante ou incorrecte. La mise à jour s'applique à un trop grand nombre de lignes". Un maximum de 54 lignes identiques est modifiable en une seule fois.

Créez un champ clé dans la table, pour éviter que les lignes ne figurent comme identiques. Il est fortement recommandé que toutes les tables utilisées par SQL Access disposent d'une clé unique. Pour une table ne disposant pas de clé, il est recommandé de faire appel à un champ de type NuméroAuto (sous MS Access) ou un champ de type entier utilisé comme clé d'identité de la ligne (sous SQL Server) pour définir une clé primaire et faire en sorte que la fonction SQLUpdateCurrent ne s'applique qu'à une seule ligne. Il n'est pas nécessaire d'inclure ce champ de clé primaire dans la liste des liens.

Paramètres SQLLa section suivante décrit les paramètres requis pour chaque fonction SQL. Lorsque vous indiquez dans un script un paramètre en le balisant avec des guillemets anglais (par exemple "Paramètre1"), le script utilise la chaîne exacte. Si vous n'utilisez pas de guillemets, Paramètre1 est considéré comme une variable et le système recherche alors la valeur qui lui est affectée dans le dictionnaire de variables InTouch.

Exemple"c:\main\file" vs. Location

où : location est une variable InTouch de type Message

Guide de l'utilisateur du gestionnaire SQL Access

Page 35: Wonderware factory suite

Utilisation des fonctions SQL 35

"c:\main\file" est une chaîne littérale.

La plupart des fonctions SQL utilisent un ou plusieurs des paramètres suivants :

ListeLiensCorrespond à l'un des noms de liste de liens du fichier SQL.DEF.

IDConnexionEntier créé par l'utilisateur et stocké en mémoire, représentant le numéro d'identification (ID) affecté par la fonction SQLConnect à chaque connexion à la base de données.

ChaineConnexionChaîne permettant d'identifier la base de données et toute autre information de connexion utilisée dans la fonction SQLConnect().

MsgErreurVariable de type Message contenant une description du message d'erreur.

Pour de plus amples informations sur les messages d'erreur, reportez-vous au Chapitre 5, « Dépannage ».

NomFichierNom du fichier contenant les informations

LongMaxTaille maximale de la colonne à laquelle ce paramètre est associé. Ceci détermine si le paramètre est de type Caractère variable ou Caractère variable long. Si LongMax est inférieur ou égal à la longueur maximum de chaîne autorisée dans la base de données, le paramètre est de type Caractère variable. S'il est supérieur, il est de type Caractère variable long.

Guide de l'utilisateur du gestionnaire SQL Access

Page 36: Wonderware factory suite

36 Chapitre 4

Expression OrderByDéfinit les colonnes et le sens du tri. Seuls les noms de colonne peuvent être utilisés pour le tri. Cette expression doit être formatée :

NomColonne [ASC|DESC]

Pour trier la table sélectionnée en fonction d'une colonne spécifique (par exemple celle relative aux cadres), en ordre croissant, utilisez le format suivant :

"cadre ASC"

Pour trier la table en fonction de plusieurs colonnes, vous devez entrer l'expression ci-dessous :

NomColonne [ASC|DESC],NomColonne [ASC|DESC]

Pour trier une table sélectionnée en fonction d'une première colonne (par exemple celle relative à la température) en ordre croissant et d'une deuxième colonne (par exemple celle relative à l'heure) en ordre décroissant, la syntaxe doit être la suivante :

"température ASC, heure DESC"

NumParametreNuméro effectif du paramètre dans l'instruction

TypeParametreType de données du paramètre indiqué. Valeurs valides :

Type DescriptionChar Chaîne de longueur fixe remplie de

blancsVar Char Chaîne de longueur variableDécimal Nombre BCDEntier Entier signé sur 4 octetsEntier court Entier signé sur 2 octetsFloat Virgule flottante sur 4 octetsDouble Precision Float Virgule flottante sur 8 octetsDateTime Valeur d'heure/date sur 8 octetsDate Valeur d'heure/date sur 4 octetsTime Valeur d'heure/date sur 4 octetsAucun Type Aucun type de données

Guide de l'utilisateur du gestionnaire SQL Access

Page 37: Wonderware factory suite

Utilisation des fonctions SQL 37

ValeurParametreValeur effective à définir

PrecisionPrécision de la valeur décimale, taille maximale du caractère ou longueur en octets de la valeur de date/d'heure.

NumeroEnreg.Numéro de l'enregistrement à extraire

CodeResultatVariable de type entier renvoyée par la plupart des fonctions SQL. CodeResultat est renvoyé avec la valeur zéro (0) si la fonction aboutit, et un entier négatif dans le cas contraire.

Pour de plus amples informations, reportez-vous au Chapitre 5, « Dépannage ».

DegrePrecisionPrécision de la valeur décimale. Cette valeur n'est nécessaire qu'avec un paramètre défini sur zéro.

IDInstructionLorsque vous utilisez les instructions de fonctionnalités avancées, SQL renvoie un IDInstruction, dont il se sert en interne.

InstructionSQLInstruction réelle, par exemple :ResultatCode=SQLSetStatement(IDConnexion,”Select NoLot,

NomLot from InfoLot”);

NomTableNom de la table de base de données à laquelle vous souhaitez accéder.

NomModeleNom de la définition de modèle à utiliser.

ExpressionWhereDéfinit une condition de type vrai ou faux pour chaque ligne de la table. Cette commande n'extrait que les lignes de la table pour lesquelles la condition est vraie. L'expression doit avoir le format suivant :NomColonne opérateur_comparaison expression

Guide de l'utilisateur du gestionnaire SQL Access

Page 38: Wonderware factory suite

38 Chapitre 4

Remarque Si la colonne est de type caractère, l'expression doit être entrée entre apostrophes.

L�exemple suivant sélectionnera toutes les lignes dont les noms de colonne contiennent la valeur IDEmploye: nom = 'IDEmploye'

L'exemple suivant sélectionne toutes les lignes contenant des références de 100 à 199 :reference>=100 and reference<200

L'exemple suivant sélectionne toutes les lignes dont la colonne Température contient une valeur supérieure à 350 :

temperature>350

Utilisation de fonctions SQL dans des QuickScripts InTouch

Pour insérer automatiquement des fonctions SQL dans des QuickScripts InTouch, cliquez sur le bouton Additionnelles dans la boîte de dialogue de l'éditeur de QuickScripts. La fonction SQL choisie est automatiquement insérée dans le script à l'emplacement actuel du curseur.

Pour de plus amples informations sur les QuickScripts InTouch, reportez-vous au chapitre 6, intitulé « Création de QuickScripts dans InTouch », du Guide de l'utilisateur InTouch.

Définition de requêtes complexesLe Gestionnaire SQL Access vous permet de définir des requêtes et des instructions SQL complexes personnelles. Ces requêtes peuvent être élaborées de manière dynamique ou être incluses dans des fichiers externes. En outre, elles peuvent contenir des paramètres à « transmettre » à la requête lors de l'exécution. Ces requêtes doivent alors être exécutées, renvoyant éventuellement des ensembles de résultats. L'API (Application Programming Interface � Interface de programme d'application) du Gestionnaire SQL Access vous permet d'exécuter toute instruction SQL pouvant être traitée par votre base de données et d'extraire le résultat de cette requête. Vous pouvez également exécuter les procédures stockées sous forme de produit complémentaire. (Ces procédures ne sont pas complètement prises en charge.)

Pour plus d'informations sur les procédures stockées, reportez-vous à la section « Prise en charge des procédures stockées ».

Guide de l'utilisateur du gestionnaire SQL Access

Page 39: Wonderware factory suite

Utilisation des fonctions SQL 39

Élaboration dynamique de requêtesPour élaborer des requêtes de manière dynamique, deux fonctions supplémentaires sont nécessaires : SQLSetStatement() et SQLAppendStatement(). SQLSetStatement() démarre une nouvelle instruction SQL. Il peut s'agir de n'importe quelle instruction SQL valide, y compris le nom d'une procédure stockée. Étant donné qu'InTouch ne prend en charge que les chaînes comportant moins de 131 caractères, une fonction, dénommée, SQLAppendStatement() vous est fournie afin de permettre la concaténation de chaînes supplémentaires dans une instruction.

Remarque Le texte en gras fait référence aux commandes du langage de requête SQL.

ExempleCodeResultat = SQLSetStatement ( IDConnexion, "Select

NoLot, NomLot, DescriptionLot, QuantitéLot from InfoLot, InfoProduction" );

CodeResultat = SQLAppendStatement (IDConnexion, " where InfoLot.NoLot = InfoProduction.NoLot" );

CodeResultat = SQLAppendStatement (IDConnexion, " order by NoLot,NomLot,QuantitéLot" );

L'instruction peut maintenant être exécutée.

Remarque Pour de nombreux noms de colonne et de table, veillez à bien respecter les majuscules et les minuscules. Pour que le script ci-dessus fonctionne correctement, vous devez saisir ces noms exactement tels qu'ils apparaissent dans les tables de la base de données.

Lecture d'instructions SQL à partir d'un fichierVous pouvez concevoir votre requête dans d'autres logiciels (par exemple Microsoft Access) ou dans des outils de base de données tiers, puis utiliser SQL Access pour InTouch pour l'exécuter. Étant donné que plusieurs de ces logiciels permettent de générer l'instruction SQL, il est facile d'enregistrer cette dernière dans un fichier à l'aide de la fonction SQLLoadStatement().

ExempleCodeResultat = SQLLoadStatement (IDConnexion,

"c:\myappdir\lotquery.sql");

L'instruction peut maintenant être exécutée.

Modification des instructions SQL étenduesPour que vous puissiez bénéficier de fonctionnalités SQL complètes, le Gestionnaire SQL Access vous permet de définir une clause « where » contenant une valeur pour une variable InTouch. Pour pouvoir définir les paramètres SQL dans l'environnement d'exploitation, les fonctions suivantes vous sont proposées :

� SQLPrepareStatement()

Guide de l'utilisateur du gestionnaire SQL Access

Page 40: Wonderware factory suite

40 Chapitre 4

� SQLSetParamType ()

� SQLClearStatement()

� SQLClearParam()

Pour effectuer la substitution des paramètres dans une instruction SQL, placez un point d'interrogation à l'emplacement où vous souhaitez indiquer ultérieurement un paramètre. L'instruction est alors "préparée", les paramètres sont "définis" dans l'instruction, puis l'instruction est exécutée.

SQLPrepareStatement() prépare l'instruction en vue de son exécution. Cette fonction ne permet pas d'exécuter l'instruction ; elle se contente de l'activer pour que vous puissiez définir des valeurs pour les paramètres. SQLSetParamType() est un ensemble de fonctions vous permettant de définir des valeurs pour les paramètres de l'instruction SQL.

ExempleCodeResultat = SQLSetStatement ( IDConnexion, "Select

NoLot, NomLot, DescriptionLot, QuantitéLot from InfoLot, InfoProduction" );

CodeResultat = SQLAppendStatement (IDConnexion, " WHERE InfoLot.NoLot = ?");

CodeResultat = SQLAppendStatement (IDConnexion, " order by NoLot,NomLot,QuantitéLot" );

CodeResultat = SQLPrepareStatement (IDConnexion, IDInstruction);

{insère le pointeur de l'instruction dans la variable 'IDInstruction'}

CodeResultat = SQLSetParamInt (IDInstruction, 1, NumLotVar);

{attribue la valeur de NumLotVar au paramètre}

L'instruction ne possédant qu'un seul paramètre, vous pouvez à présent l'exécuter.

Une fois que vous l'avez exécutée et si vous n'en avez plus besoin, vous pouvez appeler la fonction SQLClearStatement() pour libérer les ressources qui lui sont associées.

Remarque Vous pouvez appeler SQLEnd() afin de libérer les instructions SQL « non nommées » (c'est-à-dire celles générées par des fonctions SQL Access existantes), ainsi que les instructions non préparées créées par les fonctions SQLSetStatement() et SQLLoadStatement().

Exécution des instructions SQL étenduesLorsque l'instruction a été élaborée de manière dynamique ou bien extraite d'un fichier, puis éventuellement préparée et modifiée, vous pouvez l'exécuter. L'API du Gestionnaire SQL Access utilise pour cela la fonction SQLExecute(). SQLExecute() exécute soit l'instruction active (à savoir celle générée par la fonction SQLSetStatement() ou SQLLoadStatement()), soit l'instruction préalablement préparée et désignée par le paramètre de pointeur.

Exemple 1

Guide de l'utilisateur du gestionnaire SQL Access

Page 41: Wonderware factory suite

Utilisation des fonctions SQL 41

CodeResultat = SQLLoadStatement (IDConnexion, "c:\myappdir\lotquery.sql");

CodeResultat = SQLExecute (IDConnexion, "ListeLiens", 0);

{place les résultats de l'instruction dans les variables définies dans la liste des liens. Le pointeur d'instruction préparé a pour valeur zéro.}

CodeResultat = SQLNext (IDConnexion);

{Extrait les résultats de l'instruction}

Exemple 2

CodeResultat = SQLSetStatement ( IDConnexion, "Select NoLot, NomLot, DescriptionLot, QuantitéLot from InfoLot, InfoProduction" );

CodeResultat = SQLAppendStatement (IDConnexion, " WHERE InfoLot.NoLot = ?");

{le point d'interrogation signifie que le paramètre devra être défini}

CodeResultat = SQLAppendStatement (IDConnexion, " order by NoLot,NomLot,QuantitéLot" );

CodeResultat = SQLPrepareStatement (IDConnexion, IDInstruction);

{insère le pointeur de l'instruction dans la variable 'StatementId'}

CodeResultat = SQLSetParamInt (IDInstruction, 1, NumLotVar);

{attribue la valeur de NumLotVar au paramètre}

CodeResultat = SQLExecute (IDConnexion, "ListeLiens", IDInstruction); {place les résultats de l'instruction Select dans les variables indiquées dans

ListeLiens. Le pointeur d'instruction préparé figure dans IDInstruction}

CodeResultat = SQLNext (IDConnexion);

{extrait les résultats de l'instruction}

Exemple 3

SQLSetStatement - Cette instruction doit être utilisée pour les requêtes complexes et les chaînes contenant plus de 131 caractères. Pour les chaînes de plus de 131 caractères, vous devez faire appel à la fonction SQLAppend.SQLSetStatement(IDConnexion, "SELECT Vitesse, Num_Serie

FROM nomtable WHERE Num_Serie ='" + Entree_Serie + "'");

SQLExecute(IDConnexion, "ListeLiens", 0);

Dans l'exemple ci-dessus, la valeur zéro est attribuée au paramètre IDInstruction afin que l'instruction n'ait pas à appeler SQLPrepare(IDConnection, IDInstruction) avant l'instruction EXECUTE. Ce paramètre n'ayant pas été créé par l'instruction SQLPrepare, utilisez la fonction SQLEnd au lieu de SQLClearStatement() pour terminer correctement cette instruction.

Guide de l'utilisateur du gestionnaire SQL Access

Page 42: Wonderware factory suite

42 Chapitre 4

SQLSetStatement(IDConnexion, "SELECT Vitesse, Num_Serie FROM nomtable WHERE Num_Serie ='" + Entree_Serie + "'");

SQLPrepareStatement(IDConnexion, IDInstruction);

SQLExecute(IDConnexion, IDInstruction);

Dans l'exemple ci-dessus, le paramètre IDInstruction est créé par la fonction SQLPrepareStatement, puis utilisé dans la fonction SQLExecute. Pour terminer cette instruction, utilisez SQLClearStatement pour libérer des ressources et IDInstruction.

Prise en charge des procédures stockéesLa fonction SQLExecute() prend en charge l'exécution de certaines procédures stockées. Supposez, par exemple, que vous vouliez créer sur le serveur de base de données une procédure stockée dénommée "ProcInfoLot", contenant l'instruction suivante : "SELECT NoLot, NomLot FROM InfoLot". Vous devez alors écrire le QuickScript InTouch suivant pour exécuter la procédure et extraire les résultats :

Utilisation de Microsoft SQL ServerCodeResultat = SQLSetStatement (IDConnexion,

"ProcInfoLot");

CodeResultat = SQLExecute(IDConnexion, "ListeLiens", 0);

CodeResultat = SQLNext (IDConnexion);

{extrait les résultats de l'instruction}

Utilisation d'Oracle ou de Microsoft AccessCodeResultat = SQLSetStatement (IDConnexion, "{CALL

ProcInfoLot}");

CodeResultat = SQLExecute(IDConnexion, "ListeLiens", 0);

CodeResultat = SQLNext (IDConnexion);

{extrait les résultats de l'instruction}

Récupération de valeurs dans les variables InTouch

Les cinq fonctions de script SQLFirst, SQLPrev, SQLNext, SQLLast et SQLGetRecord permettent le déplacement à travers les lignes de la table logique et collecter des valeurs de champs dans les variables InTouch. Si un champ est NULL, la variable InTouch associée sera initialisée à zéro ou à une chaîne de longueur nulle, selon le type analogique ou message. Si la longueur d'une chaîne de la base de données dépasse 131 caractères, seuls les 131 premiers caractères sont recopiés dans la variable InTouch de type message.

Guide de l'utilisateur du gestionnaire SQL Access

Page 43: Wonderware factory suite

Utilisation des fonctions SQL 43

Conservation de variables InTouch dans des champs de base de données

Les quatre fonctions de script SQLUpdate, SQLUpdateCurrent, SQLInsert et SQLInsertExecute sont capables d'utiliser les valeurs de variables InTouch pour des opérations de mise à jour ou d'insertion dans une table. Si la taille d'une variable InTouch de type message dépasse la longueur définie dans la table pour le champ de texte correspondant, cette dernière déterminera le nombre de caractères utiles de la variable de type message. Dans la mesure où les variables InTouch ne peuvent prendre la valeur NULL, il est impossible d'utiliser ces fonctions pour mettre à jour ou insérer des valeurs NULL à l'intérieur de bases de données, dans les situations où un tel champ figure dans la liste des liens. Pour insérer des valeurs nulles dans un champ (qui aura été défini pour permettre des valeurs NULL), la solution consiste à faire appel à la fonction SQLExecute sur une instruction INSERT n'incluant pas ce champ le champ.

Implications des règles de mise à jour de données

Des erreurs accidentelles peuvent se produire dans l'application des règles permettant de collecter des valeurs dans des variables InTouch, et de conserver les données dans des champs de table. Ce risque apparaît dans les scénarios suivants.

Conversion non intentionnelle de valeur NULL en zéros ou en chaîne videL'exécution de l'une des fonctions de navigation collecte des valeurs NULL dans des variables InTouch sous forme de valeurs zéro ou de chaînes de longueur zéro (par exemple, Variable1). Après la mise à jour de certaines autres variables dans la liste des liens, l'exécution de la fonction SQLUpdateCurrent enregistre les valeurs zéro ou les chaînes de longueur zéro dans la table, en écrasant la valeur NULL associée à Variable1. L'exécution de la fonction SQLUpdate utilisera les valeurs zéro ou ces chaînes de longueur zéro de la Variable1 (et non la valeur NULL elle-même) pour mettre à jour les lignes.

Insertion non intentionnelle de zéros ou de chaînes vides dans une tableL'exécution de l'une des fonctions de navigation collecte des valeurs NULL dans des variables InTouch sous forme de valeurs zéro ou de chaînes de longueur zéro (par exemple, Variable1). Après une mise à jour de variables dans la liste des liens, les fonctions SQLInsert ou SQLInsertExecute utilisent des valeurs zéro ou des chaînes de longueur zéro (celles de Variable1) pour les conserver dans la table (et non pas une valeur NULL).

Guide de l'utilisateur du gestionnaire SQL Access

Page 44: Wonderware factory suite

44 Chapitre 4

Guide de l'utilisateur du gestionnaire SQL Access

Page 45: Wonderware factory suite

Dépannage 45

C H A P I T R E 5

Dépannage

Ce chapitre explique comment dépanner des applications SQL en utilisant les codes d'erreur renvoyés par les fonctions SQL. La première partie décrit la fonction SQLErrorMsg() et comprend un tableau des codes de résultat SQL accompagnés des messages d'erreur correspondants. La deuxième partie contient des tableaux regroupant des messages d'erreur spécifiques.

Sommaire� Dépannage des fonctions

� Messages d'erreur spécifiques aux bases de données

� Mise au point de SQL Access

Dépannage des fonctionsToutes les fonctions SQL retournent un Code de résultats pouvant servir à des fins de dépannage. La fonction SQLErrorMsg() retourne le message d'erreur associé à ce CodeResultat.

ExempleMsgErreur=SQLErrorMsg (CodeResultat);

où :

MsgErreur est une variable de type message.

CodeResultat est une valeur entière issue d'une fonction SQL précédente.

Messages d'erreur des codes de résultatEn ce qui concerne les codes de résultat non traités dans cette section, reportez-vous à la documentation spécifique à votre base de données et pensez à consulter Wonderware Logger pour toute information complémentaire.

Guide de l'utilisateur du gestionnaire SQL Access

Page 46: Wonderware factory suite

46 Chapitre 5

La fonction SQLErrorMsg() définit la valeur de la variable de type message MsgErreur de InTouch. Vous trouverez ci-dessous la liste de certains codes de résultat SQL que vous pouvez rencontrer accompagnés des messages d'erreur correspondants ainsi que de leur description :

Code de résultats Message d'erreur Description 0 Aucune erreur ne s'est

produite.La commande a réussi.

-1 <Message du fournisseur DB>

<Un exemple concret de message d'erreur du fournisseur DB>

-2 Impossible d'exécuter une instruction vide

SQLExecute(IDConnexion, ListeLiens, 0) a été exécuté sans un appel préalable à SQLSetStatement, ou avec SQLLoadStatement avec une instruction non vide.

-4 La valeur renvoyée est NULL

Une valeur entière ou réelle à partir de la base de données est nulle. Il s'agit uniquement d'un avertissement transmis à Wonderware Logger.

-5 Plus aucune ligne à rapporter Le dernier enregistrement de la table a été atteint.-7 Paramètre ID incorrect SQLSetParamI {Type} est appelé avec un paramètre

ID incorrect.-8 Liste de paramètres

incorrectsExemple de liste de paramètres incorrects : 1, 2, 3, 5 (4 est manquant).

-9 Type incorrect pour un paramètre NULL

SQLSetParamNull est appelé avec un type incorrect.

-10 La modification du type de données du paramètre n'est pas autorisée

SQLSetParam {Type} est appelé avec un autre type que celui d'un paramètre existant.

-11 L'ajout d'un paramètre après avoir exécuté l'instruction n'est pas autorisé.

SQLSetParam {Type} est appelé avec un nouveau paramètre ID après avoir exécuté l'instruction correctement.

-12 Format de date/heure incorrect

Un format de date/heure incorrect a été trouvé, par exemple, lors de l'exécution des fonctions SQLSetParamTime, SQLInsertExecute ou SQLUpdateCurrent.

-13 Format décimal incorrect Un format décimal incorrect a été trouvé, par exemple, lors de l'exécution des fonctions SQLSetParamDecimal, SQLInsertExecute ou SQLUpdateCurrent.

-14 Format de devise incorrect Un format de devise incorrect a été trouvé, par exemple, lors de l'exécution des fonctions SQLInsertExecute ou SQLUpdateCurrent.

-15 Type d'instruction incorrect pour cette opération

SQLInsertEnd est invoqué pour une instruction ID créée par SQLPrepareStatement, ou SQLClearStatement est appelé pour une instruction ID créée par SQLInsertPrepare.

-1001 Mémoire saturée Mémoire insuffisante pour exécuter cette fonction.

Guide de l'utilisateur du gestionnaire SQL Access

Page 47: Wonderware factory suite

Dépannage 47

Messages d'erreur spécifiques aux bases de données

OracleVérifiez les messages d'erreur spécifiques dans la documentation de Oracle Server pour trouver des solutions.

-1002 Connexion incorrecte L'ID de connexion passé à cette fonction est incorrect.

-1003 Aucune liste de liens trouvée Le nom de la liste de liens spécifié n'existe pas-1004 Aucun modèle trouvé Le nom du modèle de table spécifié n'existe pas.-1005 Erreur interne Une erreur interne s'est produite. Contactez le

Support technique.-1006 La chaîne était nulle. Attention - la chaîne lue à partir de la base de

données est nulle. Il s'agit uniquement d'un avertissement transmis à Wonderware Logger.

-1007 La chaîne est tronquée. Attention - la chaîne lue à partir de la base de données comporte plus de 131 caractères et est tronquée sur sélection. L'avertissement est transmis à Wonderware Logger.

-1008 Aucune clause WHERE Il n'y a pas de clause WHERE pour Delete.-1009 Échec de la connexion Consultez WWLogger pour obtenir une description

plus précise de la connexion qui a échoué.-1010 La base de données spécifiée

sur la partie de DB= de la chaîne de connexion n'existe pas.

La base de données spécifiée n'existe pas.

-1011 Aucune ligne n'a été sélectionnée.

Une commande SQLNumRows(), SQLFirst(), SQLNext(), SQLLast, ou SQLPrev() a été lancée sans exécution préalable de la commande SQLSelect() ou SQLExecute.

-1013 Impossible de trouver le fichier à charger

SQLLoadStatement est appelé avec un nom de fichier introuvable.

Code de résultats Message d'erreur Description

Guide de l'utilisateur du gestionnaire SQL Access

Page 48: Wonderware factory suite

48 Chapitre 5

Microsoft SQL Server

Vérifiez les messages d'erreur spécifiques dans la documentation de Microsoft SQL Server pour trouver des solutions.

Mise au point de SQL AccessL'indicateur SQLTrace=1 défini sous la section [InTouch] du fichier win.ini est utile pour mettre au point des scripts SQL Access. Le nouveau module SQL Access ne fait pas appel au fichier de traces « sqltrace.txt ».

Message d'erreur SolutionVous ne pouvez pas avoir plusieurs liaisons actives en même temps

Vous tentez d'exécuter une commande SQL à la suite d'une fonction SQLSelect(). Lancez une fonction SQLEnd() pour libérer les ressources système à partir de SQLSelect(), ou utilisez une IDConnexion distincte pour la deuxième instruction.

Mémoire insuffisante pour traiter la commande

Tentez de redémarrer la station de travail client.

Nom de table incorrect Le nom de table n'existe pas dans la base de données que vous utilisez. Essayez DB=nom base de données.

Guide de l'utilisateur du gestionnaire SQL Access

Page 49: Wonderware factory suite

Mots-clés réservés 49

A N N E X E A

Mots-clés réservés

SQL Access et ODBCCette annexe répertorie les mots-clés dont l'utilisation est exclue dans les listes de liens et les modèles de tables SQL Access, ainsi que dans l'interface Open Database Connectivity (ODBC).

Si un mot-clé réservé est utilisé comme nom de colonne dans une liste de liens ou un modèle de table, un message d'erreur est généré dans Wonderware Logger. Le type d'erreur générée dépend du pilote ODBC utilisé et de l'emplacement du mot-clé. Par exemple, l'une des erreurs les plus fréquentes consiste à utiliser le libellé DATE comme nom de colonne dans une liste de liens ou un modèle de table. Pour y remédier, utilisez un nom légèrement différent, par exemple «laDATE».

Les mots-clés réservés définissent le langage SQL (Structured Query Language) utilisé par InTouch SQL Access. Ces mots-clés sont également reconnus par le pilote ODBC spécifique utilisé. SQL Access transmet la commande SQL contenant un ou plusieurs mots-clés au fichier ODBC.DLL. Si la commande SQL ne peut pas être interprétée correctement, SQL Access génère un message d'erreur dans Wonderware Logger.

Les mots-clés réservés pour SQL Access et ODBC sont répertoriés ci-dessous, par ordre alphabétique:.

ABSOLUTEADAADDALLALLOCATEALTERANDANYAREASASCASSERTIONATAUTHORIZATIONAVGBEGINBETWEENBITBIT_LENGTHBY

CASCADECASCADEDCASECASTCATALOGCHARCHAR_LENGTHCHARACTERCHARACTER_LENGTHCHECKCLOSE COALESCECOBOLCOLLATECOLLATIONCOLUMNCOMMITCONNECTCONNECTIONCONSTRAINTCONSTRAINTS

CONTINUECONVERTCORRESPONDINGCOUNTCREATECURRENTCURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPCURSORDATEDAYDEALLOCATEDECDECIMALDECLAREDEFERRABLEDEFERREDENTFDESC

Guide de l'utilisateur du gestionnaire SQL Access

Page 50: Wonderware factory suite

50 Annexe A

DESCRIBEDESCRIPTORDIAGNOSTICSDICTIONARYDISCONNECTDISPLACEMENTDISTINCTDOMAINDOUBLEDROPELSEENDEESCEXCEPTEXCEPTIONEXECEXECUTEEXISTSEXTERNALEXTRACTFALSEFETCHFIRSTFLOATFOR FOREIGNFORTRANFOUNDFROM FULLGETGLOBALGOGOTOGRANTGROUPHAVINGHOURIDENTITYIGNOREIMMEDIATEININCLUDEINDEXINDICATORINITIALLYINNERINPUTINSENSITIVEEINFÜGENINTEGERINTERSECTINTERVALLINTOISISOLATIONJOIN

KEYLANGUAGELASTLEFTLEVELLIKELOCALLOWERMATCHMAXMINMINUTEMODULEMONTHMUMPSNAMESNATIONALNCHARNEXTNONENOTNULLNULLIFNUMERICOCTET_LENGTHOFOFFONONLYOPENOPRNOPTIONORORDEROUTEROUTPUTOVERLAPSPARTIALPASCALPLIPOSITIONPRECISIONPREPAREPRESERVEPRIMARYPRIORPRIVILEGESPROCEDUREPUBLICRESTRICTREVOKERIGHTROLLBACKROWS

SCHEMASCROLLSECONDSECTIONSELECTSEQUENCESETSIZESMALLINTSOMESQLSQLCASQLCODESQLERRORSQLSTATESQLWARNINGSUBSTRINGSUMSYSTEMTABLETEMPORARYTHENTIMETIMESTAMPTIMEZONE_HOURTIMEZONE_MINUTOTRANSACTIONTRANSLATETRANSLATIONTRUEUNIONUNIQUEUNKNOWNUPDATEUPPERUSAGEUSINGWERTVALUESVARCHARVARINGVIEWWHENWHENEVERWHEREWITHWORKYEAR

Guide de l'utilisateur du gestionnaire SQL Access

Page 51: Wonderware factory suite

Mots-clés réservés 51

InTouchLes mots-clés réservés par InTouch sont les suivant:

AsCallDimDiscreteIntegerMessageRealReturnRetVal

Guide de l'utilisateur du gestionnaire SQL Access

Page 52: Wonderware factory suite

52 Annexe A

Guide de l'utilisateur du gestionnaire SQL Access

Page 53: Wonderware factory suite

53

Index

AÀ propos de ce guide 6

BBase de données 5Bases de données prises en charge 11

Microsoft Access 12Microsoft SQL Server 11

BindListName 24

CChaineConnexion 35CodeResultat 37, 45Commande Modèle de table 23Commandes

Modèle de table 23Compatibilité ODBC 8Configuration d'un modèle de table 21Configuration d'une liste de liens 16Configuration du module SQL Access Manager 15CSV 6, 24

DDéfinition de requêtes complexes 38DegrePrecision 37Dépannage 45Dépannage des fonctions SQL 45

EÉlaboration dynamique de requêtes 39Enregistrement de la date et de l'heure dans un champ de date Oracle 10Exécution des instructions SQL étendues 40Explorateur de variables 17ExpressionOrderBy 36ExpressionWhere 37

FFonction Delim 20Fonctions

SQLAppendStatement 25SQLClearParam 26SQLClearStatement 26SQLClearTable 26SQLCommit 26SQLConnect 11SQLCreateTable 27SQLDelete 27SQLDisconnect 28SQLDropTable 28SQLEnd 28SQLErrorMsg 28SQLExecute 28SQLFirst 28SQLGetRecord 28

SQLInsert 28SQLInsertEnd 29SQLInsertExecute 29SQLInsertPrepare 29SQLLast 29SQLLoadStatement 29SQLManageDSN 29SQLNumRows 30SQLPrepareStatement 30SQLPrev 30SQLRollback 30SQLSelect 31SQLSetParamChar 31SQLSetParamDate 31SQLSetParamDecimal 32SQLSetParamFloat 32SQLSetParamInt 32SQLSetParamLong 32SQLSetParamNull 32SQLSetParamTime 33SQLSetStatement 34SQLTransact 34SQLUpdate 34SQLUpdateCurrent 34Utilisation 25

IIDConnexion 35IDInstruction 37InstructionSQL 37Introduction au module SQL Access Manager 5

LLangage de requêtes structuré 5Lecture d'instructions SQL à partir d'un fichier 39Liste de liens 16

création 16Explorateur de variables 17modification 19suppression 19

LongMax 35

MManuels en ligne 7Messages d'erreur des codes de résultat 45Messages d'erreur spécifiques aux bases de données

Microsoft SQL Server 48Microsoft Access

Connexion requise 12Types de données pris en charge 13, 14

Microsoft SQL ServerConnexion requise 11Types de données pris en charge 12, 14

Modèle de table 21création 21modification 23suppression 23

modification d'un modèle de table 23

Guide de l�utilisateur du gestionnaire SQL Access

Page 54: Wonderware factory suite

54

modification d'une liste de liens 19Modification des instructions SQL étendues 39Mots-clés réservés 49MsgErreur 35

NNom de la colonne 18Nom du modèle de table 21, 24NomFichier 35NomListeLiens 35NomModele 37NomTable 37NumeroEnreg. 37NumParametre 36

OODBC.INI 8Oracle

Types de données pris en charge 14

PParamètre

ChaineConnexion 35CodeResultat 37DegrePrecision 37ExpressionOrderBy 36ExpressionWhere 37IDConnexion 35IDInstruction 37InstructionSQL 37LongMax 35MsgErreur 35NomFichier 35NomListeLiens 35NomModele 37NomTable 37NumeroEnreg. 37NumParametre 36Precision 37TypeParametre 36ValeurParametre 37

Paramètres 35Paramètres SQL 35Precision 37Présentation du module SQL Access Manager 15Prise en charge des procédures stockées 42Programme Administrateur ODBC 8Programmes de support technique de Wonderware 7

QQuickScripts 38

RRequêtes

Complexe 39Élaboration dynamique 39

SSéparateurs 20SQL.DEF 6, 24SQLConnect 11SQLErrorMsg 45SQLInsert 20SQLSelect 31SQLUpdate 20, 34suppression d'un modèle de table 23suppression d'une liste de liens 19Syntaxe de la fonction SQL 25

TTypeParametre 36Types de données pris en charge 14

UUtilisation de fonctions SQL dans InTouch 38Utilisation de Microsoft Access 12Utilisation de Microsoft SQL Server 11Utilisation de séparateurs spéciaux 20Utilisation des fonctions SQL 25

VValeurParametre 37Variable.Champ 18

Guide de l�utilisateur du gestionnaire SQL Access