Translateurs SQL (tech)

De Wiki1000
(Différences entre les versions)
(Méthodes)
(Méthodes)
 
(6 révisions intermédiaires par un utilisateur sont masquées)
Ligne 15 : Ligne 15 :
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
|[[dbOutVariant (Translator)|DBOUTVARIANT]]
+
|[[dbOutVariant (Translator)|dbOutVariant]]
|<source lang='delphi'>function DbOutVariant(const iValue: Variant):string;</source>
+
 
|Traduit une valeur iValue en fonction de son type.
 
|Traduit une valeur iValue en fonction de son type.
 
|-
 
|-
|[[dbOutRowCount (Translator)|DBOUTROWCOUNT]]
+
|[[dbOutRowCount (Translator)|dbOutRowCount]]
|<source lang='delphi'>function DbOutRowCount(iCount:Integer):string;</source>
+
 
|Traduit l'instruction SQL qui force le moteur de données à arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.
 
|Traduit l'instruction SQL qui force le moteur de données à arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.
 
|-
 
|-
|[[dbOutStr (Translator)|DBOUTSTR]]
+
|[[dbOutStr (Translator)|dbOutStr]]
|<source lang='delphi'>function DbOutStr(const iString: string):string;</source>
+
 
|Traduit une valeur de type string.
 
|Traduit une valeur de type string.
 
|-
 
|-
|[[dboutOID (Translator)|DBOUTOID]]
+
|[[dboutOID (Translator)|dbOutOID]]
|<source lang='delphi'>function DbOutOid(const iOID: string):string;</source>
+
 
|Traduit un oid.
 
|Traduit un oid.
 
|-
 
|-
|[[dbOutDatePart (Translator)|DBOUTDATEPART]]
+
|[[dbOutDatePart (Translator)|dbOutDatePart]]
|<source lang='delphi'>function DbOutDatePart(
+
                    iPart: TPartOfDate;
+
                    const iColumn: string):string;</source>
+
 
|Traduit la fonction DATEPART qui renvoie un entier représentant l'élément de date précisé dans la date spécifiée.
 
|Traduit la fonction DATEPART qui renvoie un entier représentant l'élément de date précisé dans la date spécifiée.
iPart peut avoir les valeurs suivantes :
 
*dpyear
 
*dpquart
 
*dpmonth
 
*dpdayofyear
 
*dpday
 
*dpweek
 
*dpweekday
 
*dphour
 
*dpminute
 
*dpsecond
 
*dpmillisecond
 
 
iColumn est une expression correspondant à une valeur de type date.
 
 
|-
 
|-
|[[dbOutSubStr (Translator)|DBOUTSUBSTR]]
+
|[[dbOutSubStr (Translator)|dbOutSubStr]]
|<source lang='delphi'>function DbOutStr(
+
                    const iColumn: string;
+
                    iOfs,iLen : Integer):string;</source>
+
 
|Traduit l'instruction SUBSTRING qui renvoie une partie d'une expression de type caractère, binaire, texte ou image.
 
|Traduit l'instruction SUBSTRING qui renvoie une partie d'une expression de type caractère, binaire, texte ou image.
iOfs : Entier précisant où la sous-chaîne commence.
 
