FAQ (Foire aux questions)
Principale »» SQLManagerXTable des matières | |
---|---|
Demarrer en SQLManagerX | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
• Premiere utilisation de SQLManagerX• Premier ProjetComme premier projet, nous allons simplement créer un ensemble de fenêtres tel que le ferai le RAD sur pour un fichier HyperFile Comme pour tout projet WinDev 7.5, nous allons le créer à partir de l'AGL. Pour cela faites Fichier/Nouveau et choisissez nouveau projet.
Saisissez SQLMX_1 comme nom de projet
Prenez soin de bien sélectionner « Aucune analyse » puis cliquez sur Terminer.
Vous avez donc créé votre projet. Nous allons maintenant l'enrichir des composants logiciels livrés avec SQLManagerX. • Arborescence projetCréation des répertoiresPour plus de facilité nous allons créer une arborescence type. Nous vous conseillons vivement de la reprendre dans vos futurs projets.
Copie des fichiers nécessairesPour fonctionner avec SQLManagerX, votre projet à besoin des classes et des différents éléments liés à chaque accès natifs. Dans le répertoire Exe du projet il faudrait les fichiers DLL suivants :
Dans le répertoire classes nous allons copier les fichiers suivants :
Intégration des éléments dans le projetIntégrer les classes nécessaires dans votre projet par la méthode que vous préférez. Par exemple pour Mysql : prévoir c_log4wd.wdc, c_mysql4wd.wdc, SQLmanagerx.wdc. Refaites une compilation pour valider le tout. • Création du code d'initialisation du projetCopiez ces quelques lignes dans le code d'initialisation de votre projet. GLOBAL
// Déclaration de la connexion MySQL // A faire avant toute chose (la déclaration des classes entre autre) SI PAS convSql:mySQLConnecte(BaseHost,BaseUser,BasePasswd,BaseDB) ALORS Info("Pas de connexion SQL: "+convSql:mySQLGetErrorMessage()) FinProgramme() FIN convSql:mySQLDebugMode = Vrai // activation du mode debug // Déclaration des classes d'accès à la base Explications : nous avons créé 4 variables pour pouvoir se connecter à la base MySQL
L'activation du mode debug (convSql:mySQLDebugMode = Vrai) permet de tracer les ordres SQL envoyés à la base de données dans un fichier texte à l'aide de la classe c_log4wd.
• Création de la classe d'accès villesCréation de la classeIl existe 2 possibilités pour créer votre classe : soit en passant par l'outil SQMX-Outils soit en la créant de toute pièce. C'est cette seconde méthode que nous allons exposer ici. Il faut tout d'abord créer une classe c_villes.
Remarquez le c_ nomdelatable pour nommer la classe. Cette notion est primordiale car elle sera reprise dans l'appel du constructeur ci dessous (variable p_prefixeClasse) Remarquez le m_ pour nommer chacun des membres de la classes. Cette notion est primordiale car elle sera reprise dans l'appel du constructeur ci dessous (variable p_prefixeMembre)
Déclaration globaleAjoutez la ligne suivante dans le code d'initialisation de votre projet juste en dessous de la ligne « // Déclaration des classes d'accès à la base » I_VILLES est un c_villes (convSql, "villes", "I_VILLES") Explication : I_VILLES est notre instance de la classe C_VILLES (objets disponible dans le TreeView des objets du projet). Lors de son instanciation, I_VILLES va utiliser la connexion principale (définie explicitement dans le code du projet) d'accès à MySQL convSql . Le nom de la table accédée en base est « villes » et on rappelle à l'objet SQLManagerX que le nom de notre instance est I_VILLES.
• Création de notre première fenêtre en mode FicheCréation de la fenêtreCréez une fenêtre vierge avec 3 champs • un champ de saisie Commune , de type texte sur … caractères • un champ de saisie CodeP , de type texte sur … caractères • un champ de saisie Zone , de type numérique de type numérique sur 4 octets Vous devriez avoir quelque chose comme çà : ![]() Ajoutez un bouton Fermer pour plus de facilité. Insertion de la fonction d'affichageDans le bloc de Déclaration globales, saisissez les 2 lignes suivantes
On met le nom de la fenêtre courante en paramètre de la fonction (méthode) SQLTableVersEcran(). Ceci vient du fait que nous nous trouvons dans le code de déclarations globales. Si nous étions dans le code Initialisation, nous n'aurions pas ce problème mais nous vous conseillons d'utiliser toujours ce mode de programmation. Pourquoi ? Une petite explication s'impose. Soit une fenêtre appelante et une fenêtre appelée. Dans le code Initialisation de la fenêtre appelée, la fonction FenEnCours() renvoie le nom de la fenêtre appelante ! Par défaut, c'est cette fonction qui est utilisée dans SQLTableVersEcran() si le nom de la fenêtre n'est pas passé en paramètre. C'est pour cela que je conseille de toujours passer en paramètre le nom de la fenêtre. Insertion des boutons mode parcoursCréez 4 boutons de parcours avec les codes associés Premier : se positionner sur le premier enregistrement.
Précédent : se positionner sur l'enregistrement précédent.
Suivant : se positionner sur l'enregistrement suivant.
Dernier : se positionner sur le dernier enregistrement.
Vous devriez maintenant avoir :
Insertion des boutons nouveau, modifier, supprimerCréez 3 boutons avec les codes associés Nouveau :
Modifier :
Supprimer :
Lancer un GO du projet et tester les nouvelles actions proposées. • Création de notre première fenêtre en mode TableCréation de la table + alimentation en mode fetch global• Créez une fenêtre Vierge. Insérez un bouton Fermer avec le code associé. • Créez une table mémoire Table1 avec 2 colonnes (une colonne numérique, une colonne texte). Nous n'allons pas définir de code associé à cette table. • Créez un bouton avec le code associé
On remarque dans notre exemple que nous avons appliquer un filtre pour ne prendre en compte que les produits dont l'identifiant est contenu dans l'intervalle [100800, 100900]. La méthode utilisée est très simple : SQLCTable. On lui passe en paramètre la table mémoire cible ainsi que les colonnes à afficher séparées pas des virgules.
Création de la table + alimentation en mode fetch partielL'inconvénient de la méthode précédente concerne son mode de fonctionnement intrinsèque : Toutes les lignes de la requête seront chargées en mémoire : le traitement peut être lent si la requête renvoie beaucoup de lignes. Pour palier à cela, SQLManagerX propose une méthode dite à fetch partiel. Le nombre de lignes ramené par la méthode est égal au nombre de lignes dans votre table. • Créez une fenêtre Vierge. Insérez un bouton Fermer avec le code associé. • Créez une table mémoire Table1 avec 2 colonnes (une colonne numérique, une colonne texte). • Créez un ascenseur Ascenseur1. Mettez le un peu en forme pour qu'il ait la même hauteur que votre table et qu'il soit collé à elle à la droite de celle-ci. • Créez un bouton avec le code associé
• Ajoutez le code suivant à l'ascenseur
• Ajoutez le code suivant à notre table
Explications : On remarque que le parcours initial ne diffère pas tellement de la méthode précédente hormis l'utilisation de la méthode TableAffiche. Ensuite, on remarque l'utilisation de cette méthode à chaque modification de valeur de notre ascenseur (Ascenseur1) : normal car c'est le fonctionnement normal d'un ascenseur dans une table, celui-ci permet le parcours dans la table. Pour finir une nouvelle méthode XtableGereTouche qui nous permet de mettre à jour la valeur courante de notre ascenseur en fonction des touches appuyées (haut, bas, ‘page up', ‘page down') puis réaffiche la table. • Les éléments utilesLa gestion des filtres. Quelle méthode utiliser ?Nous avons vu que nous pouvions déclarer un filtre tout simplement à l'aide de la méthode SQLFiltre. Le premier paramètre correspond à la future clause de restriction sans le mot clé WHERE, le second correspond à l'ordre dans lequel les éléments doivent être lus (le ORDER BY). Une annulation de filtre est effectuée au moyen de la méthode SQLFiltre("","").
La méthode DesactiveFiltre() désactive temporairement le filtre créé précédemment. La méthode ActiveFiltre() quant à elle le réactive. Utilisation d'une combo
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tutoriel MySQL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Téléchargement Choisir la version Community ou Entreprise http://dev.mysql.com/downloads/mysql/5.0.html Notice http://dev.mysql.com/doc/refman/5.0/fr/index.html Utiliser IE à la place de FireFox car le clic sur la page précédente ne marche pas très bien (au lieu de revenir au lien précédent, on revient sur le sommaire…) Installation version 5 Client Graphique gratuits Perso, j’utilise le EMS MySQL Manager http://sqlmanager.net/fr/products/mysql/manager http://www.webyog.com/en/ http://mysql-turbo-manager-free-edition.mentat-technologies.qarchive.org/ Sauvegarder
Restaurer (selon ma méthode)
Modification de la base
merci a JP pour ce tutoriel |