Bases de données ODBC + MDB - Bases de données ODBC + CSV - Créer un fichier source de données DSN - Créer une base avec des images - commande LIKE - Surbrillance -
 
  • Il est possible que certains tutoriels ou applications proposés (créés avec Windows XP, MMF2 ou Fusion 2.5 pas mis à jour) ne fonctionnent plus très bien avec des versions supérieures de Windows, et des bugs de Fusion 2.5
    par exemple, entre autres, tout ce qui concerne ou utilise les
    bases de données
    Yves Lamoureux m'a donné quelques indications, et donné les liens pour les corrections

    OBDC, avant la correction, caractères "asiatiques" dans une base de données
    le souci vient du fait que
    Fusion 2.5 travaille avec des caractères unicode, pour pouvoir gérer le Grec, le Japonais, le Chinois, etc.
    ça provoque quelques bugs dans les extensions qui gèrent du texte


    dans l'
    ODBC j'ai corrigé 2 bugs : un premier bug à cause de ce problème de caractères, et un second bug qui passait un paramètre incorrect lors de l'initialisation d'ODBC
    version corrigée :
    https://www.dropbox.com/s/7z11acy22knu7kz/ODBC25.zip?dl=0

    en ce qui concerne les
    applications compilées, il est tout à fait possible que ça soit dû au second bug que j'ai corrigé c'est-à-dire peut-être que le paramètre incorrect ne causait pas de problème avec les anciennes versions de Windows, mais empêche l'objet de marcher avec les dernières versions

    il semble que ce soit
    OK avec Windows 7, mais souci avec Windows 10, cf.. discussion http://comptoir-mmf.eu/Forum/index.php?topic=1548.msg12876#msg12876
  • je suis en train de mettre à jour les MFA et Applications utilisant les bases de données
    au vu de mes nouveaux essais, c'est OK pour les bases de données
    MDB, réussi à partir d'une base de données CSV et TXT
  • pour info : j'ai utilisé les MDB créés quand j'avais le logiciel Microsoft Access - je n'ai pas essayé avec une base créée avec un autre logiciel, ou essayé de récupérer le MDB avec LibreOffice Base -

  • Le matériel se trouve dans le tutoriel 18 - mis à jour - à télécharger - cf. page des téléchargements 
  • pour chaque MFA, un fichier DSN * et un fichier MDB
  • Utile pour créer, par exemple, un répertoire de contacts, créer une base de ses CDs ou chanteurs préférés, BD, etc..
  • utilisation de l'objet ODBC
  • on suppose que vous avez déjà créé ou récupéré une base de données au format MDB
    je n'ai pas trouvé comment exploiter une base de données, dans MMF2 et Fusion 2.5, à partir d'un fichier XLS
    ce qui est dommage, car on n'est pas obligé d'avoir Microsoft Excel , payant...
    possible avec LibreOffice Calc, gratuit

  • j'ai d'abord essayé d'adapter l'exemple du CD Rom de MMF2 et créé un petit topo
  • * le fichier DSN indique le Driver utilisé, pour une base MDB créée avec Access : DRIVER=Driver do Microsoft Access (*.mdb)
    note : le fichier DSN s'ouvre avec le bloc-notes
    enlever le chemin des répertoires des fichiers à
    DefaultDir=
    DBQ=fichier.mdb
    afin que ça marche sur n'importe quel ordinateur et qu'il n'y ait pas d'erreur de chemin

    par défaut, quand on utilise l'
    ODBC, il se crée un fichier DSN qui s'installe dans
    C:\Program Files\Fichiers communs\ODBC\Data Sources\*.dsn - pour Windows XP -
    ce répertoire n'existe pas dans
    Windows 7, il semble que les DSN s'installent dans C:\Utilisateurs\***\Mes documents\ , mais pas trouvé ?
  • vous pourrez aussi copier ce fichier directement dans ces répertoires, quand vous lancerez le MFA, il le trouvera directement - cf.. 1ère image ci-dessous -
  • à garder ou copier également dans votre répertoire de travail, pour vous y retrouver plus tard...., et surtout dans celui de l'application
  • attention : pour éviter un décalage entre les colonnes, vérifier dans l'éditeur de liste d'événements (faire Ctrl+L) du groupe "Display all" la position de l'action "récupérer la rangée" :
    c'est tout bête mais cela arrive souvent, il s'agit d'un problème d'ordre d'exécution des événements du groupe "
    Display all"
    il faut placer l'action "
    récupérer la rangée" de l'objet ODBC tout à la fin de l'ordre d'exécution
  • même chose avec les autres commandes, dans l'éditeur de liste d'événements, Changer le texte SQL STRING doit être avant SELECT * FROM..., INSERT INTO...
  • en général, pour chaque Bouton cliqué :
    1
    Changer le texte SQL STRING
    2
    Remplacer la sélection par - Commande SQL
    3
    Changer le texte ""
  • important : vérifier que l'index de chaque liste soit le même
    voir les
    Propriétés des listes, onglet Configuration , il y a l'Option à cocher "Index basés sur 1"
    donc, soit décocher cette option dans toutes les listes, soit la cocher dans toutes
  • quand ce sont des données chiffrées - Str$(ColNumber( "ODBC", n))
    quand ce sont des données textes -
    ColText$( "ODBC", n)
  • important : bien respecter la syntaxe, ne pas confondre apostrophes et guillemets, ce qui donne une impression d'espace entre eux quand on copie/colle la commande du MFA dans le bloc-notes - cf.. 2ème image ci-dessous
    prévoir une boîte d'édition où les commandes SQL sont affichées, assez grande -
    SQL STRING -
    sinon, quand on arrive à la bordure droite de la boîte, une partie de la requête est "mangée", ce qui donne rien au final dans la base
  • important : ne pas oublier d'ajouter les fichiers DSN et MDB dans la construction du programme d'installation
   

 

   
  • 3 parties :
    le contrôle des boutons
    la liste des champs
    le groupe
    Display All - veiller que l'ordre des actions soit respecté -, cf.. plus haut - pour éviter un décalage -
 
  • exemple le MFA fruits_modifiable + fruits.dsn + fruits.mdb
    table = fruits
    les colonnes de la table = nom, nature, couleur
    les données à ajouter en "temps réel" sont des boîtes de dialogue chercher_nom, ajouter_nom, etc...
  • pour tout sélectionner :
    "SELECT * FROM fruits"
  • pour trier
    "SELECT * FROM fruits ORDER BY nom ASC"
  • pour chercher
    "SELECT * FROM fruits WHERE nom ='"+Edittext$( "chercher_nom" )+"'"
  • pour ajouter
    "INSERT INTO fruits(nom,nature,couleur) VALUES ('"+Edittext$( "ajouter_nom" )+"','"+Edittext$( "ajouter_nature" )+"','"+Edittext$( "ajouter_couleur" )+"')"
  • pour supprimer
    "DELETE FROM fruits WHERE nom=' "+Edittext$( "supprimer_nom" )+"'"
  • exemple, le MFA annuaire_modifiable + annuaire.dsn + annuaire.mdb
    table = Contacts
    les colonnes de la table = Nom, Prénom, Ville, Métier, Téléphone
    les données téléphone, plutôt du texte - sinon, si le numéro commence par un zéro, en mode nombre, il sera supprimé -
    les données à ajouter en "temps réel" sont des boîtes de dialogue
    chercher_nom, nouveau_nom, etc...
  • pour tout sélectionner :
    "SELECT * FROM Contacts"
  • pour trier
    "SELECT * FROM Contacts ORDER BY Ville ASC"
  • pour chercher
    "SELECT * FROM Contacts WHERE Nom ='"+Edittext$( "chercher_nom" )+"'"
  • pour ajouter
    "INSERT INTO Contacts(Nom,Prénom,Ville,Métier,Téléphone) VALUES ('"+Edittext$( "nouveau_nom" )+"','"+Edittext$( "nouveau_prenom" )+"','"+Edittext$( "nouveau_ville" )+"','"+Edittext$( "nouveau_metier" )+"','"+Edittext$( "nouveau_telephone" )+"')"
  • pour supprimer
    "DELETE FROM Contacts WHERE Nom='"+Edittext$( "supprimer_nom" )+"'"
  • si on veut changer le prénom d'un contact particulier, par exemple remplacer Dany par Thérèse
    "UPDATE Contacts SET Prénom='Thérèse' WHERE Nom='CHACORNAC'"

    pour changer 2 données, le prénom et la ville
    "UPDATE Contacts SET Prénom='Thérèse',Ville='MONTAUBAN' WHERE Nom='CHACORNAC'"
  • remarque : si vous n'avez pas Microsoft Access, pour mettre vos données personnelles dans annuaire.mdb avec MMF2, supprimer tous les contacts de la liste, et les remplacer par les vôtres
    car naturellement, les données de l'exemple sont "bidon"...
 
 
  • exemple le MFA code_postal + codepostal.dsn + codepostal.mdb
    table = CODEPOST
    les colonnes de la table = CODEPOSTAL,VILLE
    les données à ajouter en "temps réel" sont des boîtes de dialogue chercher_ville, ajouter_ville, etc...
  • pour tout sélectionner :
    "SELECT * FROM CODEPOST"
  • pour trier
    "SELECT * FROM CODEPOST ORDER BY VILLE ASC"
    "SELECT * FROM
    CODEPOST ORDER BY CODEPOSTAL ASC"
  • pour chercher
    "SELECT * FROM CODEPOST WHERE VILLE ='"+Edittext$( "chercher_ville" )+"'"
  • pour ajouter
    "INSERT INTO CODEPOST(CODEPOSTAL,VILLE) VALUES ('"+Edittext$( "ajouter_codepostal" )+"','"+Edittext$( "ajouter_ville" )+"')"
 
  • question : comment mettre, d'entrée, en surbrillance la 1ère ligne avec affichage de toutes les données, après avoir tout sélectionné, ou après un tri
    réponse : cf.. page Surbrillance