iLen : Entier précisant la longueur de la sous-chaîne (le nombre de caractères ou d'octets à renvoyer).
 
 
|-
 
|-
|[[dbOutDaysBetween (Translator)|DBOUTDAYSBETWEEN]]
+
|[[dbOutDaysBetween (Translator)|dbOutDaysBetween]]
|<source lang='delphi'>function DbOutDaysBetween(iBeginDate,iEndDate:Variant) :string;</source>
+
 
|Traduit la fonction DATEDIFF qui renvoie le nombre de jours traversées entre deux dates données.
 
|Traduit la fonction DATEDIFF qui renvoie le nombre de jours traversées entre deux dates données.
 
|-
 
|-
|[[dbOutIsNull (Translator)|DBOUTISNULL]]
+
|[[dbOutIsNull (Translator)|dbOutIsNull]]
|<source lang='delphi'>function DbOutIsNull(iExpr,iResultat : string) : string;</source>
+
 
|Traduit la fonction ISNULL qui remplace NULL par la valeur de remplacement spécifiée.
 
|Traduit la fonction ISNULL qui remplace NULL par la valeur de remplacement spécifiée.
 
|-
 
|-
|[[dbOutWhereString (Translator)|DBOUTWHERESTRING]]
+
|[[dbOutJoin (Translator)|dbOutJoin]]
|<source lang='delphi'>function DbOutWhereString(
+
                    const iFieldName: string;
+
                    const iOperator: string;
+
                    const iFieldValue: string):string;</source>
+
|Traduit une expression en tenant compte de la gestion des NULL du moteur de basse de données.
+
A utiliser avec les opérateurs de comparaison ">","<",">=","<=" ,"=".
+
{{tip|N'utilisez pas les comparaisons avec la chaîne vide dans les requêtes SQL. Le framework n'enregistre pas de chaînes vides dans la basse de données mais la valeur NULL.}}
+
|-
+
|[[dbOutJoin (Translator)|DBOUTJOIN]]
+
|<source lang='delphi'>function DbOutJoin(
+
                    const iTableJoint: string;
+
                    const iAliasJoint: string;
+
                    iOptsJoint: TdbTableOption;
+
                    const iColumnLeft: string;
+
                    const iAliasRight: string;
+
                    const iColumnRight: string;
+
                    var iWhereForJoin:string):string;</source>
+
 
|Traduit une syntaxe pour une jointure simple.
 
|Traduit une syntaxe pour une jointure simple.
iTableJoint - nom de la table jointe.
 
iALiasJoint - nom d'alias de la table jointe.
 
iOptJoint - Options de verrouillage de la table jointe pour MSSQL. Vous disposez des options de verrouillage suivantes :
 
*dbtoNO - Aucun verrouillage.
 
*dbtoNOLock – L’ordre n'émet pas de verrous partagés et n'effectue pas de verrous exclusifs. En spécifiant cette option, il est possible de lire une transaction non validée, ou d'accéder à un jeu de pages qui subissent une opération de roll back en cours de lecture. Les lectures incorrectes sont possibles. S'applique uniquement à la commande SELECT.
 
*dbtoLockX - Utilise un verrou exclusif sur une table. Ce verrou empêche les autres sessions de lire ou de mettre à jour la table et est conservé jusqu'à la fin de la commande ou de la transaction.
 
*dbtoHoldLock - Conserve un verrou partagé jusqu'à la fin de la transaction au lieu de libérer le verrou dès que la table, ligne ou page de données n'est plus requise. HOLDLOCK est l'équivalent de SÉRIALISABLE.
 
iColumnLeft - colonne de la table gauche de la jointure.
 
iAliasRight - alias de la table du colonne right.
 
iColumnRight - colonne de la table droite de la jointure.
 
Le critère sur lesquels est basée la jointure est (iCumnLeft = iColumnRight).
 
iWhereForJoin - renvoie une condition SQL à mettre dans la clause WHERE.
 
 
|-
 
|-
|[[dbOutLeftOuterJoin (Translator)|DBOUTLEFTOUTERJOIN]]
+
|[[dbOutLeftOuterJoin (Translator)|dbOutLeftOuterJoin]]
|<source lang='delphi'>function DbOutLeftOuterJoin(
+
                    const iTableJoint: string;
+
                    const iAliasJoint: string;
+
                    iOptsJoint: TdbTableOption;
+
                    const iColumnLeft: string;
+
                    const iAliasRight: string;
+
                    const iColumnRight: string;
+
                    var WhereForJoin : string) : string;</source>
+
 
|Traduit la syntaxe d'une jointure externe. Les paramètres sont identiques à ceux de la fonction DBOUTJOIN.
 
|Traduit la syntaxe d'une jointure externe. Les paramètres sont identiques à ceux de la fonction DBOUTJOIN.
 
|-
 
|-
|[[dbOutTableName (Translator)|DBOUTTABLENAME]]
+
|[[dbOutTableName (Translator)|dbOutTableName]]
|<source lang='delphi'>function DbOutTableName(
+
                    const iTableName: string;
+
                    const iAliasName: string;
+
                    iOpts: TdbTableOption):string;</source>
+
 
|Traduit un nom de table avec options de verrouillage.
 
|Traduit un nom de table avec options de verrouillage.
iTableName - Nom de la table.
+
|-
iAliasName - Nom du alias.
+
|[[dbOutWhereVariant (Translator)|dbOutWhereVariant]]
iOptJoint - Options de verrouillage. Voir l'options de verrouillage du DBOUTJOIN.
+
|Traduit une expression en convertissant la valeur.
 +
|-
 +
|[[dbOutWhereString (Translator)|dbOutWhereString]]
 +
|Traduit une expression en tenant compte de la gestion des NULL du moteur de basse de données.
 
|-
 
|-
 
|[[dbOutWhereNull (Translator)|dbOutWhereNull]]
 
|[[dbOutWhereNull (Translator)|dbOutWhereNull]]
|
+
|Retourne un terme de filtre null
|Terme null
+
 
|-
 
|-
 
|[[dbOutWhereNotNull (Translator)|dbOutWhereNotNull]]
 
|[[dbOutWhereNotNull (Translator)|dbOutWhereNotNull]]
|
+
|Retourne un terme de filtre not null
|Terme not null
+
|-
 +
|[[dbOutLikeFilter (Translator)|dbOutLikeFilter ]]
 +
|Escape les caractères spéciaux de l'opérateur like
 
|}
 
