
                     ASTUCES BORLAND SQL LINKS
            POUR LES UTILISATEURS PARADOX 5.0 POUR WINDOWS
            ----------------------------------------------

Ce fichier contient des informations importantes dont vous pouvez
avoir besoin si votre application Paradox 5.0 utilise Borland SQL
Links ou si vous allez construire ou utiliser une application
construite avec une version plus rcente des SQL Links. Par
exemple, si vous construisez ou utilisez des applications
construites avec Delphi.


TABLE DES MATIERES
------------------
 1. Information gnrale
 2. Pilote Informix
 3. Pilote InterBase
 4. Pilote Oracle
 5. Pilote Sybase



1. INFORMATION GENERALE
-----------------------

Le mot-cl 'sort' de la mthode Table et 'sortTo' de la mthode
TCursor manquent dans la liste des mthodes standard ObjectPAL qui
ne supportent pas SQL.



2. PILOTE INFORMIX
------------------

Mode SQLPASSTHRU et les connexions multiples Informix.
------------------------------------------------------
Cette version du pilote SQL Link Informix utilise Informix ESQL/C
4.10, qui permet une seule connexion  la fois  un serveur
Informix pour chaque station de travail. Cela signifie que vous ne
pouvez pas tre connect simultanment  deux serveurs Informix ou
 deux bases de donnes du mme serveur.

Les oprations SQL Link sur des bases de donnes Informix sont de
deux types :

- celles qui excutent des instructions SQL Pass-through (soit de
  faon interactive, soit via ObjectPAL)

- toutes les autres oprations de bases de donnes (telles que
  excuter des requtes, visualiser des tables, modifier dans des
  fiches et excuter des mthodes ObjectPAL de type tCursor, Table
  et UIObject).

Le pilote SQL Link Informix considre ces deux types d'oprations
comme des connexions diffrentes.

Si vous dfinissez SQLPASSTHRU MODE du pilote Informix  l'un des
paramtres partags (soit SHARED AUTOCOMMIT - qui est le paramtre
par dfaut, soit SHARED NOAUTOCOMMIT), vous pouvez excuter  la
fois du SQL Pass-through et des oprations non Pass-through dans
la mme connexion. Si vous dfinissez SQLPASSTHRU MODE  NOT
SHARED ou  rien, vous ne pourrez pas passer des instructions SQL
pass-through  d'autres oprations non pass-through dans la mme
session. Si votre premire opration sur le serveur est une
instruction SQL Pass-through, vous ne pourrez effectuer que des
oprations SQL Pass-through dans cette session. Si votre premire
opration sur le serveur est une opration non Pass-through, vous
ne pourrez effectuer que des oprations non Pass-through dans
cette session. Pour passer de l'une  l'autre, slectionnez, dans
la bote de dialogue Gestionnaire d'alias, l'alias de la base de
donnes  laquelle vous tes connect choisissez Dconnecter, puis
choisissez Connecter.

Si vous essayez d'effectuer une opration qui ne peut pas tre
excute parce que SQLPASSTHRU MODE n'est pas dfini afin de
permettre les connexions partages, vous pourrez voir :

- SQL Pass-through, ObjectPAL et d'autres oprations renvoyer le
  message d'erreur : "Connexions multiples non supportes".

- Vous pourrez voir l'quivalent SQL d'une requte QBE dans
  l'diteur SQL, mais vous ne pourrez pas excuter la version
  Pass-through de cette requte tant que le QBE est ouvert.

Si SQLQRYMODE est dfini  NOT SHARED et que vous avez dj
dmarr une session de travail avec QBE, suivez les tapes
ci-dessous pour excuter une requte Pass- through :

1. Utilisez Requte | Afficher SQL pour afficher l'quivalent SQL
   de la requte dans l'diteur SQL.

2. Utilisez Fichier | Enregistrer pour sauvegarder la requte en
   tant que fichier .SQL.

3. Utilisez le gestionnaire d'alias pour vous dconnecter
   explicitement du serveur Informix.

4. Utilisez le gestionnaire d'alias pour vous connecter
   explicitement au serveur Informix.

5. Slectionnez Fichier | Ouvrir | Fichier SQL pour slectionner
   la requte SQL sauvegarde.

