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 ?
- 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
|
|
|
|