Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:
Nous allons voir autour d'un exemple concret une facon de modifier les fichiers DBF de l'application.
Le but est de modifier le fichier subdsect.dbf afin de rajoutter les champs suivants:
GEOREF_A = champ de 30 caractères qui renferme une valeur flottante au format ASCII GEOREF_B = champ de 30 caractères qui renferme une valeur flottante au format ASCII GEOREF_C = champ de 30 caractères qui renferme une valeur flottante au format ASCII GEOREF_D = champ de 30 caractères qui renferme une valeur flottante au format ASCII GEOREF_P = champ de 30 caractères qui renferme une valeur flottante au format ASCII GEOREF_Q = champ de 30 caractères qui renferme une valeur flottante au format ASCII GEOREF_SYS = champ de 20 caractères qui renferme le code EDIGEO de la projection de la feuille
Ces champs seront utilisés par le module Image. Nous allons tout d'abord donner accès à la base de donnée de TopoCad en créant un alias dans le BDEAdministrator.
Initialisation:
BDEAdministrator nous demande alors le type d'alias choisir : choisir STANDARD
Le nouvel alias se crée avec un nom quelconque et le driver Paradox par défaut. On modifie donc le nom en « communes » et on indique le driver DBASE, et enfin on enregistre le tout en cliquant sur le bouton « appliquer »
Il peut être nécessaire de vérifier dans la configuration du driver DBASE que ce dernier est bien configuré en version 4 et avec un langage « WEurope » comme ci dessous
On peut alors fermer le BDEAdministrator, il existe désormais une liaison qui nous permet
d'intervenir par l'interface SQL sur les fichiers DBF de l'application. Pour intervenir sur ces fichiers, il est nécessaire d'avoir un accès exclusif généralement et donc si TopoCad est ouvert, aucune connexion avec une table ne doit exister.
Voici maintenant comment modifier ces fichiers de deux manières différentes
Modifications par le programme QUERY32.EXE :
Ce petit utilitaire fourni avec le CD de Topocad permet d'intervenir en langage SQL par le BDE.
Il faut tout d'abord établir la connexion en cliquant sur le menu « connect ».
puis choisir l'alias « communes » et cliquer sur « connect ». Il n'y a pas de Password à fournir et le Working Dir importe peu (en principe w:\communes)
Un message indiquant que la connection est effective doit apparaître comme ci dessous et l'alias apparaît dans les connexions valides.
Cliquer ensuite sur « Done » : vous pouvez alors entrer des requetes SQL concernant les fichiers DBF.
Nous entrons la première commande :
ALTER TABLE subdsect ADD COLUMN GEOREF_A CHAR(30)
qui rajoutte un champ GEOREF_A à la table subdsect.dbf de 30 caractères
Appuyer sur RUN qui execute alors la commande. La fenetre renvoie alors « No information returned from Query. » indiquant la requete ne retourne pas d'information (car il ne s'agit pas d'une clause SELECT).
La table subsect a désormais un champ supplémentaire comme indiqué ci dessous.
Il suffit de répéter l'opération pour les 6 champs suivants afin d'obtenir l'effet désiré.
Modifications par un programme TED :
Créons tout d'abord un petit fichier texte que nous nommerons maj2009_04_08.sql et qui renfermera les commandes suivantes
ALTER TABLE subdsect ADD COLUMN GEOREF_A CHAR(30) , ADD COLUMN GEOREF_B CHAR(30) ,
ADD COLUMN GEOREF_C CHAR(30) , ADD COLUMN GEOREF_D CHAR(30) , ADD COLUMN GEOREF_P CHAR(30) , ADD COLUMN GEOREF_Q CHAR(30) , ADD COLUMN GEOREF_SYS CHAR(20)
Puis créons un petit fichier TED que nous nommerons maj2009_04_08.ted qui renfermera la commande suivante :
;---
; TopoCad 4.45
;
; cette procedure ùet à jour la base de données subdsect.dbf afin de rajoutter
; 7 champs qui sont
; GEOREF_A de type Texte(30car) et renfermant une valeur réelle codée E
; GEOREF_B de type Texte(30car) et renfermant une valeur réelle codée E
; GEOREF_C de type Texte(30car) et renfermant une valeur réelle codée E
; GEOREF_D de type Texte(30car) et renfermant une valeur réelle codée E
; GEOREF_P de type Texte(30car) et renfermant une valeur réelle codée E
; GEOREF_Q de type Texte(30car) et renfermant une valeur réelle codée E
; GEOREF_SYS de type Texte(20car) et renfermant le code edigeo de la projection
; du georeferencement
;---
@dbsqlexec(communes,"",0,1,"",w:\maj2009_04_08.sql),
@return(OK)
et placons ces 2 fichiers dans w:\
Enfin ouvrons TopoCad puis un document vierge et lancons le script TED créé.
La commande renvoie OK et indique que les champs ont été créés dans la base de données
« subdsect.dbf » comme ci dessous :