6. Excutez la requte comme du SQL Pass-through.


Pour excuter un QBE aprs avoir dmarr une session en
pass-through :

1. Utilisez le gestionnaire d'alias pour vous dconnecter
   explicitement du serveur Informix.

2. Utilisez le gestionnaire d'alias pour vous connecter
   explicitement au serveur Informix.

3. Slectionnez Fichier | Ouvrir | Requte pour ouvrir la requte
   Borland sauvegarde.


Travailler avec des champs Informix srie.
------------------------------------------
Le type de champ Informix Srie est un type de champ "crire une
fois, lire toujours". Dans une base de donnes Informix, quand
vous insrez un nouvel enregistrement dans une table, vous pouvez
soit affecter une valeur suprieure  zro au champ Srie, soit
laisser Informix fournir une valeur pour vous. Si ce champ Srie
possde un index unique, toute valeur affecte  ce champ doit
tre unique. Une fois que l'enregistrement est valid dans la
table, cette valeur ne peut pas tre mise  jour.


Paradox pour Windows supporte tous les comportements des types
Srie Informix ci-dessus,  la condition que le serveur Informix
(et non pas vous), fournira des valeurs pour tous les champs Srie
nouvellement insrs. Ce qui signifie que quand vous crez une
fiche avec un champ li  un champ Srie Informix, Paradox
"protge" le champ Srie en le dfinissant en Lecture-seule.


Si vous voulez tre capable d'affecter votre propre valeur au
champ Srie :

1. Passez la fiche en mode conception,

2. Cliquez  droite sur le champ pour afficher le menu
   d'Inspecteur de proprits,

3. D-slectionnez Excution | Lecture Seule


Quand vous excuterez la fiche, vous pourrez spcifier la valeur 
insrer dans le champ Srie Informix, parmi les autres champs de
la table.

Rappel : vous ne pouvez pas insrer une valeur duplique pour le
champ Srie, si un index unique existe sur celui-ci. Vous ne
pourrez pas non plus modifier le champ Srie d'un enregistrement
existant.


3. PILOTE INTERBASE
-------------------

Amliorer la performance des liens de 1--plusieurs.
----------------------------------------------------
Un lien de 1--plusieurs lie souvent un index mono-champ de la
table matre au premier champ d'un index multi- champ de la table
dtail. Un exemple courant serait : COMMANDE.NUMCOM li 
DETAIL.NUMCOM, o DETAIL a un index unique sur ces champs NUMCOM
et NUMELEM. Dans InterBase 3.3, vous pouvez quelquefois amliorer
les performances en ajoutant un index non-unique sur DETAIL.NUMCOM
seulement.

Mthode beginTransaction.
-------------------------
Les amliorations dans la gestion des niveaux d'isolation de
transaction du BDE peuvent affecter votre application, si elle
utilise la mthode ObjectPAL Database : beginTransaction().
Reportez-vous  la description de beginTransaction() dans le Guide
de rfrence ObjectPAL de Paradox 5.0 ou  l'aide en ligne pour
une description des niveaux d'isolation.

A moins que vous n'utilisiez beginTransaction() pour initialiser
une transaction DirtyRead ou ReadCommitted, votre application ne
sera pas affecte par ces amliorations.

Vous pouvez utiliser votre application non modifie si vous
dfinissez DRIVER FLAGS pour le pilote InterBase (voir le fichier
LISEZSQL.TXT). Dfinir le paramtre DRIVER FLAGS rendra les
oprations de transaction compatibles avec les SQL Links Version
2.0 (ou plus anciennes), en dsactivant les amliorations pour
toutes les applications qui utilisent le pilote InterBase.

Avec SQL Links, Version 2.0 (ou plus anciennes), tous les appels
beginTransaction() initialisaient une transaction avec le niveau
d'isolation RepeatableRead. RepeatableRead tait utilis mme si
le paramtre optionnel isoLevel tait fourni. Ainsi tous les
appels beginTransaction() suivants taient quivalents et
utilisaient RepeatableRead :


   var
      db Database
      success Logical
   endVar
   success = db.beginTransaction()
   success = db.beginTransaction("DirtyRead")
   success = db.beginTransaction("ReadCommitted")
   success = db.beginTransaction("RepeatableRead")

