Vous êtes sur la page 1sur 54

Wonderware FactorySuite

Guide de l'utilisateur du gestionnaire SQL Access

Rvision A Dernire rvision : 7 novembre 2002

Invensys Systems, Inc.

Tous droits rservs. Aucune partie de cette documentation ne peut tre reproduite, stocke sur un systme d'extraction ou transmise sous quelque forme ou par quelque moyen que ce soit, lectronique ou mcanique, 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 prcautions aient t prises lors de la prparation de cette documentation, l'diteur et l'auteur dclinent toute responsabilit en cas d'erreur ou d'omission ventuelles. ou de dommages potentiels qui pourraient rsulter de l'utilisation des informations qu'elle contient. Les informations prsentes dans ce manuel sont susceptibles d'tre modifies sans avis pralable et n'engagent pas Invensys Systems, Inc. Le logiciel dcrit dans ce manuel est rgi 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 rservs. Invensys Systems, Inc. 33 Commercial Street Foxboro, MA 02035 (949) 727-3200 http://www.wonderware.com Marques commerciales Tous les termes mentionns dans ce manuel connus comme marques commerciales ou marques de service sont en majuscules. Invensys Systems, Inc. dcline toute responsabilit quant la prcision de ces informations. L'utilisation d'un terme dans ce guide ne peut pas tre considre 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 socit Invensys plc, ses dlgations et filiales. Toutes les autres marques sont des marques commerciales appartenant leurs propritaires respectifs.

Sommaire

Sommaire
CHAPITRE 1: Module SQL Access ...................5
Introduction ............................................................................................ 5 propos de ce guide.............................................................................. 6 Support technique................................................................................... 7 Compatibilit ODBC.............................................................................. 8

CHAPITRE 2: Configuration et connexion des bases de donnes.................9


Utilisation de Oracle 8.0......................................................................... 9 Syntaxe de la fonction SQLConnect()................................................ 9 Enregistrement de la date et de l'heure dans un champ de date Oracle .............................................. 10 Utilisation de Microsoft SQL Server ....................................................11 Configuration du client ......................................................................11 Types de donnes pris en charge....................................................... 12 Utilisation de Microsoft Access ........................................................... 12 Longueur de chane .......................................................................... 13 Valeurs des types de donnes pour les bases de donnes prises en charge........................................................ 14

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


Prsentation du module SQL Access Manager .................................... 15 Configuration dune liste de liens..................................................... 16 Utilisation de sparateurs spciaux ...................................................... 20 Configuration dun modle de table..................................................... 21 Fichier SQL.DEF ................................................................................. 24

CHAPITRE 4: Utilisation des fonctions SQL..25


Fonctions SQL...................................................................................... 25 Fonction ............................................................................................ 25 Paramtres SQL.................................................................................... 34 Utilisation de fonctions SQL dans des QuickScripts InTouch ............. 38 Dfinition de requtes complexes..................................................... 38 Rcupration de valeurs dans les variables InTouch ........................ 42 Conservation de variables InTouch dans des champs de base de donnes................................................ 43 Implications des rgles de mise jour de donnes ........................... 43

Guide de lutilisateur du gestionnaire SQL Access

Sommaire

CHAPITRE 5: Dpannage ................................45


Dpannage des fonctions ......................................................................45 Messages d'erreur des codes de rsultat ............................................45 Messages d'erreur spcifiques aux bases de donnes............................47 Mise au point de SQL Access ...............................................................48

ANNEXE A: Mots-cls rservs ......................49


SQL Access et ODBC .......................................................................49 InTouch..............................................................................................51

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

Guide de lutilisateur du gestionnaire SQL Access

Module SQL Access

C H A P I T R E

Module SQL Access

Le Gestionnaire SQL Access de Wonderware FactorySuite vous permet d'accder, de modifier, de crer et de supprimer des tables d'une base de donnes. Une base de donnes stocke les informations dans des tables ayant un attribut ou un champ en commun. L'accs ces informations s'effectue par le biais du langage SQL (Structured Query Language, langage de requtes structur).

Sommaire Introduction propos de ce guide Support technique Compatibilit ODBC

Introduction
Le programme gestionnaire SQL d'InTouch est conu pour faciliter le transfert de donnes, telles que des recettes par lots, d'une base de donnes SQL vers une application InTouch. Il simplifie galement le transfert, vers la base de donnes SQL, de donnes figurant dans InTouch, qu'il s'agisse de donnes d'exploitation, historiques ou relatives l'tat des alarmes. Par exemple, lorsque le cycle d'une machine prend fin, il se peut qu'une socit ait besoin d'enregistrer plusieurs groupes de donnes, chacun d'eux tant destin une application distincte. Les bases de donnes SQL permettent de transfrer facilement des informations entre une ou plusieurs applications distantes. Le module SQL pour InTouch permet d'accder ces donnes et de les afficher dans n'importe quelle application InTouch.

Guide de l'utilisateur du gestionnaire SQL Access

Chapitre 1