|}
  
===Exemples===
 
'''Utilisation de dbOutVariant'''
 
<source lang='delphi'>
 
cursor.SQL.Add(Format('WHERE (dateEcriture = %s)', [cursor.Translator.dbOutVariant(vdateEcriture)]));
 
</source>
 
 
'''Utilisation de dbOutTableName'''
 
<source lang='delphi'>
 
cursor.SQL.Add('SELECT * FROM ' + cursor.Translator.dbOutTableName('TPIECE','Piece', dbtoNOLock));
 
// Sur MSSQL la fonction retourne SELECT * FROM TPIECE Piece (NOLOCK)
 
</source>
 
 
'''Utilisation de dbOutJoin'''
 
<source lang='delphi'>
 
cursor.SQL.Add('SELECT * FROM ' + cursor.Translator.dbOutTableName('TPIECE','Piece', dbtoNOLock));
 
cursor.SQL.Add(cursor.Translator.dbOutJoin('TJOURNAL','Journal', dbtoNOLock, 'oid','Piece',oidJournal,vWhereJoin));
 
cursor.SQL.Add('WHERE Journal.code = "AC"');
 
if (vWhereJoin <> '') then cursor.SQL.ADD(' and '+ vWhereJoin);
 
//
 
// Sur MSSQL la fonction retourne :
 
//
 
// SELECT * FROM TPIECE (NOLOCK)
 
// LEFT OUTER JOIN TJOURNAL Journal (NOLOCK)
 
//    ON(Journal.oid = Piece.oidJournal)
 
// WHERE (Journal.Code = "AC")
 
//
 
// et sur ORACLE
 
//
 
// SELECT * FROM TPIECE Piece, TJOURNAL Journal
 
// WHERE (Journal.Code = "AC")
 
//      and (Journal.oid = Piece.oidJournal)
 
</source>
 
 
'''Utilisation de dbOutDatePart'''
 
<source lang='delphi'>
 
cursor.SQL.Add(cursor.Translator.dbOutDatePart(dpYear,'dateEcriture'));
 