Le nouveau support de transaction du BDE excute votre transaction
 un niveau support par le serveur au niveau ou au-dessus du
niveau que vous spcifiez. Si le serveur ne supporte pas un niveau
d'isolation ou le niveau suprieur, une erreur sera renvoye. Si
vous spcifiez un niveau d'isolation et crivez votre application
correctement en supposant que vous avez ce niveau d'isolation,
votre application s'excutera ou recevra une erreur.

Pour les bases de donnes InterBase, db.beginTransaction() et
db.beginTransaction("RepeatableRead") initialisent encore une
transaction RepeatableRead. db.beginTransaction("DirtyRead") et
db.beginTransaction("ReadCommitted") initialisent une transaction
ReadCommitted.

Ainsi, si votre application spcifiait DirtyRead ou ReadCommitted,
elle s'excutera maintenant au niveau ReadCommitted au lieu du
niveau RepeatableRead. Vous devez la tester pour vrifier qu'elle
s'excute correctement au niveau ReadCommitted.


4. PILOTE ORACLE
----------------

Mthode beginTransaction.
-------------------------
Les amliorations dans la gestion des niveaux d'isolation de
transaction du BDE peuvent affecter votre application, si elle
utilise la mthode ObjectPAL Database : beginTransaction().
Reportez-vous  la description de beginTransaction() dans le Guide
de rfrence ObjectPAL de Paradox 5.0 ou  l'aide en ligne pour
une description des niveaux d'isolation.

Si vous n'utilisez pas beginTransaction(), votre application ne
sera pas affecte par ces amliorations.

Vous pouvez utiliser votre application non modifie si vous
dfinissez DRIVER FLAGS pour le pilote Oracle (voir le fichier
LISEZSQL.TXT). Dfinir le paramtre DRIVER FLAGS rendra les
oprations de transaction compatibles avec les SQL Links Version
2.0 (ou plus anciennes), en dsactivant les amliorations pour
toutes les applications qui utilisent le pilote Oracle.

Si vous ne dfinissez pas le paramtre du pilote, vous aurez
probablement besoin de changer votre utilisation de la mthode
beginTransaction().

Avec SQL Links, Version 2.0 (ou plus anciennes), tous les appels
beginTransaction() pour les bases de donnes Oracle initialisaient
une transaction avec le niveau d'isolation ReadCommitted.
ReadCommitted tait utilis mme si le paramtre optionnel
isoLevel tait fourni. Ainsi tous les appels beginTransaction()
suivants taient quivalents et utilisaient ReadCommitted :

   var
      db Database
      success Logical
   endVar
   success = db.beginTransaction()
   success = db.beginTransaction("DirtyRead")
   success = db.beginTransaction("ReadCommitted")
   success = db.beginTransaction("RepeatableRead")

Le nouveau support de transaction du BDE excute votre transaction
 un niveau support par le serveur au niveau ou au-dessus du
niveau que vous spcifiez. Si le serveur ne supporte pas un niveau
d'isolation ou le niveau suprieur, une erreur sera renvoye. Si
vous spcifiez un niveau d'isolation et crivez votre application
correctement en supposant que vous avez ce niveau d'isolation,
votre application s'excutera ou recevra une erreur.

