FORUM DES UTILISATEURS / USER'S NEWSGROUP


Heures au format UTC + 1 heure




Publier un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
MessagePublié: 28 Fév 2010 14:51 
Hors-ligne
Administrateur

Inscrit le: 31 Jan 2007 6:13
Messages: 608
Bonjour à  tous,

Vous trouverez ci-dessous une liste des différences de syntaxe entre le scripts développés avec la version 2009 (v12) et inférieures et ceux de la version 2011 (v13).

Certaines de ces différences sont corrigées automatiquement lors de la réindexation de la base de données, ou lors de l'importation de la ressource.
Les autres doivent être corrigées depuis l'éditeur de script. Certaine des différences sont détectées lors du test du script et une correction est proposée.

Pour information, le moteur de base de données est maintenant compatible avec la norme SQL:2003.

Différences corrigées automatiquement (lors de la réindexation ou lors de l'importation de la ressource)
Texte: Il faut utiliser BLOB au lieu de TEXT comme type de champs pour le stockage de texte (CREATE TABLE).

Chaà®ne de caractères : Il faut utiliser NULLSTRING au lieu de NCHAR comme type de chaà®ne de caractères (CREATE TABLE).

Instruction LIKE : L'instruction LIKE doit etre utilisée avec des parenthèses.
Par exemple,
Code:
CREATE TABLE "TMP-Commande" (LIKE "Commandes")

Attention, elle ne duplique plus les index. Si ceux-ci sont nécessaires, ils doivent être recréés manuellement (CREATE INDEX).

Date litérale : les dates codées en dur dans le script doivent maintenant être formatées de la manière suivante yyyy-mm-dd et préfixées par le mot clé DATE.
Par exemple,
Code:
SELECT * FROM "Personnel" Where "Date création">= DATE'2010-01-31'

Les variables dates retournent une valeur correctement formatée
Code:
SELECT * FROM "Personnel" Where "Date création">= DATE'[vMaDate]';//code v2011.
SELECT * FROM "Personnel" Where "Date création">= '[vMaDate]';//code v2009 valide pour v2011 car "DATE" est automatiquement ajouté à  l'exécution.


ALIAS OF : le nom d'ALIAS "OF" n'est plus autorisé car c'est un mot clé de NxV3. Il est remplacé par "OF1" dans les script migré de v2009 vers v2011.

Devis : le champ "Devis" n'existe plus dans la table "Commandes". Les conditions
Code:
NOT C."Devis"
sont remplacée par TRUE.

Différences à  corriger lors d'un test du script, avec proposition de correction automatique
INSERT aveugle : Il n'est plus autorisé de faire un INSERT ... VALUES ou INSERT ... SELECT sans nommer les champs destinataires si la totalité des champs destinataires n'est pas alimentée. Exemple de code non valide :
Code:
INSERT INTO "TMP-MaTable" VALUES (CURRENT_DATE);

Code valide :
Code:
INSERT INTO "TMP-MaTable" ("MonChampDate") VALUES (CURRENT_DATE);


Transtypage : Il n'est plus autorisé de faire des opérations entre champ de type différent sans CAST. Exemple de code non valide :
Code:
UPDATE "TMP-MaTable" SET "MonChampDate"=CURRENT_DATE+1;

Code valide :
Code:
UPDATE "TMP-MaTable" SET "MonChampAlphanum"=CAST(CAST(CURRENT_DATE AS INTEGER)+1 AS DATE);


UPDATE via SELECT : Il n'est plus autorisé de mettre un champ à  jour avec un SELECT retournant plusieurs enregistrements donc plusieurs valeurs (en v2009, la 1ère était prise).
code non valide :
Code:
UPDATE "TMP-MaTable" SET "MonChampDate"=(SELECT "AutreChampDate" FROM "AutreTable");

Code valide :
Code:
UPDATE "TMP-MaTable" SET "MonChampDate"=(SELECT TOP 1 "AutreChampDate" FROM "AutreTable");


Différences à  corriger manuellement
Champs homonymes : Si un SELECT sur plusieurs tables donne 2 champs de même nom, par exemple "Qte" dans la requête suivante :
Code:
SELECT * FROM "Achats" A, "Affectations_achats" A2

le 2ème est maintenant nommé "Qte_2" au lieu de "A2.Qte".
Correction : corriger l'édition dans le générateur d'état en sélectionnant le bon champ.

Transtypage : Il n'est plus autorisé de faire des opérations entre champ de type différent sans CAST. Exemple de code non valide :
Code:
UPDATE "TMP-MaTable" SET "MonChampAlphanum"="MonChampNum";

Code valide :
Code:
UPDATE "TMP-MaTable" SET "MonChampAlphanum"=CAST("MonChampNum" AS NULLSTRING(10));


Champ booléen null : Il est déconseillé de ne pas mettre à  jour un champ booléen. Si sa valeur est NULL, l'enregistrement ne sera plus sélectionné par une clause du type :
Code:
... WHERE NOT "MonChampBool";

et toujours pas par une clause du type :
Code:
... WHERE "MonChampBool";


Code SQL dans une variable texte : Du code SQL avec une variable date et enregistré dans une variable texte :
Code:
vVarDate:=!' BETWEEN ''[vDateDep]'' AND ''[vDateFin]''';

ne fonctionne plus car la variable date est convertie au format français puisque ce n'est pas une vraie requête SQL.
Ce code fonctionne :
Code:
vVarDate:=!' BETWEEN DATE''[vDateDep]'' AND DATE''[vDateFin]''';


Champs TEXT, MEMO et BLOB
L'écriture des champs TEXT, MEMO et BLOB doit se faire via les fonctions sTable2Text et Text2Hexa.
Code:
sText:=!Text2Hexa('MonTexte');

_________________
Jean-Philippe - Service Développement Solune


Haut
 Profil  
 
Afficher les messages publiés depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Aller vers:  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduction réalisée par Maël Soucaze © 2010 phpBB.fr