BOB 50 SQL : Migrer à partir de BDE 27/08/2009 Agenda • • • • • • • • • Advantage Database Server : philosophie Passer de BDE à BOB 50 SQL Changements et précautions à prendre BOB-link BOB-script BOB-dev BOB-ole Outils divers Conclusions et séances de questions 2 Sybase Advantage Database Server : philosophie • Commercialisé sous l’acronyme « SQL » pour faire référence à une notion technique souvent plus proche et connue de nos utilisateurs qu’ADS ou encore Advantage Database Server • Avantages par rapport aux solutions concurrentes type SQL Server : – – – – – – • Faible utilisation en mémoire (convient aussi bien pour un serveur qu’un simple ordinateur) Administration réduite au strict minimum (les paramètres s’ajustent automatiquement en cas de dépassement) Installation très simple, maintenance quasi inexistante Taille du processus BOB.EXE en mémoire limitée Gestion des droits via les permissions NTFS de Windows Commercialisé par Sybase, société essentiellement spécialisée dans les SGBDR Avantages pour BOB 50 : – – – Advantage Database Server déjà utilisé conjointement avec BOB Software depuis plusieurs années dans plus de 150 sociétés de type « Moyenne entreprise » Technologie déjà maîtrisée. Nous utilisons cependant désormais la version 9 pour faire bénéficier nos utilisateurs des dernières nouveautés Base de données plus robuste pouvant gérer des dossiers de taille importante tout en conférant aux utilisateurs un grand confort d’utilisation (filtres, tris, reporting,…) 3 Conversions des installations BDE BOB 50 SQL • Uniquement avec le BOB Migration Kit, sur une machine avec le BDE installé et si possible le serveur de données (données en local). • Bientôt dans le BOB Migration Kit (v2.1+): – Conversion des données Fista de BDE vers SQL • Pour la conversion BOB 50 BDE vers BOB 50 SQL, placer l’installation BOB 50 BDE dans la colonne « BOB Software » du BOB Migration Kit. • Les nouvelles installations BOB 50 SQL réseau doivent fonctionner en mode « NetSetup » ou en Terminal Server. Aucune garantie Sage pour les autres modes de fonctionnement. 4 Changements et précautions à prendre • Structure dans les dossiers BOB 50 : – – – – • Plus de code dossier en préfixe des noms de fichiers Les préfixes deviennent AC_ (compta, fichiers globaux), IV_ (facturation), FA_ (immobilisés), FI_ (fiscal) et BK_ (banque) Tous les fichiers « opérationnels » sont dans un même répertoire Le sous-répertoire BAK contient les backups des fichiers avant restructuration Existence à part entière de NULL : – Avec la version SQL, NULL a une existence propre au niveau des filtres • Ex. : (TCURRENCY<>’BEF’) devient (TCURRENCY <> ‘BEF’) OR (TCURRENCY IS NULL) • Ne plus utiliser les guillemets dans les expressions « Filter ». Toujours des apostrophes. • Utiliser au maximum des crochets ( [ et ] ) autour des noms de champs et des noms de tables afin que le moteur SQL ne les interprète comme des mots réservés dans la syntaxe SQL ADS. Ex.: SELECT [LICENCES].[L_ID] FROM [LICENCES] 5 BOB-link • Fichiers BOBLINK.EXE et BOBLINKADSADT.EXE • BOBLINK.EXE prend comme fichiers d’entrée les fichiers TXT, DB et DBF – Remarque importante : Il est nécessaire que le BDE soit installé • BOBLINKADSADT.EXE sert spécifiquement à importer des fichiers ADT (format Advantage Database Server) – Pas de BDE nécessaire • Répertoire LINK en SQL déplacé dans le sous-répertoire LINK\xx ou « xx » est le code dossier – Dans le BOB.INI, LINK=C:\B50ADSDEMO\LINK 6 BOB-script • Précautions à prendre : – Changer les noms et chemins des fichiers là où ils sont « hard-codés » avec l’ancienne structure/notation sans utiliser « BOBOpen » – Vérifier les filtres (existence du NULL et apostrophes uniquement) • Optimiser le code : – Utiliser les TBOBQuery pour exécuter une requête SQL de type Select, Insert, Delete, Update ou autre sur les tables ADT. – Eviter le parcours inutile des tables avec « Next » et remplacer par des WHERE dans les requêtes. – Pour les autres types de base de données (SQL Server, Oracle,…), les objets ADO sont disponibles • Optimiser l’exécution : – Ajouter des indexes sur vos champs personnalisés via « Configuration générale » (en RUNMODE=BETA actuellement) 7 BOB-script • TBOBQuery : Propriétés : Sql: RecordCount : Bof : Eof : RowsAffected : string integer boolean boolean integer Définition de la requête Nombre d’enregistrements Est en début de table Est en fin de table Nombre d’enregistrements modifiés Méthodes : procedure Open; Ouvre la requête dans le recordset procedure Close; Ferme le recordset procedure ExecSql; Exécute la requête procedure First; Aller du début du recordset procedure Last; Aller à la fin du recordset procedure Prior; Aller à l’enregistrement précédent procedure Next; Aller à l’enregistrement suivant function GetFieldValue(AFieldName: string): variant; 8 BOB-script • Exemple 1 (Pascal) : myquery := tbobquery.create; myquery.sql := 'select * from AC_COMPAN'; myquery.open; ShowMessage(inttostr(myquery.recordcount)); myquery.last; showmessage(myquery.getfieldvalue('CID')); myquery.free; myquery := nil; • Exemple 2 (Pascal) : myquery := tbobquery.create; myquery.sql := 'update AC_COMPAN set CADDRESS2 = ''AAA'' where CLANG = ''F'''; myquery.execsql; showmessage(inttostr(myquery.RowsAffected)); myquery.free; Myquery := nil; 9 BOB-dev • • Pas de changements Vérifier les chemins et noms de fichiers « hard-codés » – • Attention aux DatabaseName dans les BOBDataSet Faire attention aux filtres 10 BOB-OLE Faire attention aux filtres • Certaines fonctions ont été optimisées pour la version SQL – • • AccountBalance, CompanyAccountBalance, CostBalance Des fonctions seront peut-être plus lentes, d’autres plus rapides par rapport à BDE Vérifier les chemins et noms de fichiers « hard-codés » – Attention aux DatabaseName dans les BOBDataSet A venir : fonction avec chaîne SQL en argument et qui renvoie une valeur 11 Outils divers • • • • DbViewer BOB Admin – Sybase Management Installation Diagnostic Advantage Data Architect et autres – http://www.sage.be/tools/sybase.zip • Autres outils (attention support non fourni par Sage) : – – – – – Advantage Advantage Advantage Advantage Advantage .NET Data Provider OLE DB Provider ODBC Driver Crystal Reports Driver PHP Driver 12 Conclusions et questions • • • • • Vérifier les noms de fichiers et chemins Utiliser les indexes sur les tables là où c’est nécessaire Faire attention au NULL / chaînes vides dans les filtres et requêtes Utiliser les requêtes SQL là où c’est possible pour améliorer les performances Tester vos requêtes au préalable avec Advantage Data Architect Avancé • LOGSQL=YES dans [OPTIONS] LogSQL.htm (à désactiver dès que possible) • AUTOADSINI=NO dans [OPTIONS] en cas de problèmes avec la création automatique de ADS.INI A venir dans BOB 50 SQL 2.1 : BOB Business Views et BOB Business Reports Vos questions et commentaires 13