Pour les bases de donnes Oracle, db.beginTransaction("DirtyRead")
et db.beginTransaction("ReadCommitted") initialisent encore une
transaction ReadCommitted. db.beginTransaction() et
db.beginTransaction("RepeatableRead") initialisent une transaction
RepeatableRead en lecture-seule. Si votre application fait des
mises  jour durant la transaction, vous devrez changer ces appels
pour spcifier ReadCommitted. Sinon une erreur se produira quand
vous essayerez de valider la mise  jour (ou de dverrouiller
l'enregistrement mis  jour).

Si vous utilisez Paradox 4.5 et que vous utilisez
beginTransaction() pour une transaction de mise  jour sur une
base de donnes Oracle, vous devez dfinir le paramtre du pilote.
L'argument optionnel isoLevel a t ajout  beginTransaction()
dans Paradox 5.0.


Noms des table/index en majuscules.
-----------------------------------
Avec SQL Links Version 2.0 et prcdentes, les noms des tables et
index Oracle taient toujours forcs en majuscules. Cette version
des SQL Links supporte les noms avec majuscules et minuscules. Par
exemple, auparavant, les SQL Links pouvaient accder  la table
CLIENT mais non Client.

Avec cette version des SQL Links, l'utilisation d'un nom de table
dans une fiche, un tat, une requte QBE, un script ou une
bibliothque qui ne correspond pas exactement au nom sur le
serveur chouera. Ainsi, une rfrence  la table CLIENT qui est
crite Client ne fonctionnera pas.

Vous pouvez utiliser vos objets Paradox et Oracle non modifis si
vous dfinissez DRIVER FLAGS pour le pilote Oracle (voir le
fichier LISEZSQL.TXT). Dfinir le paramtre DRIVER FLAGS rendra
les conventions de noms compatibles avec les SQL Links Version 2.0
(ou plus anciennes), en dsactivant les amliorations pour toutes
les applications qui utilisent le pilote Oracle.

Si vous ne dfinissez pas le paramtre du pilote, vous devez soit
modifier vos rfrences dans Paradox pour les faire correspondre
aux noms sur le serveur (qui sont probablement toutes en
majuscules), soit modifier les noms sur le serveur pour les faire
correspondre aux objets Paradox.


5. PILOTE SYBASE
----------------

Mthode beginTransaction.
-------------------------
Les amliorations dans la gestion des niveaux d'isolation de
transaction du BDE peuvent affecter votre application, si elle
utilise la mthode ObjectPAL Database : beginTransaction().
Reportez-vous  la description de beginTransaction() dans le Guide
de rfrence ObjectPAL de Paradox 5.0 ou  l'aide en ligne pour
une description des niveaux d'isolation.

Si vous n'utilisez pas beginTransaction(), votre application ne
sera pas affecte par ces amliorations.

Vous pouvez utiliser votre application non modifie si vous
dfinissez DRIVER FLAGS pour le pilote Sybase (voir le fichier
LISEZSQL.TXT). Dfinir le paramtre DRIVER FLAGS rendra les
oprations de transaction compatibles avec les SQL Links Version
2.0 (ou plus anciennes), en dsactivant les amliorations pour
toutes les applications qui utilisent le pilote Sybase.

Si vous ne dfinissez pas le paramtre du pilote, vous aurez
probablement besoin de changer votre utilisation de la mthode
beginTransaction().

Avec SQL Links, Version 2.0 (ou plus anciennes), tous les appels
beginTransaction() pour les bases de donnes Sybase initialisaient
une transaction avec le niveau d'isolation ReadCommitted.
ReadCommitted tait utilis mme si le paramtre optionnel
isoLevel tait fourni. Ainsi tous les appels beginTransaction()
suivants taient quivalents et utilisaient ReadCommitted :

   var
      db Database
      success Logical
   endVar
   success = db.beginTransaction()
   success = db.beginTransaction("DirtyRead")
   success = db.beginTransaction("ReadCommitted")
   success = db.beginTransaction("RepeatableRead")

Le nouveau support de transaction du BDE excute votre transaction
 un niveau support par le serveur au niveau ou au-dessus du
niveau que vous spcifiez. Si le serveur ne supporte pas un niveau
d'isolation ou le niveau suprieur, une erreur sera renvoye. Si
vous spcifiez un niveau d'isolation et crivez votre application
correctement en supposant que vous avez ce niveau d'isolation,
votre application s'excutera ou recevra une erreur.

Pour les bases de donnes Sybase, db.beginTransaction("DirtyRead")
et db.beginTransaction("ReadCommitted") initialisent encore une
transaction ReadCommitted. db.beginTransaction() et
db.beginTransaction("RepeatableRead") essaient d'initialiser une
transaction RepeatableRead, mais une erreur se produit car les
transactions RepeatableRead ne sont pas supportes. Vous devrez
changer ces appels pour spcifier ReadCommitted.

Si vous utilisez Paradox 4.5 et que vous utilisez
beginTransaction() pour une base de donnes Sybase, vous devez
dfinir le paramtre du pilote. L'argument optionnel isoLevel a
t ajout  beginTransaction() dans Paradox 5.0.

