Translateurs SQL (tech)
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 | <source lang='delphi'>function DbOutVariant(const iValue: Variant):string;</source> | Traduit une valeur iValue en fonction de son type. |
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é. |
DBOUTSTR | <source lang='delphi'>function DbOutStr(const iString: string):string;</source> | Traduit une valeur de type string. |
DBOUTOID | <source lang='delphi'>function DbOutOid(const iOID: string):string;</source> | Traduit un oid. |
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.
iPart peut avoir les valeurs suivantes :
iColumn est une expression correspondant à une valeur de type date. |
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.
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 | <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. |
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. |
DBOUTWHERESTRING | <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 ">","<",">=","<=" ,"=". |
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.
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 :
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 | <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. |
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.
iTableName - Nom de la table. iAliasName - Nom du alias. iOptJoint - Options de verrouillage. Voir l'options de verrouillage du DBOUTJOIN. |
dbOutWhereNull | Terme null | |
dbOutWhereNotNull | Terme not null |
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>
{{#if:Code métier|
{{#if:Code métier|— Code métier |}} — Développement DSM —
|
{{#if:|— [[{{{1}}}]] |}} — Développement DSM —
}}