// Sur MSSQL la fonction retourne : DATEPART(year,dateEcriture)
 
// et sur ORACLE : to_NUMBER(to_CHAR(dateEcriture, ''YYYY''))
 
</source>
 
 
'''Utilisation de dbOutSubStr'''
 
<source lang='delphi'>
 
cursor.SQL.Add(cursor.Translator.dbOutSubstr(Caption,1,5));
 
// Sur SQL Server la fonction retourne : SUBSTRING(Caption,1,5)
 
// et sur ORACLE : SUBSTR(Caption,1,5)
 
</source>
 
 
'''Utilisation de dbOutDaysBetween'''
 
<source lang='delphi'>
 
cursor.SQL.Add(cursor.Translator.dbOutDaysBetween('beginDate','endDate'));
 
// Sur MSSQL la fonction retourne : DATEDIFF(day, beginDate, endDate)
 
// et sur ORACLE : ROUND(to_DATE('beginDate','DD/MM/YYYY HH24 :MI :SS'))
 
//                ROUND(to_DATE('endDate','DD/MM/YYYY HH24 :MI :SS'))
 
</source>
 
 
'''Utilisation de dbOutisNull'''
 
<source lang='delphi'>
 
cursor.SQL.Add(cursor.Translator.dbOutIsNull('sum(montant)',0));
 
// Sur MSSQL la fonction retourne : ISNULL(sum(montant),0)
 
// et sur ORACLE : NVL(sum(montant),0)
 
</source>
 
 
'''Utilisation de dbOutWhereString'''
 
<source lang='delphi'>
 
cursor.SQL.Add(cursor.Translator.dbOutWhereString('Caption','=',valeur));
 
// Sur ORACLE si le valeur est vide la fonction retourne Caption is null
 
</source>
 
  
 
{{Footer|Code métier}}
 
{{Footer|Code métier}}
 
[[category:Objets techniques]]
 
[[category:Objets techniques]]

Version actuelle en date du 4 mars 2019 à 10:17

Introduction

Le traducteur de code est un objet technique permetant d’écrire du code SQL indépendant du type de serveur de base de données utilisé.

Vous pouvez accéder aux fonctions du traducteur par l'attribut "Translator" d'un curseur ou d'une requête.

Propriétés

DBOUTOPCONCATSTRINGS Renvoie l'opérateur de concaténation de chaîne.

Méthodes

dbOutVariant Traduit une valeur iValue en fonction de son type.
dbOutRowCount Traduit l'instruction SQL qui force le moteur de données à arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.
dbOutStr Traduit une valeur de type string.
dbOutOID Traduit un oid.
dbOutDatePart Traduit la fonction DATEPART qui renvoie un entier représentant l'élément de date précisé dans la date spécifiée.
dbOutSubStr Traduit l'instruction SUBSTRING qui renvoie une partie d'une expression de type caractère, binaire, texte ou image.
dbOutDaysBetween Traduit la fonction DATEDIFF qui renvoie le nombre de jours traversées entre deux dates données.
dbOutIsNull Traduit la fonction ISNULL qui remplace NULL par la valeur de remplacement spécifiée.
dbOutJoin Traduit une syntaxe pour une jointure simple.
dbOutLeftOuterJoin Traduit la syntaxe d'une jointure externe. Les paramètres sont identiques à ceux de la fonction DBOUTJOIN.
dbOutTableName Traduit un nom de table avec options de verrouillage.
dbOutWhereVariant Traduit une expression en convertissant la valeur.
dbOutWhereString Traduit une expression en tenant compte de la gestion des NULL du moteur de basse de données.
dbOutWhereNull Retourne un terme de filtre null
dbOutWhereNotNull Retourne un terme de filtre not null
dbOutLikeFilter Escape les caractères spéciaux de l'opérateur like


Code métierDéveloppement DSM

Outils personnels