Le module SQL pour InTouch comprend le programme SQL Access Manager et les fonctions SQL. Le programme SQL Access Manager permet de crer et d'associer les colonnes d'une base de donnes 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 donnes InTouch aux colonnes de la base de donnes 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 donnes et leurs associations dans un fichier de variables spares par des virgules (.CSV) nomm SQL.DEF . (Ce fichier se trouve dans le rpertoire 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 cre galement des modles de tables qui dfinissent la structure et le format des bases de donnes. Pour de plus amples informations sur les listes de liens et sur les modles de tables, reportez-vous au Chapitre 3, Configuration du module SQL Access Manager . Les fonctions SQL peuvent tre utilises dans tout script d'action InTouch. Vous pouvez leur indiquer de s'excuter automatiquement lorsque l'utilisateur entre une information, ou que la valeur d'une variable change, ou bien encore lorsque des conditions particulires sont runies. Par exemple, lorsqu'une condition d'alarme existe, l'application excute une commande SQLInsert() ou SQLUpdate() pour enregistrer le contenu de tous les points de donnes concerns ainsi que l'tat de l'alarme. Les fonctions SQL vous permettent de crer, de vider ou de supprimer des tables, d'y insrer de nouveaux enregistrements ou de modifier ceux qui s'y trouvent dj, ou encore de slectionner des enregistrements et de les explorer, etc. Remarque Les systmes de bases de donnes qui ne sont pas prsents dans ce guide ne sont pas pris en charge.

propos de ce guide
Ce guide est divis en plusieurs chapitres logiques dcrivant les diffrents aspects de l'utilisation du module SQL Access Manager. Sa rdaction est procdurale et dcrit la plupart des fonctions ou tches suivant des tapes numrotes. Si vous visualisez ce manuel en ligne, cliquez sur le texte apparaissant en vert pour accder la section ou au chapitre rfrenc(e). Lorsque vous passez une autre section ou un chapitre diffrent et que vous souhaitez revenir la section d'origine, une option Retour est disponible. Astuce Ce symbole reprsente un astuce dcrivant un moyen plus rapide ou plus simple pour accomplir une tche ou une fonction. Pour vous familiariser avec l'environnement de dveloppement WindowMaker et ses outils, reportez-vous au chapitre 1, lments du programme WindowMaker, du Guide de l'utilisateur InTouch . Pour en savoir plus sur l'utilisation des fentres, objets graphiques, Wizards, contrles ActiveX, etc., consultez le Chapitre 2, Utilisation de WindowMaker.

Guide de l'utilisateur du gestionnaire SQL Access

Module SQL Access

Pour plus de dtails sur l'environnement d'exploitation InTouch (WindowViewer), reportez-vous au Guide de l'utilisateur Exploitation InTouch. De plus, le Manuel de rfrence InTouch prsente des rfrences dtailles relatives au langage de script, aux variables systme et aux .champs de variables InTouch. Pour plus de dtails sur l'utilitaire SPC Pro, reportez-vous au Guide de lutilisateur - SPC Pro InTouch. Pour plus de dtails sur l'utilitaire Gestionnaire de recettes, reportez-vous au Guide de lutilisateur 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 suprieure) pour visualiser ou imprimer les manuels en ligne.

Suppositions
Ce manuel considre comme acquis les points suivants:

Connaissance de l'environnement de travail du systme d'exploitation Windows 2000, XP et/ou Windows NT. Connaissance de l'utilisation d'une souris, des menus Windows, des options de slection et de l'accs l'aide en ligne. Exprience d'un langage de programmation ou de macros. Pour obtenir de meilleurs rsultats, vous devriez tre familier avec les concepts de programmation tels que variables, instructions, fonctions et mthodes.

Support technique
Le support technique de Wonderware offre toute une gamme doptions dassistance, afin de rpondre 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 problme rencontr. Si vous jugez toutefois ncessaire de contacter le support technique pour une assistance supplmentaire, veuillez avoir les informations suivantes disponibles: 1. 2. 3. 4. 5. Le numro de srie de votre logiciel. La version d'InTouch excute. Le type et la version du systme d'exploitation utilis. Par exemple, station de travail Microsoft Windows NT version 4.0. Les messages d'erreur systme exacts rencontrs. 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

Chapitre 1

6. 7. 8.

Les dtails des tentatives effectues pour rsoudre le ou les problmes et le rsultat. Les dtails permettant de recrer le problme Si connu, le numro de cas du support technique Wonderware attribu votre problme (si ce problme est rptitif).

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

Compatibilit ODBC
Le module SQL Access Manager est une application compatible avec ODBC elle communique avec tout systme de bases de donnes, ds 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 dfinir les liens qui existeront entre l'application compatible avec ODBC et la base de donnes. Pour configurer un pilote ODBC 1. 2. Dmarrez le programme Administrateur ODBC Microsoft. Slectionnez un pilote ou une source de donnes, puis cliquez sur Ajouter, Par dfaut ou Configurer. La bote de dialogue Configuration de pilote ODBC . Description Nom dfini par l'utilisateur, identifiant la source de donnes Description de cette source de donnes, dfinie par l'utilisateur

Option Nom de la source de donnes Description

Rpertoire de la base de Identifie le rpertoire contenant les fichiers de base donnes de donnes. Si aucun rpertoire n'est indiqu, le rpertoire de travail en cours sera utilis. Astuce Compltez tout autre champ ncessaire la configuration du pilote slectionn. 3. Cliquez sur OK. Astuce Le pilote crit les valeurs de chaque champ dans le fichier ODBC.INI. Ces valeurs sont les valeurs par dfaut d'une connexion la source de donnes. Vous pouvez modifier ces valeurs en modifiant les champs de la source de donnes. Dans la section approprie de la source de donnes du fichier ODBC.INI, vous pouvez entrer manuellement des informations pour n'importe quel attribut non pris en charge par la bote de dialogue de configuration du pilote ODBC.

Guide de l'utilisateur du gestionnaire SQL Access

Configuration et connexion des bases de donnes

C H A P I T R E

Configuration et connexion des bases de donnes

Le Gestionnaire SQL Access prend en charge les bases de donnes Oracle, Microsoft SQL Server et Microsoft Access. Les exigences associes chaque base de donnes sont uniques et spcifiques. Ce chapitre comprend des sections distinctes pour chaque base de donnes, 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 donnes pour les bases de donnes prises en charge

Utilisation de Oracle 8.0


Pour communiquer avec Oracle 8.0 1. Vrifiez que le fournisseur OLEDB de Oracle (MSDAORA.DLL) existe dans le systme InTouch client. Ce fichier est install avec les composants MDAC (Microsoft Data Access), eux-mmes installs lors de l'installation de InTouch. Connectez-vous Oracle en excutant 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 .

2.

Syntaxe de la fonction SQLConnect()


La fonction SQLConnect() est utilise pour tablir une connexion avec les bases de donnes Oracle. La chane de connexion utilise par la fonction SQLConnect() se prsente comme suit :
SQLConnect(IDConnexion,"< attribut> =< valeur>; <attribut> =< valeur>; ...");

Guide de l'utilisateur du gestionnaire SQL Access

10

Chapitre 2

Les attributs utiliss par Oracle sont dcrits dans le tableau suivant : Attribut Producteur ID utilisateur Mot de passe Source de donnes Valeur MSDAORA Nom de l'utilisateur Mot de passe. Nom du serveur Oracle

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, doublecliquez sur l'option Liste de liens. La bote de dialogue Configuration de la liste des liens apparat.

2. 3.

Dans le champ Variable.Champ, entrez le nom de la variable utiliser. Dans le champ Nom de la colonne, indiquez la fonction DATE_TIME delim().

Guide de l'utilisateur du gestionnaire SQL Access

Configuration et connexion des bases de donnes

11

4.

Dans votre application InTouch, crez un QuickScript pour prparer les donnes 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 apparat 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 Server


Pour communiquer avec Microsoft SQL Server 1. 2. Configurez le client de base de donnes Windows. Pour vous connecter Microsoft SQL Server, excutez 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 donnes Microsoft SQL Server. Elle vous permet d'accder au serveur de base de donnes et d'ouvrir une connexion de manire permettre l'excution d'autres fonctions SQL. La chane de connexion utilise par la fonction SQLConnect() se prsente comme suit :
SQLConnect(IDConnexion,"< attribut> =< valeur>; <attribut> =< valeur>; ...");

Le tableau ci-dessous rpertorie les attributs utiliss par Microsoft SQL Server : Attribut Producteur DSN UID PWD SRVR DB Exemple
SQLConnect(IDConnexion,"DSN=SQL_Data;UID=OPERATOR;PWD=XYZ

Valeur SQLOLEDB Nom de la source de donnes tel qu'il apparat dans l'Administrateur ODBC Microsoft ID de connexion, sensible la casse. Mot de passe, sensible la casse. Nom du serveur sur lequel sont installes les tables de base de donnes utiliser. Nom de la base de donnes ouvrir.

Guide de l'utilisateur du gestionnaire SQL Access

12

Chapitre 2

Z");

Types de donnes pris en charge


Le module SQL Access Manager associe les quatre types de donnes InTouch (variable discrte, entier, rel et message) avec d'autres types dans les systmes de bases de donnes. Le type de donnes Caractres (char) contient des chanes de caractres de longueur fixe. Ce type de donnes est requis dans les variables InTouch de type Message. Vous devez indiquer une longueur de champ. Les bases de donnes Microsoft SQL Server prennent en charge des champs de 8000 caractres maximum. Toutefois, les variables InTouch de type Message sont limites 131 caractres. Si une variable de type message contient un nombre plus lev de caractres, la chane sera tronque au moment de son insertion dans la base de donnes. Le type de donnes int reprsente les entiers InTouch. Sauf indication contraire, la longueur des champs est la valeur par dfaut de la base de donnes. Si vous souhaitez indiquer une autre longueur, elle doit tre conforme au format de longueur. Ce format dtermine le nombre maximal de chiffres pour la colonne. Le type de donnes float reprsente les nombres rels InTouch. La longueur des champs est dtermine par la base de donnes. Il n'est pas ncessaire d'indiquer une longueur de champ pour ce type de donnes.

Utilisation de Microsoft Access


Pour communiquer avec Microsoft Access, vous devez vous y connecter en excutant la fonction SQLConnect() dans un QuickScript InTouch.

Syntaxe de la fonction SQLConnect()


La fonction SQLConnect() est utilise pour la connexion aux bases de donnes Microsoft Access. Elle vous permet d'accder au serveur de base de donnes et d'ouvrir une connexion de manire permettre l'excution d'autres fonctions SQL. La chane de connexion utilise par SQLConnect() se prsente comme suit :
SQLConnect(IDConnexion,"< attribut> =< valeur>; <attribut> =< valeur>; ...");

DSN est un attribut utilis par Microsoft Access et correspond au nom de la source de donnes, tel qu'il apparat dans le Gestionnaire ODBC de Microsoft. Exemple
SQLConnect(IDConnexion,"DSN=MSACC");

Guide de l'utilisateur du gestionnaire SQL Access

Configuration et connexion des bases de donnes

13

Longueur de chane
Les types de donnes pris en charge par le module SQL Access Manager dpendent de la version du pilote ODBC utilis. Les donnes de type texte sont des chanes de caractres de longueur fixe utilises pour les variables InTouch de type Message. Vous devez prciser une longueur. Les bases de donnes Microsoft Access prennent en charge les champs de texte d'une longueur maximale de 255 caractres. Toutefois, les variables InTouch de type Message sont limites 131 caractres. Si une variable de ce type contient un nombre plus lev de caractres, la chane sera tronque au moment de son insertion dans la base de donnes. Le pilote ODBC pour Microsoft Access prend en chargejusqu' 17 caractres 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

14

Chapitre 2

Valeurs des types de donnes pour les bases de donnes prises en charge
Oracle
Type de donnes char nombre Longueur 2000 caractres 38 chiffres Valeurs par dfaut 1 caractre 38 chiffres Plage Type de variable Message Entier

Microsoft SQL Server


Type de donnes char entier float 15 chiffres Valeurs par dfaut Type de variable Message -2 147 483 647 Entier 2 147 483 647 entre -1.79E +308 et 1.79E
+308

Longueur 8000 caractres

Plage

Rel

Microsoft Access 2000


Type de donnes texte nombre nombre Valeurs par dfaut Type de variable Message Entier Rel

Longueur 255 caractres

Plage

Guide de l'utilisateur du gestionnaire SQL Access

Configuration du module SQL Access Manager

15

C H A P I T R E

Configuration du module SQL Access Manager

L'utilitaire SQL Access Manager cre des listes de liens et des modles de tables. La liste de liens associe les colonnes de la base de donnes aux variables contenues dans le dictionnaire des variables InTouch. Le modle de table dfinit la structure et le format d'une nouvelle table dans la base de donnes.

Sommaire Prsentation du module SQL Access Manager Configuration dune liste de liens Configuration dun modle de table Fichier SQL.DEF

Prsentation du module SQL Access Manager


Lorsqu'une application InTouch excute une commande SQLCreateTable(), l'argument Modle de table dfinit la structure du nouveau fichier de base de donnes.

Guide de l'utilisateur du gestionnaire SQL Access

16

Chapitre 3

Lors de l'excution d'une commande SQLInsert(), SQLSelect() ou SQLUpdate(), l'argument Liste de liens dfinit les variables InTouch qui sont utilises et les colonnes de la base leur associer.

Configuration dune liste de liens


La liste de liens associe les colonnes de la base de donnes et les variables du dictionnaire InTouch. Pour crer une liste de liens 1. Dans le menu Spcial, 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

Configuration du module SQL Access Manager

17

3.

La bote de dialogue Configuration de la liste des liens apparat.

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 appliques au texte slectionn. 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 caractres. La nouvelle liste de liens associe les colonnes de la base de donnes aux variables InTouch. Par exemple, si vous crez une liste de recensement d'employs, vous allez indiquer ici le nom de la liste de liens associant les informations sur les employs. Remarque Les fonctions SQLInsert(), SQLSelect(), et SQLUpdate() font appel aux paramtres 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 donnes. Si la variable n'est pas encore dfinie dans le dictionnaire des variables, double-cliquez dessus pour ouvrir la bote de dialogue Dictionnaire de variables et la dfinir maintenant. 6. Cliquez sur Variable pour slectionner une variable existante. L'Explorateur de variables s'ouvre.

Guide de l'utilisateur du gestionnaire SQL Access

18

Chapitre 3

Astuce L'Explorateur de variables affiche les variables dfinies pour la source de variables courante. Pour slectionner une variable, doublecliquez dessus ou slectionnez-la puis cliquez sur OK. Pour slectionner un .champ pour la variable, cliquez sur la flche ct de .Champ, slectionnez le .champ souhait dans la liste, puis cliquez sur OK. Remarque Les variables de type E/S qui ne sont pas utilises dans votre application mais qui sont spcifies dans une liste de liens SQLAccess seront actives ( l'intention du serveur d'E/S) ds le dmarrage de WindowViewer. Aucune connexion une base de donnes n'est ncessaire pour observer ce comportement. Pour plus d'informations sur l'Explorateur de variables, reportez-vous au Guide de l'utilisateur InTouch en ligne. 7. 8. Cliquez sur Champ pour ajouter un .champ la variable. La bote de dialogue Slection d'un nom de champ s'affiche. Cliquez sur le .champ utiliser. La bote de dialogue est referme 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 caractres. Le nom de la colonne est directement associ au nom de la colonne dans la base de donnes. 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 sparateurs spciaux peuvent galement tre utiliss pour associer le nom de colonne la base de donnes. Pour plus d'informations sur les sparateurs spciaux, reportez-vous la section Utilisation de sparateurs spciaux . 10. Cliquez sur Dplacer vers le haut pour faire remonter le nom de la variable slectionne d'un niveau dans la liste. 11. Cliquez sur Dplacer vers le bas pour faire descendre le nom de la variable slectionne d'un niveau dans la liste. 12. Cliquez sur Ajouter un lment pour ajouter votre combinaison Variable.Champ et Nom de colonne la liste de liens. 13. Cliquez sur Supprimer un lment pour supprimer une combinaison Variable.Champ et Nom de colonne de la liste. 14. Cliquez sur Modifier un lment 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 bote de dialogue. Guide de l'utilisateur du gestionnaire SQL Access

Configuration du module SQL Access Manager

19

Astuce Vous pouvez cliquer sur Enregistrer pour enregistrer les paramtres sans refermer la bote de dialogue. Pour modifier une liste de liens 1. Dans le menu Spcial, 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. La bote de dialogue Slection d'une liste de liens s'affiche.

2.

3.

Slectionnez le nom de la liste de liens modifier, puis cliquez sur Modifier. La bote de dialogue Configuration de la liste des liens apparat. Modifiez les lments souhaits. Cliquez sur OK pour enregistrer les modifications et refermer la bote de dialogue.

4. 5.

Pour plus d'informations sur la configuration d'une liste de liens, reportez-vous la section Pour crer une liste de liens . Pour supprimer une liste de liens 1. Dans le menu Spcial, 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. La bote de dialogue Slection d'une liste de liens s'affiche.

2.

3. 4.

Slectionnez le nom de la liste de liens supprimer. Cliquez sur Supprimer. Un message vous invite confirmer la suppression. Cliquez sur Oui pour supprimer le modle slectionn ou sur Non pour annuler la suppression. La bote de dialogue Configuration de la liste des liens rapparat. Cliquez sur OK pour fermer la bote de dialogue.

5.

Guide de l'utilisateur du gestionnaire SQL Access

20

Chapitre 3

Utilisation de sparateurs spciaux


Les fonctions SQLInsert() et SQLUpdate() utilisent un format par dfaut qui place les chanes de message entre apostrophes. Certaines bases de donnes SQL attendent des chanes encadres par un autre type de sparateur. Ainsi, Oracle attend de recevoir les chanes de date entre crochets. Dans ce cas, vous devez utiliser la fonction Delim() de la manire suivante : Dans le champ Nom de la colonne de la bote de dialogue Configuration de la liste des liens , aprs le nom de colonne, tapez le mot-cl delim (pas de diffrenciation majuscules/minuscules). Ce mot-cl delim doit tre suivi :

d'une parenthse gauche ; du sparateur de gauche ; d'une virgule ; du sparateur de droite ; d'une parenthse droite.

Exemple : datestring delim (',') Pour utiliser le mme sparateur gauche et droite, il suffit de l'indiquer entre parenthses, sans virgule. Exemple : datestring delim (' ') L'exemple suivant utilise des sparateurs de gauche et de droite diffrents. 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 donnes .

Guide de l'utilisateur du gestionnaire SQL Access

Configuration du module SQL Access Manager

21

Configuration dun modle de table


Cette commande cre un modle de table dfinissant la structure et le format d'une nouvelle table dans la base de donnes. Pour crer un modle de table 1. Dans le menu Spcial, pointez sur SQL Access Manager, puis cliquez sur Modle de table, ou dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Modle de table.

2. 3.

Cliquez sur Nouveau. La bote de dialogue Configuration du modle 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 appliques au texte slectionn. 4. Dans le champ Nom du modle, tapez le nom du modle de table.

Guide de l'utilisateur du gestionnaire SQL Access

22

Chapitre 3

Remarque Le nom d'un modle de table peut contenir jusqu' 32 caractres. Si vous crez un index, unique ou non, le nom du modle de table est dans ce cas limit 24 caractres. Le nom du modle de table permet d'identifier la structure d'une base de donnes pour la fonction SQLCreateTable(). 5. 6. Dans le champNom de la colonne, tapez le nom de la colonne pour le modle de table. Le nom d'une colonne peut contenir jusqu' 30 caractres. Dans le champ Type de colonne, indiquez le type de donnes pour la colonne. Les diffrents choix de types de donnes varient selon la base de donnes utilise. Pour plus dinformations sur les types de donnes de bases de donnes spcifiques, reportez-vous au Chapitre 2, Configuration et connexion des bases de donnes . 7. Slectionnez le type d'index, comme suit : Unique Chaque valeur de la colonne doit tre unique. Non unique Les valeurs de la colonne ne doivent pas forcment tre uniques. Aucune Pas d'index. AstuceLorsque vous excutez une fonction SQLCreateTable(), un fichier d'index est automatiquement cr. 8. Slectionnez l'option Autoriser les entres nulles (NULL) pour permettre la saisie de donnes nulles dans cette colonne. Remarque InTouch n'accepte pas les donnes nulles. Si une valeur na pas t entre pour une variable donne lorsque vous insrez des donnes, les valeurs seront : Type de donnes Valeur Discret Entier Message 0 0 Chanes sans caractres

Lors de la slection de donnes, les valeurs nulles seront converties selon le type de donnes indiqu ci-dessus. 9. Cliquez sur Ajouter un lment pour ajouter votre combinaison Nom de colonne, Type de colonne, Longueur et Type d'index au modle de table.

10. Cliquez sur Supprimer un lment pour supprimer une combinaison Nom de colonne, Type de colonne, Longueur et Type d'index de la liste de modles de table. 11. Cliquez sur Modifier un lment pour modifier un Nom de colonne, Type de colonne, Longueur ou Type d'index dans le modle de table.

Guide de l'utilisateur du gestionnaire SQL Access

Configuration du module SQL Access Manager

23

12. Cliquez sur OK pour enregistrer la nouvelle configuration de modle de table et refermer la bote de dialogue. Astuce Vous pouvez cliquer sur Enregistrer pour enregistrer les paramtres sans refermer la bote de dialogue. Pour modifier un modle de table 1. Dans le menu Spcial, pointez sur SQL Access Manager, puis cliquez sur Modle de table, ou dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Modle de table. La bote de dialogue Slection d'un modle de table s'affiche.

2.

3.

Slectionnez le nom du modle de table modifier, puis cliquez sur Modifier. La bote de dialogue Configuration du modle de table s'affiche. Modifiez les lments souhaits. Cliquez sur OK pour enregistrer les modifications et refermer la bote de dialogue. Pour plus d'informations sur la configuration d'un modle de table, reportez-vous la section Pour crer un modle de table .

4. 5.

Pour supprimer un modle de table 1. Dans le menu Spcial, pointez sur SQL Access Manager, puis cliquez sur Modle de table, ou dans l'Explorateur d'applications sous SQL Access Manager, double-cliquez sur Modle de table. La bote de dialogue Slection d'un modle de table s'affiche.

2.

3. 4.

Slectionnez le nom du modle de table supprimer. Cliquez sur Supprimer. Un message vous invite confirmer la suppression. Cliquez sur Oui pour supprimer le modle slectionn ou sur Non pour annuler la suppression. La bote de dialogue Configuration du modle de table rapparat. Cliquez sur OK pour fermer la bote de dialogue.

5.

Guide de l'utilisateur du gestionnaire SQL Access

24

Chapitre 3

Fichier SQL.DEF
Le module SQL Access Manager enregistre les informations de configuration des listes de liens et modles de tables dans un fichier intitul SQL.DEF. Il s'agit d'un fichier de variables spares 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 donnes apparaissent dans le fichier de la manire suivante : :BindListName;NomListeLiens Variable1.Champ;NomColonne1 Variable2.Champ;NomColonne2 Variable3.Champ;NomColonne3 :TableTemplateName,NomModleTable NomColonne1;TypeColonne;[LongueurColonne];Null;Index NomColonne2;TypeColonne;[LongueurColonne];Null;Index NomColonne3;TypeColonne;[LongueurColonne];Null;Index

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

25

C H A P I T R E

Utilisation des fonctions SQL

InTouch fait appel aux fonctions SQL pour modifier les informations de la base de donnes. Elles constituent une extension des fonctions QuickScript standard d'InTouch et peuvent tre utilises dans tous les scripts. Elles vous permettent de slectionner, de modifier, d'insrer ou de supprimer des enregistrements dans les tables que vous dcidez d'ouvrir.

Sommaire Fonctions SQL Paramtres SQL Utilisation de fonctions SQL dans des QuickScripts InTouch\

Fonctions SQL
Cette section rpertorie toutes les fonctions SQL. Notez que les actions SQL sont synchrones. InTouch ne reprend le contrle que lorsque les oprations SQL sont termines (les courbes, scrutations et autres oprations InTouch sont entre-temps suspendues). Toutes les fonctions SQL ( l'exception de SQLNumRows()) renvoient un CodeResultat. Si le CodeResultat est diffrent de zro, la fonction choue et d'autres oprations doivent tre effectues. Le CodeResultat peut tre utilis par la fonction SQLErrorMsg(). La syntaxe classique des fonctions SQL est la suivante :
FonctionSQL(Paramtre1, Paramtre2, ...)

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

Fonction
SQLAppendStatement (IDConnexion, InstructionSQL)
Ajoute l'instruction InstructionSQL l'instruction SQL par dfaut pour IDConnexion.

Guide de l'utilisateur du gestionnaire SQL Access

26

Chapitre 4

SQLClearParam (IDInstruction, NumParametre)


Initialise le paramtre NumParametre associe IDInstruction, la valeur zro, ou une chane de longueur nulle, selon le type numrique ou chane du paramtre.

SQLClearStatement (IDConnexion, IDInstruction)


Libre les ressources associes IDInstruction. Toutefois, l'instruction par dfaut associe IDConnexion reste inchange.

SQLClearTable (IDConnexion, NomTable)


Supprime toutes les lignes dans la table appele NomTable.

SQLCommit (IDConnexion)
Valide la transaction cre par la dernire instruction SQLTransact.

SQLConnect (IDConnexion, ChaineConnexion)


Le paramtre ChaineConnexion correspond l'objet ConnectionString tel qu'il est dcrit dans la plupart des documentations consacres ADO (L'ouvrage Rfrence de l'API ADO de Microsoft tant sans doute le plus complet). Il s'agit d'un paramtre qu'il peut s'avrer ncessaire de modifier dans une application InTouch en vue d'amliorer les performances d'un fournisseur OLE DB original dans le cas concret d'un systme de bases de donnes. Une prsentation courante du paramtre ChaineConnexion consiste en diffrents composants spars par des points-virgules. Le premier composant est normalement spcifi sous la forme Provider=NomProducteur, o NomProducteur correspond au fournisseur OLE DB du systme de base de donnes utilis. Les fonctions SQLConnect existantes dans les applications InTouch ne disposant pas du mot-cl Provider dans le paramtre ChaineConnexion, ADO utilise par consquent le fournisseur Microsoft OLE DB par dfaut pour ODBC, c'est dire MSDASQL.DLL. Les anciennes applications InTouch continueront de fonctionner, mais il est fortement recommand de modifier le paramtre ChaineConnexion afin d'utiliser le fournisseur OLE DB d'origine. Exemples de ChaineConnexion : Exemple 1 Fournisseur Microsoft OLE DB pour Microsoft Jet (utilisation recommande) "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 donnes Microsoft Access). Exemple 2 Fournisseur Microsoft OLE DB pour ODBC (utilisant le fournisseur MSDASQL par dfaut pour MS Access): "Provider=MSDASQL;DSN=DSNStr;UID=UserName;PWD=PasswordStr;"

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

27

Remarque User ID et uid peuvent tre utiliss indiffremment, tout comme Password et pwd. Cependant, comme indiqu prcdemment, il est recommand de faire appel Microsoft.Jet.OLEDB.4.0 dans le paramtre ChaineConnexion. Exemple 3 Fournisseur Microsoft OLE DB pour SQL Server (utilisation recommande) "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 recommande) "Provider=SQLOLEDB;uid=sa;pwd=;Database=MyDB" Exemple 5 Fournisseur Microsoft OLE DB pour ODBC (utilisant le fournisseur MSDASQL par dfaut pour SQL Server): "DSN=Pubs;UID=sa;PWD=;" Exemple 6 Fournisseur Microsoft OLE DB pour ODBC (utilisant le fournisseur MSDASQL par dfaut pour SQL Server): "Data Source=Pubs;User ID=sa;" "Password=;" Remarque Il est possible de changer Data Source par Server, et de mme pour Initial Catalog et Database. Exemple 7 Fournisseur Microsoft OLE DB pour Oracle (utilisation recommande) "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 systme de base de donnes chaque excution russie.

SQLCreateTable (IDConnexion, NomTable, NomModele)


Cre une table appele NomTable, utilisant NomModele.

SQLDelete (IDConnexion, NomTable, ExprWhere)


Supprime les lignes vrifiant la clause ExprWhere dans la table NomTable.

Guide de l'utilisateur du gestionnaire SQL Access

28

Chapitre 4

SQLDisconnect (IDConnexion)
Dconnexion de la base de donnes, avec libration des ressources cres 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 appele NomTable dans la base de donnes.

SQLEnd (IDConnexion)
Libration des ressources lies la table logique associe IDConnexion.

SQLErrorMsg (CodeResultat)
Renvoie un CodeResultat avec la valeur -1 en cas d'erreur mise par le fournisseur de la base de donnes. 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, Dpannage .

SQLExecute (IDConnexion, ListeLiens, IDInstruction)


Excute l'instruction associe IDInstruction (requte de MS Access, procdure stocke de MS SQL Server ou une instruction de texte SQL). Le paramtre ListeLiens peut tre une chane de longueur nulle. Lorsque IDInstruction est associ une requte renvoyant une ligne, le rsultat de SQLExecute sert mettre jour la table logique. Lorsque la liste de liens spcifie existe, le rsultat est associ au paramtre ListeLiens. Une liste de liens de longueur zro est utile dans les cas connus d'avance, o le paramtre IDInstruction n'est pas associ une requte de ligne.

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

SQLGetRecord (IDConnexion, NumeroEnreg)


Se place sur le numro de ligne NumeroEnreg dans la la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLInsert(IDConnexion, NomTable, ListeLiens)


Insre une ligne dans la table NomTable partir des valeurs actuelles des variables InTouch.

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

29

SQLInsertEnd(IDConnexion, IDInstruction)
Libre les ressources associes IDInstruction qui ont t cres par SQLInsertPrepare.

SQLInsertExecute(IDConnexion, ListeLiens, IDInstruction)


Insre une ligne, partir des valeurs actuelles des variables InTouch, dans la table identifie par la fonction SQLInsertPrepare prcdente. Dans le cas d'une table MS SQL Server, si le paramtre ListeLiens compte un champ cl d'identit, il faut dfinir l'option IDENTITY_INSERT avant de lancer l'excution 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 dplace la dernire 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 dfaut correspondant IDConnexion.

SQLManageDSN(IDConnexion)
Le paramtre 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 ncessaire d'tablir une connexion une base de donnes avant d'appeler cette fonction. Exemple
SQLManageDSN( 0 )

Guide de l'utilisateur du gestionnaire SQL Access

30

Chapitre 4

SQLNext(IDConnexion)
Se dplace 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 recommande est la suivante :
DIM TEMP AS INTEGER; TEMP = SQLNumRows(IDConnexion); IF (TEMP >= 0) THEN NombreCols= TEMP; ELSE CodeResultat = TEMP; ENDIF;

Dfinition Une instruction par dfaut est une instruction associe un ID de connexion. Il peut s'agir d'une instruction de texte SQL (SELECT, INSERT, DELETE ou UPDATE), le nom d'une requte dans MS Access (avec ou sans paramtres) ou le nom d'une procdure stocke de MS SQL Server (avec ou sans paramtres). L'instruction par dfaut est modifie par les fonctions SQLLoadStatement, SQLSetStatement et SQLAppendStatement. Elle est utilise par la fonction SQLExecute lorsque le paramtre IDInstruction = 0 est dfini.

SQLPrepareStatement(IDConnexion, IDInstruction)
Prpare l'instruction par dfaut et renvoie un IDInstruction (1, 2, 3 et ainsi de suite). Cette prparation est utile pour les instructions dont les paramtres doivent tre dfinis l'aide des fonctions SQLSetParam{Type}. SQLHandle apparat comme deuxime paramtre de cette fonction dans des versions prcdentes de SQL Access. La version actuelle a cependant rebaptis SQLHandle IDInstruction pour toutes les fonctions. Le comportement de la fonction reste le mme.

SQLPrev(IDConnexion)
Se dplace la ligne prcdente de la table logique et renvoie les valeurs correspondantes dans des variables InTouch.

SQLRollback(IDConnexion)
Annule la transaction cre par la dernire instruction SQLTransact.

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

31

SQLSelect(IDConnexion, NomTable, ListeLiens, ExprWhere, ExprOrderBy)


Demande la base de donnes d'extraire des informations d'une table. Lors de l'excution de la fonction SQLSelect() une table de rsultats provisoire est cre en mmoire : elle contient des enregistrements que vous pouvez parcourir l'aide des commandes SQLFirst(), SQLLast(), SQLNext(), SQLNumRows et SQLPrev(). Excute l'instruction :
SELECT FROM NomTable WHERE ExprWhere ORDER BY ExprOrderBy

En cas d'excution russie de l'instruction, un jeu d'enregistrements temporaires (dsign comme une table logique) est alors cr. Le paramtre ListeLiens est alors utilis pour associer des variables InTouch aux colonnes de cette table logique, afin de prparer l'appel des fonctions SQLFirst, SQLPrev, SQLNext, SQLLast et SQLNumRows. La table logique reste valide, mme en l'absence de lignes. C'est le cas, par exemple, si le rsultat de ExprWhere est Faux pour tous les enregistrements.

SQLSetParamChar(IDInstruction, NumParametre, Valeur, Longueur)


Initialise le paramtre NumParametre associ IDInstruction une valeur de type chane de caractres (la chane pouvant compter un seul caractre). Le dernier paramtre de la fonction spcifie la longueur maximum du paramtre. Si la longueur de la chane Valeur est suprieure la longueur spcifie, la chane Valeur est tronque la longueur spcifie. Si la longueur spcifie est 0, toute la longueur de Valeur est utilise.

SQLSetParamDate(IDInstruction, NumParametre, Valeur)


Initialise le paramtre NumParametre associ IDInstruction une valeur de type date. L'heure considre est 12:00:00 AM (c'est dire, le dbut de la date indique).

SQLSetParamDateTime(IDInstruction, NumParametre, Valeur, Precision)


Initialise le paramtre NumParametre, associ IDInstruction, une valeur de type date/heure.

Guide de l'utilisateur du gestionnaire SQL Access

32

Chapitre 4

SQLSetParamDecimal(IDInstruction, NumParametre, Valeur, Precision, DegrePrecision)


Initialise le paramtre NumParametre, associ IDInstruction, une valeur de type dcimal. Valeur est soit une chane (ou une variable InTouch de type message) reprsentant un nombre dcimal (123.456) soit une valeur numrique (ou une variable InTouch de type mmoire rel). Pour s'assurer de la prcision du paramtre, il est prfrable d'utiliser une variable de type message, au lieu d'une variable de type rel. La fonction s'excutera correctement si le paramtre Valeur doit cependant tre un nombre en virgule flottante (une valeur de type rel renvoye par un serveur d'E/S, par exemple). Mais dans ce cas, les limites inhrentes la reprsentation des nombres en virgule flottante ne permettent plus de garantir une prcision leve. Precision est le nombre total de chiffres de la valeur et DegrePrecision celui droite de la virgule dcimale.

SQLSetParamFloat(IDInstruction, NumParametre, Valeur)


Initialise le paramtre NumParametre, associ IDInstruction un nombre sign en virgule flottante de 64 bit.

SQLSetParamInt(IDInstruction, NumParametre, Valeur)


Initialise le paramtre NumParametre, associ IDInstruction un nombre entier sign de 16 bits.

SQLSetParamLong(IDInstruction, NumParametre, Valeur)


Initialise le paramtre NumParametre, associ IDInstruction un nombre entier sign de 32 bits.

SQLSetParamNull(IDInstruction, NumParametre, Type, Precision, DegrePrecision)


Initialise le paramtre NumParametre, associ IDInstruction, NULL. Le paramtre Type peut avoir la valeur suivante : 0: chane 1: date/heure 2: entier 3: float 4: dcimal

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

33

Dans MS SQL Server, la comparaison avec une valeur NULL est contrle par l'option ANSI_NULLS. Le moment auquel l'option s'applique dpend du systme de base de donnes. Dans SQL Server 7.0, l'option est applique lors de la cration de l'objet (non au moment o la requte est excute). Lorsqu'une procdure stocke est cre SQL Server 7.0, cette option prend la valeur ON par dfaut, 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 dfinir l'option OFF au moment de la cration de la procdure stocke. La fonction SQLSetParamNull ne s'excutera 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 procdure stocke cre 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 excuter 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 paramtre NumParametre, associ IDInstruction, une valeur de type heure. La date courante du systme est utilise avec l'heure spcifie.

Guide de l'utilisateur du gestionnaire SQL Access

34

Chapitre 4

SQLSetStatement(IDConnexion, InstructionSQL)
Dfinit l'instruction SQLStatement dans l'instruction SQL par dfaut pour IDConnexion.

SQLTransact(IDConnexion)
Dmarrage dune transaction de base de donnes. Si le fournisseur OLE DB sous-jacent du systme de base de donnes 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 premire et la dernire transaction.

SQLUpdate(IDConnexion, NomTable, ListeLiens, ExprWhere)


Utilise les valeurs courantes des variables InTouch pour mettre jour toutes les lignes de la table NomTable qui vrifient la clause ExprWhere.

SQLUpdateCurrent(IDConnexion)
Met jour la ligne courante de la table logique l'aide des variables InTouch associes aux champs de la table via la liste de liens spcifie dans SQLSelect ou SQLExecute. Les lignes identiques la ligne courante sont toutes mises jour. Il peut arriver que la fonction renvoie une erreur aprs 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. Crez un champ cl dans la table, pour viter que les lignes ne figurent comme identiques. Il est fortement recommand que toutes les tables utilises 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 NumroAuto (sous MS Access) ou un champ de type entier utilis comme cl d'identit de la ligne (sous SQL Server) pour dfinir une cl primaire et faire en sorte que la fonction SQLUpdateCurrent ne s'applique qu' une seule ligne. Il n'est pas ncessaire d'inclure ce champ de cl primaire dans la liste des liens.

Paramtres SQL
La section suivante dcrit les paramtres requis pour chaque fonction SQL. Lorsque vous indiquez dans un script un paramtre en le balisant avec des guillemets anglais (par exemple "Paramtre1"), le script utilise la chane exacte. Si vous n'utilisez pas de guillemets, Paramtre1 est considr comme une variable et le systme recherche alors la valeur qui lui est affecte 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

Utilisation des fonctions SQL

35

"c:\main\file" est une chane littrale. La plupart des fonctions SQL utilisent un ou plusieurs des paramtres suivants :

ListeLiens
Correspond l'un des noms de liste de liens du fichier SQL.DEF.

IDConnexion
Entier cr par l'utilisateur et stock en mmoire, reprsentant le numro d'identification (ID) affect par la fonction SQLConnect chaque connexion la base de donnes.

ChaineConnexion
Chane permettant d'identifier la base de donnes et toute autre information de connexion utilise dans la fonction SQLConnect().

MsgErreur
Variable 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, Dpannage .

NomFichier
Nom du fichier contenant les informations

LongMax
Taille maximale de la colonne laquelle ce paramtre est associ. Ceci dtermine si le paramtre est de type Caractre variable ou Caractre variable long. Si LongMax est infrieur ou gal la longueur maximum de chane autorise dans la base de donnes, le paramtre est de type Caractre variable. S'il est suprieur, il est de type Caractre variable long.

Guide de l'utilisateur du gestionnaire SQL Access

36

Chapitre 4

Expression OrderBy
Dfinit les colonnes et le sens du tri. Seuls les noms de colonne peuvent tre utiliss pour le tri. Cette expression doit tre formate : NomColonne [ASC|DESC] Pour trier la table slectionne en fonction d'une colonne spcifique (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 slectionne en fonction d'une premire colonne (par exemple celle relative la temprature) en ordre croissant et d'une deuxime colonne (par exemple celle relative l'heure) en ordre dcroissant, la syntaxe doit tre la suivante : "temprature ASC, heure DESC"

NumParametre
Numro effectif du paramtre dans l'instruction

TypeParametre
Type de donnes du paramtre indiqu. Valeurs valides : Type Char Var Char Dcimal Entier Entier court Float Double Precision Float DateTime Date Time Aucun Type Description Chane de longueur fixe remplie de blancs Chane de longueur variable Nombre BCD Entier sign sur 4 octets Entier sign sur 2 octets Virgule flottante sur 4 octets Virgule flottante sur 8 octets Valeur d'heure/date sur 8 octets Valeur d'heure/date sur 4 octets Valeur d'heure/date sur 4 octets Aucun type de donnes

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

37

ValeurParametre
Valeur effective dfinir

Precision
Prcision de la valeur dcimale, taille maximale du caractre ou longueur en octets de la valeur de date/d'heure.

NumeroEnreg.
Numro de l'enregistrement extraire

CodeResultat
Variable de type entier renvoye par la plupart des fonctions SQL. CodeResultat est renvoy avec la valeur zro (0) si la fonction aboutit, et un entier ngatif dans le cas contraire. Pour de plus amples informations, reportez-vous au Chapitre 5, Dpannage .

DegrePrecision
Prcision de la valeur dcimale. Cette valeur n'est ncessaire qu'avec un paramtre dfini sur zro.

IDInstruction
Lorsque vous utilisez les instructions de fonctionnalits avances, SQL renvoie un IDInstruction, dont il se sert en interne.

InstructionSQL
Instruction relle, par exemple :
ResultatCode=SQLSetStatement(IDConnexion,Select NoLot, NomLot from InfoLot);

NomTable
Nom de la table de base de donnes laquelle vous souhaitez accder.

NomModele
Nom de la dfinition de modle utiliser.

ExpressionWhere
Dfinit 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 oprateur_comparaison expression

Guide de l'utilisateur du gestionnaire SQL Access

38

Chapitre 4

Remarque Si la colonne est de type caractre, l'expression doit tre entre entre apostrophes. Lexemple suivant slectionnera toutes les lignes dont les noms de colonne contiennent la valeur IDEmploye:
nom = 'IDEmploye'

L'exemple suivant slectionne toutes les lignes contenant des rfrences de 100 199 :
reference>=100 and reference<200

L'exemple suivant slectionne toutes les lignes dont la colonne Temprature contient une valeur suprieure 350 :
temperature>350

Utilisation de fonctions SQL dans des QuickScripts InTouch


Pour insrer automatiquement des fonctions SQL dans des QuickScripts InTouch, cliquez sur le bouton Additionnelles dans la bote de dialogue de l'diteur de QuickScripts. La fonction SQL choisie est automatiquement insre dans le script l'emplacement actuel du curseur. Pour de plus amples informations sur les QuickScripts InTouch, reportez-vous au chapitre 6, intitul Cration de QuickScripts dans InTouch , du Guide de l'utilisateur InTouch.

Dfinition de requtes complexes


Le Gestionnaire SQL Access vous permet de dfinir des requtes et des instructions SQL complexes personnelles. Ces requtes peuvent tre labores de manire dynamique ou tre incluses dans des fichiers externes. En outre, elles peuvent contenir des paramtres transmettre la requte lors de l'excution. Ces requtes doivent alors tre excutes, renvoyant ventuellement des ensembles de rsultats. L'API (Application Programming Interface Interface de programme d'application) du Gestionnaire SQL Access vous permet d'excuter toute instruction SQL pouvant tre traite par votre base de donnes et d'extraire le rsultat de cette requte. Vous pouvez galement excuter les procdures stockes sous forme de produit complmentaire. (Ces procdures ne sont pas compltement prises en charge.) Pour plus d'informations sur les procdures stockes, reportez-vous la section Prise en charge des procdures stockes .

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

39

laboration dynamique de requtes


Pour laborer des requtes de manire dynamique, deux fonctions supplmentaires sont ncessaires : SQLSetStatement() et SQLAppendStatement(). SQLSetStatement() dmarre une nouvelle instruction SQL. Il peut s'agir de n'importe quelle instruction SQL valide, y compris le nom d'une procdure stocke. tant donn qu'InTouch ne prend en charge que les chanes comportant moins de 131 caractres, une fonction, dnomme, SQLAppendStatement() vous est fournie afin de permettre la concatnation de chanes supplmentaires dans une instruction. Remarque Le texte en gras fait rfrence aux commandes du langage de requte SQL. Exemple
CodeResultat = SQLSetStatement ( IDConnexion, "Select NoLot, NomLot, DescriptionLot, QuantitLot from InfoLot, InfoProduction" ); CodeResultat = SQLAppendStatement (IDConnexion, " where InfoLot.NoLot = InfoProduction.NoLot" ); CodeResultat = SQLAppendStatement (IDConnexion, " order by NoLot,NomLot,QuantitLot" );

L'instruction peut maintenant tre excute. 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 donnes.

Lecture d'instructions SQL partir d'un fichier


Vous pouvez concevoir votre requte dans d'autres logiciels (par exemple Microsoft Access) ou dans des outils de base de donnes tiers, puis utiliser SQL Access pour InTouch pour l'excuter. tant donn que plusieurs de ces logiciels permettent de gnrer l'instruction SQL, il est facile d'enregistrer cette dernire dans un fichier l'aide de la fonction SQLLoadStatement(). Exemple
CodeResultat = SQLLoadStatement (IDConnexion, "c:\myappdir\lotquery.sql");

L'instruction peut maintenant tre excute.

Modification des instructions SQL tendues


Pour que vous puissiez bnficier de fonctionnalits SQL compltes, le Gestionnaire SQL Access vous permet de dfinir une clause where contenant une valeur pour une variable InTouch. Pour pouvoir dfinir les paramtres SQL dans l'environnement d'exploitation, les fonctions suivantes vous sont proposes :

SQLPrepareStatement()

Guide de l'utilisateur du gestionnaire SQL Access

40

Chapitre 4

SQLSetParamType () SQLClearStatement() SQLClearParam()

Pour effectuer la substitution des paramtres dans une instruction SQL, placez un point d'interrogation l'emplacement o vous souhaitez indiquer ultrieurement un paramtre. L'instruction est alors "prpare", les paramtres sont "dfinis" dans l'instruction, puis l'instruction est excute. SQLPrepareStatement() prpare l'instruction en vue de son excution. Cette fonction ne permet pas d'excuter l'instruction ; elle se contente de l'activer pour que vous puissiez dfinir des valeurs pour les paramtres. SQLSetParamType() est un ensemble de fonctions vous permettant de dfinir des valeurs pour les paramtres de l'instruction SQL. Exemple
CodeResultat = SQLSetStatement ( IDConnexion, "Select NoLot, NomLot, DescriptionLot, QuantitLot from InfoLot, InfoProduction" ); CodeResultat = SQLAppendStatement (IDConnexion, " WHERE InfoLot.NoLot = ?"); CodeResultat = SQLAppendStatement (IDConnexion, " order by NoLot,NomLot,QuantitLot" ); CodeResultat = SQLPrepareStatement (IDConnexion, IDInstruction); {insre le pointeur de l'instruction dans la variable 'IDInstruction'} CodeResultat = SQLSetParamInt (IDInstruction, 1, NumLotVar); {attribue la valeur de NumLotVar au paramtre}

L'instruction ne possdant qu'un seul paramtre, vous pouvez prsent l'excuter. Une fois que vous l'avez excute et si vous n'en avez plus besoin, vous pouvez appeler la fonction SQLClearStatement() pour librer les ressources qui lui sont associes. Remarque Vous pouvez appeler SQLEnd() afin de librer les instructions SQL non nommes (c'est--dire celles gnres par des fonctions SQL Access existantes), ainsi que les instructions non prpares cres par les fonctions SQLSetStatement() et SQLLoadStatement().

Excution des instructions SQL tendues


Lorsque l'instruction a t labore de manire dynamique ou bien extraite d'un fichier, puis ventuellement prpare et modifie, vous pouvez l'excuter. L'API du Gestionnaire SQL Access utilise pour cela la fonction SQLExecute(). SQLExecute() excute soit l'instruction active ( savoir celle gnre par la fonction SQLSetStatement() ou SQLLoadStatement()), soit l'instruction pralablement prpare et dsigne par le paramtre de pointeur. Exemple 1

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

41

CodeResultat = SQLLoadStatement (IDConnexion, "c:\myappdir\lotquery.sql"); CodeResultat = SQLExecute (IDConnexion, "ListeLiens", 0); {place les rsultats de l'instruction dans les variables dfinies dans la liste des liens. Le pointeur d'instruction prpar a pour valeur zro.} CodeResultat = SQLNext (IDConnexion); {Extrait les rsultats de l'instruction}

Exemple 2
CodeResultat = SQLSetStatement ( IDConnexion, "Select NoLot, NomLot, DescriptionLot, QuantitLot from InfoLot, InfoProduction" ); CodeResultat = SQLAppendStatement (IDConnexion, " WHERE InfoLot.NoLot = ?"); {le point d'interrogation signifie que le paramtre devra tre dfini} CodeResultat = SQLAppendStatement (IDConnexion, " order by NoLot,NomLot,QuantitLot" ); CodeResultat = SQLPrepareStatement (IDConnexion, IDInstruction); {insre le pointeur de l'instruction dans la variable 'StatementId'} CodeResultat = SQLSetParamInt (IDInstruction, 1, NumLotVar); {attribue la valeur de NumLotVar au paramtre} CodeResultat = SQLExecute (IDConnexion, "ListeLiens", IDInstruction); {place les rsultats de l'instruction Select dans les variables indiques dans ListeLiens. Le pointeur d'instruction prpar figure dans IDInstruction} CodeResultat = SQLNext (IDConnexion); {extrait les rsultats de l'instruction}

Exemple 3 SQLSetStatement - Cette instruction doit tre utilise pour les requtes complexes et les chanes contenant plus de 131 caractres. Pour les chanes de plus de 131 caractres, 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 zro est attribue au paramtre IDInstruction afin que l'instruction n'ait pas appeler SQLPrepare(IDConnection, IDInstruction) avant l'instruction EXECUTE. Ce paramtre 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

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 paramtre IDInstruction est cr par la fonction SQLPrepareStatement, puis utilis dans la fonction SQLExecute. Pour terminer cette instruction, utilisez SQLClearStatement pour librer des ressources et IDInstruction.

Prise en charge des procdures stockes


La fonction SQLExecute() prend en charge l'excution de certaines procdures stockes. Supposez, par exemple, que vous vouliez crer sur le serveur de base de donnes une procdure stocke dnomme "ProcInfoLot", contenant l'instruction suivante : "SELECT NoLot, NomLot FROM InfoLot". Vous devez alors crire le QuickScript InTouch suivant pour excuter la procdure et extraire les rsultats :

Utilisation de Microsoft SQL Server


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

CodeResultat = SQLNext (IDConnexion); {extrait les rsultats de l'instruction}

Utilisation d'Oracle ou de Microsoft Access


CodeResultat = SQLSetStatement (IDConnexion, "{CALL ProcInfoLot}"); CodeResultat = SQLExecute(IDConnexion, "ListeLiens", 0);

CodeResultat = SQLNext (IDConnexion); {extrait les rsultats de l'instruction}

Rcupration de valeurs dans les variables InTouch


Les cinq fonctions de script SQLFirst, SQLPrev, SQLNext, SQLLast et SQLGetRecord permettent le dplacement 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 associe sera initialise zro ou une chane de longueur nulle, selon le type analogique ou message. Si la longueur d'une chane de la base de donnes dpasse 131 caractres, seuls les 131 premiers caractres sont recopis dans la variable InTouch de type message.

Guide de l'utilisateur du gestionnaire SQL Access

Utilisation des fonctions SQL

43

Conservation de variables InTouch dans des champs de base de donnes


Les quatre fonctions de script SQLUpdate, SQLUpdateCurrent, SQLInsert et SQLInsertExecute sont capables d'utiliser les valeurs de variables InTouch pour des oprations de mise jour ou d'insertion dans une table. Si la taille d'une variable InTouch de type message dpasse la longueur dfinie dans la table pour le champ de texte correspondant, cette dernire dterminera le nombre de caractres 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 insrer des valeurs NULL l'intrieur de bases de donnes, dans les situations o un tel champ figure dans la liste des liens. Pour insrer des valeurs nulles dans un champ (qui aura t dfini 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 rgles de mise jour de donnes


Des erreurs accidentelles peuvent se produire dans l'application des rgles permettant de collecter des valeurs dans des variables InTouch, et de conserver les donnes dans des champs de table. Ce risque apparat dans les scnarios suivants.

Conversion non intentionnelle de valeur NULL en zros ou en chane vide


L'excution de l'une des fonctions de navigation collecte des valeurs NULL dans des variables InTouch sous forme de valeurs zro ou de chanes de longueur zro (par exemple, Variable1). Aprs la mise jour de certaines autres variables dans la liste des liens, l'excution de la fonction SQLUpdateCurrent enregistre les valeurs zro ou les chanes de longueur zro dans la table, en crasant la valeur NULL associe Variable1. L'excution de la fonction SQLUpdate utilisera les valeurs zro ou ces chanes de longueur zro de la Variable1 (et non la valeur NULL elle-mme) pour mettre jour les lignes.

Insertion non intentionnelle de zros ou de chanes vides dans une table


L'excution de l'une des fonctions de navigation collecte des valeurs NULL dans des variables InTouch sous forme de valeurs zro ou de chanes de longueur zro (par exemple, Variable1). Aprs une mise jour de variables dans la liste des liens, les fonctions SQLInsert ou SQLInsertExecute utilisent des valeurs zro ou des chanes de longueur zro (celles de Variable1) pour les conserver dans la table (et non pas une valeur NULL).

Guide de l'utilisateur du gestionnaire SQL Access

44

Chapitre 4

Guide de l'utilisateur du gestionnaire SQL Access

Dpannage

45

C H A P I T R E

Dpannage

Ce chapitre explique comment dpanner des applications SQL en utilisant les codes d'erreur renvoys par les fonctions SQL. La premire partie dcrit la fonction SQLErrorMsg() et comprend un tableau des codes de rsultat SQL accompagns des messages d'erreur correspondants. La deuxime partie contient des tableaux regroupant des messages d'erreur spcifiques.

Sommaire Dpannage des fonctions Messages d'erreur spcifiques aux bases de donnes Mise au point de SQL Access

Dpannage des fonctions


Toutes les fonctions SQL retournent un Code de rsultats pouvant servir des fins de dpannage. La fonction SQLErrorMsg() retourne le message d'erreur associ ce CodeResultat. Exemple
MsgErreur=SQLErrorMsg (CodeResultat);

o : MsgErreur est une variable de type message. CodeResultat est une valeur entire issue d'une fonction SQL prcdente.

Messages d'erreur des codes de rsultat


En ce qui concerne les codes de rsultat non traits dans cette section, reportez-vous la documentation spcifique votre base de donnes et pensez consulter Wonderware Logger pour toute information complmentaire.

Guide de l'utilisateur du gestionnaire SQL Access

46

Chapitre 5

La fonction SQLErrorMsg() dfinit la valeur de la variable de type message MsgErreur de InTouch. Vous trouverez ci-dessous la liste de certains codes de rsultat SQL que vous pouvez rencontrer accompagns des messages d'erreur correspondants ainsi que de leur description : Code de rsultats 0 -1 -2 Message d'erreur Aucune erreur ne s'est produite. <Message du fournisseur DB> Impossible d'excuter une instruction vide Description La commande a russi. <Un exemple concret de message d'erreur du fournisseur DB> SQLExecute(IDConnexion, ListeLiens, 0) a t excut sans un appel pralable SQLSetStatement, ou avec SQLLoadStatement avec une instruction non vide. Une valeur entire ou relle partir de la base de donnes est nulle. Il s'agit uniquement d'un avertissement transmis Wonderware Logger. SQLSetParamI {Type} est appel avec un paramtre ID incorrect. Exemple de liste de paramtres incorrects : 1, 2, 3, 5 (4 est manquant). SQLSetParamNull est appel avec un type incorrect. SQLSetParam {Type} est appel avec un autre type que celui d'un paramtre existant. SQLSetParam {Type} est appel avec un nouveau paramtre ID aprs avoir excut l'instruction correctement. Un format de date/heure incorrect a t trouv, par exemple, lors de l'excution des fonctions SQLSetParamTime, SQLInsertExecute ou SQLUpdateCurrent. Un format dcimal incorrect a t trouv, par exemple, lors de l'excution des fonctions SQLSetParamDecimal, SQLInsertExecute ou SQLUpdateCurrent. Un format de devise incorrect a t trouv, par exemple, lors de l'excution des fonctions SQLInsertExecute ou SQLUpdateCurrent. SQLInsertEnd est invoqu pour une instruction ID cre par SQLPrepareStatement, ou SQLClearStatement est appel pour une instruction ID cre par SQLInsertPrepare. Mmoire insuffisante pour excuter cette fonction.

-4

La valeur renvoye est NULL

-5 -7 -8 -9 -10

Plus aucune ligne rapporter Le dernier enregistrement de la table a t atteint. Paramtre ID incorrect Liste de paramtres incorrects Type incorrect pour un paramtre NULL La modification du type de donnes du paramtre n'est pas autorise L'ajout d'un paramtre aprs avoir excut l'instruction n'est pas autoris. Format de date/heure incorrect

-11

-12

-13

Format dcimal incorrect

-14

Format de devise incorrect

-15

Type d'instruction incorrect pour cette opration

-1001

Mmoire sature

Guide de l'utilisateur du gestionnaire SQL Access

Dpannage

47

Code de rsultats -1002 -1003 -1004 -1005 -1006

Message d'erreur Connexion incorrecte

Description L'ID de connexion pass cette fonction est incorrect. Le nom du modle de table spcifi n'existe pas. Une erreur interne s'est produite. Contactez le Support technique. Attention - la chane lue partir de la base de donnes est nulle. Il s'agit uniquement d'un avertissement transmis Wonderware Logger. Attention - la chane lue partir de la base de donnes comporte plus de 131 caractres et est tronque sur slection. L'avertissement est transmis Wonderware Logger. Il n'y a pas de clause WHERE pour Delete. Consultez WWLogger pour obtenir une description plus prcise de la connexion qui a chou.

Aucune liste de liens trouve Le nom de la liste de liens spcifi n'existe pas Aucun modle trouv Erreur interne La chane tait nulle.

-1007

La chane est tronque.

-1008 -1009 -1010

Aucune clause WHERE chec de la connexion

La base de donnes spcifie La base de donnes spcifie n'existe pas. sur la partie de DB= de la chane de connexion n'existe pas. Aucune ligne n'a t slectionne. Une commande SQLNumRows(), SQLFirst(), SQLNext(), SQLLast, ou SQLPrev() a t lance sans excution pralable de la commande SQLSelect() ou SQLExecute. SQLLoadStatement est appel avec un nom de fichier introuvable.

-1011

-1013

Impossible de trouver le fichier charger

Messages d'erreur spcifiques aux bases de donnes


Oracle
Vrifiez les messages d'erreur spcifiques dans la documentation de Oracle Server pour trouver des solutions.

Guide de l'utilisateur du gestionnaire SQL Access

48

Chapitre 5

Microsoft SQL Server


Message d'erreur Vous ne pouvez pas avoir plusieurs liaisons actives en mme temps Solution Vous tentez d'excuter une commande SQL la suite d'une fonction SQLSelect(). Lancez une fonction SQLEnd() pour librer les ressources systme partir de SQLSelect(), ou utilisez une IDConnexion distincte pour la deuxime instruction.

Mmoire insuffisante pour traiter Tentez de redmarrer la station de travail la commande client. Nom de table incorrect Le nom de table n'existe pas dans la base de donnes que vous utilisez. Essayez DB=nom base de donnes.

Vrifiez les messages d'erreur spcifiques dans la documentation de Microsoft SQL Server pour trouver des solutions.

Mise au point de SQL Access


L'indicateur SQLTrace=1 dfini 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 .

Guide de l'utilisateur du gestionnaire SQL Access

Mots-cls rservs

49

A N N E X E

Mots-cls rservs

SQL Access et ODBC


Cette annexe rpertorie les mots-cls dont l'utilisation est exclue dans les listes de liens et les modles de tables SQL Access, ainsi que dans l'interface Open Database Connectivity (ODBC). Si un mot-cl rserv est utilis comme nom de colonne dans une liste de liens ou un modle de table, un message d'erreur est gnr dans Wonderware Logger. Le type d'erreur gnre dpend du pilote ODBC utilis et de l'emplacement du motcl. Par exemple, l'une des erreurs les plus frquentes consiste utiliser le libell DATE comme nom de colonne dans une liste de liens ou un modle de table. Pour y remdier, utilisez un nom lgrement diffrent, par exemple laDATE. Les mots-cls rservs dfinissent le langage SQL (Structured Query Language) utilis par InTouch SQL Access. Ces mots-cls sont galement reconnus par le pilote ODBC spcifique utilis. SQL Access transmet la commande SQL contenant un ou plusieurs mots-cls au fichier ODBC.DLL. Si la commande SQL ne peut pas tre interprte correctement, SQL Access gnre un message d'erreur dans Wonderware Logger. Les mots-cls rservs pour SQL Access et ODBC sont rpertoris ci-dessous, par ordre alphabtique:. ABSOLUTE ADA ADD ALL ALLOCATE ALTER AND ANY ARE AS ASC ASSERTION AT AUTHORIZATION AVG BEGIN BETWEEN BIT BIT_LENGTH BY CASCADE CASCADED CASE CAST CATALOG CHAR CHAR_LENGTH CHARACTER CHARACTER_LENGTH CHECK CLOSE COALESCE COBOL COLLATE COLLATION COLUMN COMMIT CONNECT CONNECTION CONSTRAINT CONSTRAINTS CONTINUE CONVERT CORRESPONDING COUNT CREATE CURRENT CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURSOR DATE DAY DEALLOCATE DEC DECIMAL DECLARE DEFERRABLE DEFERRED ENTF DESC

Guide de l'utilisateur du gestionnaire SQL Access

50

Annexe A

DESCRIBE DESCRIPTOR DIAGNOSTICS DICTIONARY DISCONNECT DISPLACEMENT DISTINCT DOMAIN DOUBLE DROP ELSE ENDEESC EXCEPT EXCEPTION EXEC EXECUTE EXISTS EXTERNAL EXTRACT FALSE FETCH FIRST FLOAT FOR FOREIGN FORTRAN FOUND FROM FULL GET GLOBAL GO GOTO GRANT GROUP HAVING HOUR IDENTITY IGNORE IMMEDIATE IN INCLUDE INDEX INDICATOR INITIALLY INNER INPUT INSENSITIVE EINFGEN INTEGER INTERSECT INTERVALL INTO IS ISOLATION JOIN

KEY LANGUAGE LAST LEFT LEVEL LIKE LOCAL LOWER MATCH MAX MIN MINUTE MODULE MONTH MUMPS NAMES NATIONAL NCHAR NEXT NONE NOT NULL NULLIF NUMERIC OCTET_LENGTH OF OFF ON ONLY OPEN OPRN OPTION OR ORDER OUTER OUTPUT OVERLAPS PARTIAL PASCAL PLI POSITION PRECISION PREPARE PRESERVE PRIMARY PRIOR PRIVILEGES PROCEDURE PUBLIC RESTRICT REVOKE RIGHT ROLLBACK ROWS

SCHEMA SCROLL SECOND SECTION SELECT SEQUENCE SET SIZE SMALLINT SOME SQL SQLCA SQLCODE SQLERROR SQLSTATE SQLWARNING SUBSTRING SUM SYSTEM TABLE TEMPORARY THEN TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINU TO TRANSACTION TRANSLATE TRANSLATION TRUE UNION UNIQUE UNKNOWN UPDATE UPPER USAGE USING WERT VALUES VARCHAR VARING VIEW WHEN WHENEVER WHERE WITH WORK YEAR

Guide de l'utilisateur du gestionnaire SQL Access

Mots-cls rservs

51

InTouch
Les mots-cls rservs par InTouch sont les suivant: As Call Dim Discrete Integer Message Real Return RetVal

Guide de l'utilisateur du gestionnaire SQL Access

52

Annexe A

Guide de l'utilisateur du gestionnaire SQL Access

53

Index
A
propos de ce guide 6

B
Base de donnes 5 Bases de donnes prises en charge 11 Microsoft Access 12 Microsoft SQL Server 11 BindListName 24

C
ChaineConnexion 35 CodeResultat 37, 45 Commande Modle de table 23 Commandes Modle de table 23 Compatibilit ODBC 8 Configuration d'un modle de table 21 Configuration d'une liste de liens 16 Configuration du module SQL Access Manager 15 CSV 6, 24

D
Dfinition de requtes complexes 38 DegrePrecision 37 Dpannage 45 Dpannage des fonctions SQL 45

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

I
IDConnexion 35 IDInstruction 37 InstructionSQL 37 Introduction au module SQL Access Manager 5

E
laboration dynamique de requtes 39 Enregistrement de la date et de l'heure dans un champ de date Oracle 10 Excution des instructions SQL tendues 40 Explorateur de variables 17 ExpressionOrderBy 36 ExpressionWhere 37

L
Langage de requtes structur 5 Lecture d'instructions SQL partir d'un fichier 39 Liste de liens 16 cration 16 Explorateur de variables 17 modification 19 suppression 19 LongMax 35

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

M
Manuels en ligne 7 Messages d'erreur des codes de rsultat 45 Messages d'erreur spcifiques aux bases de donnes Microsoft SQL Server 48 Microsoft Access Connexion requise 12 Types de donnes pris en charge 13, 14 Microsoft SQL Server Connexion requise 11 Types de donnes pris en charge 12, 14 Modle de table 21 cration 21 modification 23 suppression 23 modification d'un modle de table 23

Guide de lutilisateur du gestionnaire SQL Access

54

modification d'une liste de liens 19 Modification des instructions SQL tendues 39 Mots-cls rservs 49 MsgErreur 35

S
Sparateurs 20 SQL.DEF 6, 24 SQLConnect 11 SQLErrorMsg 45 SQLInsert 20 SQLSelect 31 SQLUpdate 20, 34 suppression d'un modle de table 23 suppression d'une liste de liens 19 Syntaxe de la fonction SQL 25

N
Nom de la colonne 18 Nom du modle de table 21, 24 NomFichier 35 NomListeLiens 35 NomModele 37 NomTable 37 NumeroEnreg. 37 NumParametre 36

T
TypeParametre 36 Types de donnes pris en charge 14

O
ODBC.INI 8 Oracle Types de donnes pris en charge 14

U
Utilisation de fonctions SQL dans InTouch 38 Utilisation de Microsoft Access 12 Utilisation de Microsoft SQL Server 11 Utilisation de sparateurs spciaux 20 Utilisation des fonctions SQL 25

P
Paramtre ChaineConnexion 35 CodeResultat 37 DegrePrecision 37 ExpressionOrderBy 36 ExpressionWhere 37 IDConnexion 35 IDInstruction 37 InstructionSQL 37 LongMax 35 MsgErreur 35 NomFichier 35 NomListeLiens 35 NomModele 37 NomTable 37 NumeroEnreg. 37 NumParametre 36 Precision 37 TypeParametre 36 ValeurParametre 37 Paramtres 35 Paramtres SQL 35 Precision 37 Prsentation du module SQL Access Manager 15 Prise en charge des procdures stockes 42 Programme Administrateur ODBC 8 Programmes de support technique de Wonderware 7

V
ValeurParametre 37 Variable.Champ 18

Q
QuickScripts 38

R
Requtes Complexe 39 laboration dynamique 39

Guide de lutilisateur du gestionnaire SQL Access