Guide pratique de My Visual Database
Guide pratique de My Visual Database
1 – INTRODUCTION
1.1 Introduction
Imaginons que vous conserviez des informations sur une feuille Excel classique, comme le montre la
Figure 1 :
Figure 1
Cela pourrait sembler suffisant pour une comptabilité complète. Malheureusement, cette approche
comporte un certain nombre de problèmes que nous allons maintenant analyser.
1er problème
En premier lieu, que se passera-t-il si une entreprise change son numéro de téléphone ? Disons que
la société "KH Services" a comme nouveau numéro de téléphone 7 495 555-65-65. Pour garder la
table à jour, vous devrez faire des changements sur trois lignes (et s'il y en a déjà 500 ?).
Si nous ne le faisons pas, nos données seront incohérente ; après quoi, nous ne serons plus en
mesure de déterminer lequel des numéros de téléphone est à jour.
2ème problème
Nous pouvons faire une faute de frappe dans la saisie du nom de l'entreprise et écrire
accidentellement KJ Services au lieu de KH Services. Par la suite, il sera difficile de savoir s'il s'agit
d'un nouveau client ou si une faute de frappe a été commise. Une telle erreur n'aurait pas pu se
produire si nous avions choisi une société depuis une liste.
3ème problème
Par exemple, votre comptable doit gérer les factures et les paiements, et les employés de votre
entreprise veulent conserver des enregistrements des commandes et des réunions avec les clients,
mais par exemple, la comptabilité ne veut pas que les employés de location aient accès aux
informations sur les paiements.
My Visual Database – Manuel pratique 3/77
Des problèmes plus sérieux surgiront quand il s'agira d'analyser les données accumulées, par
exemple :
Lorsque trop d'informations s'accumulent dans votre tableau, de tels problèmes surgiront néces-
sairement, ainsi que d'autres, en fonction des spécificités de votre activité comptable.
Pour gérer une comptabilité complète, il est nécessaire d'utiliser ce qu'on appelle une "base de
données".
Qu'est-ce qu'une base de données ? Vous pouvez l'imaginer vous-même sous la forme de plusieurs
feuilles de calcul Excel liées ensemble d'une manière particulière. En outre, chaque table est créée
pour une entité spécifique, mais vous en apprendrez plus à ce sujet dans le chapitre suivant.
Pour gérer une comptabilité complète, il est nécessaire d'utiliser ce qu'on appelle une "base de
données".
Qu'est-ce qu'une base de données? Vous pouvez l'imaginer vous-même sous la forme de plusieurs
feuilles de calcul Excel liées ensemble d'une manière particulière. En outre, chaque table est créée
pour une entité spécifique, mais vous en apprendrez plus à ce sujet dans le chapitre suivant.
Comme vous pouvez le voir dans le tableau de la figure 1, tous les éléments sont empilés, ce sont :
IMPORTANT !
Les entités ci-dessus sont indépendantes et chaque entité doit avoir sa propre table. Ce processus est
également appelé normalisation.
Figure 2
Table Client - elle contient tous nos clients avec leurs numéros de téléphone.
Table Equipements - elle contient le nom de l'équipement que nous possédons, ainsi que le coût de
la location par jour.
Table Location - elle contient des informations sur l'équipement loué. (1)
1. Quand une entreprise change de numéro de téléphone, il suffit de le modifier sur une seule ligne
dans la table nommée Client
2. Il n'est pas nécessaire de saisir manuellement le nom de l'entreprise à chaque fois, cela évite ainsi
les erreurs de frappe. Nous choisissons simplement l'entreprise concernée depuis une liste.
3. Plusieurs utilisateurs de la base de données peuvent être les seuls accéder à certaines tables. Par
exemple, seul un responsable pourra ajouter une nouvelle société en tant que client dans la table
Client.
Les liens entre les tables sont peut-être l'un des sujets les plus
importants dans le domaine des bases de données
Après avoir ajouté les liens nécessaires, nos tables ressembleront à celles de la figure 3.
(1) Pour rester en conformité avec l’édition originale de ce manuel, nous conserverons les noms de tables originaux, à
savoir respectivement : Client (pour les clients,) Equipment (pour les matériels) et Rent (pour les locations).
My Visual Database – Manuel pratique 5/77
Figure 3
Notez que désormais, chaque table possède une colonne nommée id. A cause de cette colonne,
chaque enregistrement de la table dispose d'un identifiant unique.
Appelons-le correctement "Clé primaire". Lors de l'ajout d'un nouvel enregistrement à la table, il sera
automatiquement affecté à celui-ci.
Dans la table Rent, vous pouvez également remarquer l'apparition des colonnes id_Client et
id_Equipment. Ce sont elles les "clés étrangères".
C'est grâce aux clés primaires et aux clés étrangères que les relations entre les tables sont formées.
En outre, tout est simple, la clé étrangère id_Client de la table Rent pointe vers la clé primaire de la
table Client.
Ainsi, nous savons quel client traiter pour chaque entrée dans la table des locations (table Rent).
Figure 4
Par exemple, dans la table des locations, pour le dossier ayant l’ID 6, le client "Euroasfalt" a loué
l'équipement "Bulldozer TM-10".
À première vue, toutes les données dans les tableaux ne semblent être que du texte, mais ce n'est
pas le cas. Chaque colonne de la table correspond à un certain type de données, que nous allons
énumérer :
Ainsi donc, lorsque vous créez des colonnes dans une table, vous devez sélectionner son type.
Pourquoi est-ce nécessaire? Cela permet de stocker les données de manière plus rationnelle et
d'améliorer les performances de la base de données.
Cela aide également à éviter les erreurs. Par exemple, si une colonne est de type entier, l'utilisateur
ne pourra pas y saisir du texte.
My Visual Database – Manuel pratique 7/77
2 - Mise en pratique
Mais si vous décidez de réaliser un travail plus ambitieux sur les bases de données, vous devrez
probablement vous familiariser avec SQL.
Pour notre travail pratique, j'ai choisi d'utiliser un environnement de développement de base de
données assez simple, dans lequel tout est réuni pour commencer immédiatement à créer une
structure de base de données et l'application qui fonctionnera avec.
Malheureusement, le programme n'est pas gratuit, mais il propose une période d'essai, ce qui suffira
à des fins éducatives. Mais vous pouvez trouver une précédente version gratuite via ce lien :
http://myvisualdatabase.com/download/myvisualdb1.44.exe
Une fois installée, My Visual Database est immédiatement prête à l'emploi, aucune configuration
supplémentaire n'est requise (Fig.5)
My Visual Database – Manuel pratique 8/77
Maintenant, nous pouvons commencer à créer notre première application. À titre d'exemple, nous
allons créer les comptes d'équipements de construction considérés ci-dessus.
Avant de commencer à créer une application, sauvegardez le projet dans un dossier séparé (menu :
Fichier> Enregistrer sous ... ou File> Save AS… si votre menu est en anglais), appelez notre projet par
exemple Rent (Fig.6).
Comme nous l'avons vu dans le premier chapitre du livre, la base de données est composée de tables
et de colonnes, que nous devons maintenant créer.
My Visual Database – Manuel pratique 9/77
Dans l'onglet Tables de base de données (Database Tables), cliquez sur le bouton Nouvelle table
(New table) pour créer votre première table Client. De la même manière, vous allez créer les tables
Equipment et Rent.
Après avoir créé les tables, vous devriez obtenir ce qu’affiche la figure 7.
Figure 7
Encore une fois, faites attention à la figure 7 : pour chaque table créée ci-dessus, il existe un bouton
"New Field" (Nouveau champ).
Ce bouton est utilisé pour créer les champs des tables. Créons le premier champ. Cliquez sur le
bouton New field dans la table Client, puis sélectionnez le type Text dans le menu déroulant.
De la même manière, créez tous les champs suivants pour les tables restantes. Ne pas oublier de
sélectionner le bon type de champ.
My Visual Database – Manuel pratique 10/77
Table Client
▪ Name (nom du client, type TEXT)
▪ Phone (téléphone du client, type TEXT)
Table Equipment
▪ Tech (nom du matériel, type TEXT)
▪ CostPerDay (coût pour une journée, type CURRENCY)
Table Rent
▪ DateStart (date de début de la location, type DATE)
▪ DateEnd (date de fin de la location, type DATE)
▪ TotalCost (coût total, type of CURRENCY)
Figure 8
Notez qu’il faut bannir les espaces entre les noms des champs (Cost Per Day est à proscrire,
Cost_Per_Day ou CostPerDay conviennent).
Rappelez-vous que chaque table doit contenir un champ nommé id, qui stocke un identifiant unique
pour chacun des enregistrements. Vous n'avez pas besoin de vous en préoccuper, le programme le
crée automatiquement.
My Visual Database – Manuel pratique 11/77
La structure de la base de données est presque achevée, il ne reste plus qu'à créer deux clés externes
dans la table Rent qui seront associées aux tables Client et Equipment.
Ceci est nécessaire pour que, lorsque nous créerons un nouveau dossier de location, nous puissions
sélectionner un client et un équipement depuis des listes déroulantes et cette option sera sauve-
gardée dans les clés étrangères (Foreign keys).
La création de clés étrangères est presque similaire à la création de champs. Dans la table Rent,
cliquez sur New field et, dans le menu qui s'affiche, sélectionnez Relationship, puis sélectionnez
Client dans la liste et cliquez sur OK, comme indiqué dans la figure 9.
Figure 9
Faites de même pour créer une clé étrangère vers la table Equipment.
Là encore, dans la table Rent, cliquez sur le bouton New Field et sélectionnez l’item Relationship
dans le menu qui apparaît, puis sélectionnez la table Equipment dans la liste et cliquez sur OK.
La forme finale des tables et des champs est illustrée à la Fig. 10.
My Visual Database – Manuel pratique 12/77
Figure 10
Nous devons ensuite créer une interface utilisateur qui interagira avec la base de données (1) afin de
pouvoir créer, modifier et supprimer des enregistrements. Il est également nécessaire que l'appli-
cation recherche facilement des enregistrements selon différents critères.
A partir de maintenant, vous pouvez lancer votre application en cliquant sur le bouton dans la
barre d'outils. Vous verrez apparaître la fenêtre Form1, sur laquelle il n'y a rien.
Définissons les forms dont nous avons besoin. (Dans le langage de programmation Delphi, langage
natif de My Visual Database, une form est une fenêtre affichant généralement des formulaires ou
des tableaux. Nous garderons cette dénomination).
(1) Ne pas confondre base de données et table. Dans les bases de données relationnelles, une table est un ensemble
de données organisées sous forme d'un tableau où les colonnes correspondent à des catégories d'information.
Une base de données peut donc contenir une ou plusieurs tables.
My Visual Database – Manuel pratique 13/77
1. Form1
2. frmRent
3. frmClientList
4. frmClient
Formulaire destiné à créer et éditer un client. Ce formulaire écrira des données dans la
table Client.
5. frmTechList
6. frmTech
Formulaire destiné à créer et publier des informations sur les matériels de construction. Ce
formulaire écrira des données dans la table Equipment.
En règle générale, pour chaque table de la base de données, vous aurez besoin de deux formulaires,
un pour afficher tous les enregistrements et un autre pour créer ou modifier les enregistrements
dans cette table.
Pour créer une interface, vous disposez des composants que vous voyez dans la barre d'outils (Figure
11).
Figure 11
Presque tous ces composants sont standard ; ils sont généralement utilisés dans la plupart des appli-
cations Windows.
Mais nous allons les passer en revue en donnant d’eux une brève description :
My Visual Database – Manuel pratique 14/77
Arrow
Désélectionne tout autre composant sélectionné.
Label - Permet de placer une étiquette sur la form.
En général, ce composant ne possède aucune fonctionnalité.
Button - Un composant important et fréquemment utilisé.
Par exemple, il peut servir à sauver un enregistrement dans une table.
TextBox
Sert à entrer des informations texte et numérique.
Memo – C’est un champ texte multilignes.
Il sert également à saisir des informations sous forme de texte.
ComboBox – Liste déroulante
Elle permet de sélectionner une valeur depuis cette liste.
CheckBox – Case à cocher
Elle possède trois états : cochée, décochée ou grisée.
DateTimePicker
Permet d’entrer une date ou une heure (ou les deux).
DBImage
Permet de sauver une image dans une table.
DBFile
Permet de sauver un fichier dans une table.
Calendar
Permet uniquement de sélectionner une date.
TableGrid - Grille
Permet d’afficher les enregistrements d’une table sous forme de vue tabulaire.
Counter - Compteur
Affecte un numéro unique à un enregistrement.
Panel - Panneau
Elément décoratif de l’interface.
GroupBox
Elément décoratif de l’interface.
PageControl
Permet de créer des onglets commutables avec la possibilité de placer d'autres compo-
sants sur chaque onglet.
Picture - Image
Permet de placer une (ou des) images sur la form.
Google Maps
Permet d’afficher une Google Map dans votre application.
Commençons par créer le premier formulaire qui sera utilisé pour rechercher des enregistrements.
Sur ce même formulaire, nous placerons des boutons qui appelleront un autre formulaire destiné à
créer ou modifier un enregistrement.
Figure 11a
Après avoir sélectionné le composant souhaité dans la barre d'outils, faites un clic gauche sur la form
Form1 là où vous souhaitez placer ce composant.
Une fois le composant placé sur la form, si vous avez besoin de modifier le texte, vous pouvez le faire
en utilisant la propriété Caption dans le panneau "Properties" (Fig. 12).
Par exemple, si vous avez sélectionné un bouton, c’est ici que vous modifierez le texte Button1 en
Sauver.
My Visual Database – Manuel pratique 16/77
Figure 12
Placez tous les composants sur la Form1 comme indiqué dans la figure 13. Pour votre commodité, les
lignes de couleur indiquent où et quels composants doivent être placés sur le formulaire.
Figure 13
My Visual Database – Manuel pratique 17/77
Le formulaire destiné aux recherches est prêt. Sur ce formulaire, vous trouverez tous les enregistre-
ments relatifs aux locations d'un client spécifique, d'un matériel spécifique et également des enre-
gistrements en fonction de la date de début ou de fin de la location.
Appelez le formulaire pour créer un nouvel enregistrement de location, modifier une location
existante ou supprimer une location.
Sur ce même formulaire, on trouve les boutons "Clients" et "Equipements". Ces boutons sont néces-
saires pour appeler les formulaires affichant respectivement une liste de tous les clients et une de
tous les matériels.
Par curiosité, vous pouvez cliquer sur le bouton pour lancer votre projet et voir à quoi il ressemble.
Les composants du formulaire n'étant pas encore configurés, rien ne se produira lorsque vous
cliquerez dessus.
Commençons par créer le second formulaire nécessaire pour créer ou modifier l'enregistrement
d'une location.
Je vous rappelle, qu’en règle générale, la même forme est utilisée, à la fois pour la création et pour
la modification de l'enregistrement.
Figure 14
Sur le formulaire créé, nous serons en mesure de voir tous nos clients, nous aurons également la pos-
sibilité d'appeler un formulaire afin de créer un nouveau client ou de modifier un client existant.
Placez les composants sur ce formulaire comme indiqué dans la figure 15.
Figure 15
Ce formulaire est conçu pour créer un nouvel enregistrement de client ou en modifier un existant.
Placez les composants sur ce formulaire comme indiqué sur la figure 16.
My Visual Database – Manuel pratique 19/77
Figure 16
Sur le formulaire créé, vous pourrez afficher tous les matériaux que vous possédez.
Vous serez également en mesure d'appeler un formulaire pour ajouter un nouveau matériel ou mo-
difier des informations sur un matériel existant.
Placez les composants sur ce formulaire comme indiqué sur la figure 17.
Figure 17
My Visual Database – Manuel pratique 20/77
Créez la sixième et dernière form de notre projet, nommée frmTech, en cliquant sur le bouton .
Placez les composants sur ce formulaire comme indiqué sur la Figure 18.
Figure 18
Si vous lancez le projet en cliquant sur le bouton et si vous cliquez sur les boutons du formulaire,
vous remarquerez que rien ne se produit.
En effet, les composants de nos formulaires créés ne sont pas encore configurés et aucune action n'a
été assignée aux boutons. Par conséquent, nous allons procéder à la dernière étape de création
d'une application, en configurant les composants sur les formulaires.
Généralement, la configuration des composants se réduit à l'affectation d'actions aux boutons et aux
composants pour la saisie d'informations (tels que : etc.), indiquant à quelle table et à
quel champ ils appartiennent.
Commençons par les boutons. Vous devez définir l'action du bouton via le panneau "Propriétés du
composant" (Properties), en utilisant la propriété Action (figure 19).
My Visual Database – Manuel pratique 21/77
Figure 19
Dressons la liste des actions disponibles pour les boutons que nous utiliserons pour personnaliser
notre projet:
Ce bouton est destiné à créer un nouvel enregistrement, nous sélectionnons donc l'action Nouvel
enregistrement (New record) pour ce bouton. Cette action appellera le formulaire à partir duquel
le nouvel enregistrement sera créé. Pour cela, nous avons un formulaire nommé frmRent. Réglez
ce bouton comme indiqué sur la Figure 20.
My Visual Database – Manuel pratique 22/77
Figure 20
2. Bouton "Modifier"
Il est destiné à modifier l'enregistrement que l'utilisateur aura sélectionné à partir du composant
TableGrid . Choisissez l'action "Afficher l'enregistrement" (Show record).
Pour configurer cette action, vous devez spécifier le formulaire qui sera utilisé pour modifier
l'enregistrement. Réglez ce bouton comme indiqué sur la Figure 21.
Figure 21
3. Bouton "Supprimer"
Il est conçu pour supprimer l'enregistrement sélectionné par l'utilisateur dans le composant
TableGrid.
Configurez ce bouton comme indiqué dans la Figure 22. L’option cochée indique que la
suppression se fera avec confirmation.
My Visual Database – Manuel pratique 23/77
Figure 22
4. Bouton "Rechercher"
Il est conçu pour rechercher des enregistrements. Les critères de recherche sont entrés dans des
composants tels que . Chaque composant peut servir de critère pour
rechercher un champ spécifique dans la table, par exemple, rechercher uniquement par nom
d'entreprise ou numéro de téléphone.
Selon le type de champ dans la table, vous devez utiliser le composant approprié. Vous pouvez voir
ci-dessous quels types de champs peuvent être utilisés par le composant impliqué dans la recherche.
1. Sélectionnez les composants qui seront utilisés comme critères de recherche pour nos
enregis-trements. Dans notre cas, choisissez les composants suivants : ComboBox1 (client),
ComboBox2 (équipement), DateTimePicker1 (DateStart), DateTimePicker2 (DateEnd).
2. Sélectionnez la table dans laquelle nous allons rechercher. Puisque nous allons chercher des
données de location, nous sélectionnons la table DB "Rent".
3. Sélectionnez les champs de la table que vous souhaitez afficher à la suite de la recherche
dans le composant TableGrid . Dans notre cas, choisissez les champs suivants:
Rent.DateStart, Rent.DateEnd, Rent.TotalCost, Client.Name, Equipment.Tech.
My Visual Database – Manuel pratique 24/77
Quand vous utilisez un bouton lançant l'action "Rechercher" (Search), si vous voulez
afficher tous les enregistrements, il suffit de cliquer dessus en laissant à vide les
critères de recherche.
Figure 23
5. Bouton “Client”
Il est conçu pour afficher la form sur laquelle vous serons en mesure de voir tous vos clients. Vous
sélectionnez l'action "Afficher le formulaire" (Show Form) et sélectionnez également le formulaire
"frmClientList", qui sera appelé en cliquant sur ce bouton (Fig. 24).
My Visual Database – Manuel pratique 25/77
Figure 24
6. Bouton “Equipements”
Il est destiné à appeler la form sur laquelle vous serez en mesure d’afficher tous les matériels que
vous possédez. Vous sélectionnerez l'action "Afficher le formulaire" (Show form) et sélectionnerez
également le formulaire "frmTechList", qui sera affiché en cliquant sur ce bouton (Fig. 25).
Figure 25
Ceci achève la configuration des boutons sur le formulaire. Il reste à configurer les composants
ComboBox et DateTimePicker , qui sont également présents sur Form1.
La configuration de tels composants consiste, en règle générale, à préciser à quel champ spéci-fique
de la table ils appartiennent. Pour les composants présents, ce sera donc les propriétés TableName
et FieldName, l'exception concernera uniquement le composant ComboBox , pour lequel la
propriété ForeignKey sera utilisée au lieu de la propriété TableName, ce qui génèrera une clé
étrangère. Ainsi, le bouton "Rechercher" (Search) saura quel champ de la table rechercher quand
l'utilisateur aura entré les critères de recherche dans le composant. Vous allez procéder à la
configuration de ces composants.
My Visual Database – Manuel pratique 26/77
Commençez par le composant DateTimePicker1 (Début location). Dans la table Rent, la date de
début de lalocation est contenue dans le champ DateStart. Donc dans la propriété TableName, vous
sélectionnez la table Rent et dans la propriété FieldName le champ DateStart, comme montré à la
figure 26.
Figure 26
Pour le composant DateTimePicker2 (Fin location), faites de même, mais dans la propriété
FieldName, sélectionnez le champ DateEnd.
Comme mentionné ci-dessus, la configuration des composants ComboBox diffère en ce que la
propriété ForeignKey est utilisée en lieu et place de la propriété TableName. Ce composant est lié à
la clé étrangère de la table, de sorte qu’il affiche les entrées de la table référencée par la clé
étrangère, permettant à l'utilisateur de sélectionner une entrée de cette table.
Peut-être que cela peut sembler confus, alors regardons un exemple : configurons le ComboBox1
(Client).
Le bouton "Rechercher" est configuré pour qu'il aille chercher dans la table des locations (Rent).
Dans cette table, il existe une clé étrangère Rent.id_Client, que vous devez sélectionner dans la
propriété ForeignKey du composant ComboBox1 (Client). Comme son nom l'indique, la clé étrangère
id.client fait référence à la table Client. À partir du composant ComboBox1, l'utili-sateur peut
sélectionner depuis la liste des clients.
Il restera à sélectionner le champ de la table dans la propriété FieldName, dans votre cas, ce sera le
champ Name.
Par conséquent, la liste des noms des clients sera visible dans le composant (voir Figure 27).
My Visual Database – Manuel pratique 27/77
Figure 27
Vous n'avez configuré un seul formulaire, mais sans tenir compte du formulaire et de son ob-jectif,
les paramètrages du bouton et du composant sont plutôt monotones. Pour les boutons, vous devez
sélectionner l'action correcte et pour les composants, vous devez sélectionner le champ de la table à
laquelle ils appartiennent en utilisant les propriétés TableName et FieldName, dans le cas du
composant ComboBox, au lieu de la propriété TableName, vous utiliserez la propriété ForeignKey.
Par conséquent, plus tard, lors de la configuration des autres formulaires, je ne listerai que les
actions des boutons que vous devez affecter et les champs de la table à affecter aux composants du
formulaire. Je ne m'étendrai que sur la configuration de certains boutons.
ComboBox1 (Client)
ForeignKey = Rent.id_Client
FieldName = Name
ComboBox2 (Equipment)
ForeignKey = Rent.id_Equipment
FieldName = {Tech} {CostPerDay} *б. * vous en saurez plus sur cette entrée ci-dessous
Edit1 (Coût)
TableName = Rent
FieldName = TotalCost
Encore un détail sur le bouton Button1 (Save). Il est utilisé pour enregistrer des données dans la
table. Pour ce bouton, sélectionnez l'action "Sauver l'enregistrement" (Save record).
Dans les paramètres de ce bouton, il vous suffit de choisir les composants du formulaire qui seront
utilisés pour stocker les informations. Dans votre cas, vous devez sélectionner tous les composants. Il
est également nécessaire de sélectionner la table dans laquelle les informations seront sauvegar-
dées, dans votre cas, c'est la table des locations (Rent) (figure 28).
Figure 28
My Visual Database – Manuel pratique 29/77
Ce bouton referme le formulaire sans enregistrer les informations dans la base de données. Pour
cela, choisissez simplement l'action "Fermer le formulaire" (Close form). Cette action ne nécessite
aucun paramètre (Figure 29).
Figure 29
Ce formulaire est destiné à visualiser tous vos clients présents dans la table. On trouve également sur
cette form des boutons permettant de créer, modifier ou supprimer un client de la table.
Pour que tous les clients de la table apparaissent dans le composant Grille (TableGrid1) , vous
devez le configurer. Pour accéder à la boîte de dialogue des paramètres de ce composant, cliquez sur
le panneau "Propriétés" (Properties) du composant puis sur l'élément "Paramètres" (Settings). (Fig.
30)
Figure 30
My Visual Database – Manuel pratique 30/77
Parmi les paramètres de ce composant, vous devez sélectionner la table à partir de laquelle vous
souhaitez afficher et sélectionner les champs nécessaires à l’affichage dans ce composant. Configurez
le comme indiqué dans la Figure 31.
Figure 31
Prêtez attention à la coche "Afficher tous les enregistrements de la table" (en rouge), elle doit être
sélectionnée. Ensuite, il suffit de lister les paramètres des boutons de création, de modification et de
suppression des enregistrements (nous avons déjà vu ces boutons en détail lors de la configuration
de Form1).
Nouveau client
Action = New record
Form = frmClient
Modifier
Action = Show record
Table component = TableGrid1
Form = frmClient
Supprimer
Action = Delete record
Table component = TableGrid1
My Visual Database – Manuel pratique 31/77
Je vous suggère ensuite de personnaliser le reste des forms, vous avez seulement besoin d'assigner
les bonnes actions aux boutons et au reste des composants, en spécifiant correctement les pro-
priétés TableName et FieldName.
La form frmClient est destinée à créer ou modifier des données client, sa configuration est similaire à
celle de la form frmRent.
La configuration de la form frmTech est similaire à celle des forms frmRent et frmClient.
Une fois achevés les paramétrages des forms restantes, il sera temps de tester votre projet en
cliquant sur le bouton .
Avant d'entrer des données sur la location d'équipements, vous devez saisir tous vos clients. Pour ce
faire, cliquez sur le bouton «Clients» situé sur la form principael. La form frmClientList apparaît à
partir de laquelle vous pouvez entrer des clients en cliquant le bouton "Nouveau client" (Figure 32).
Figure 32
En outre, vous devez entrer dans la table les équipementss que vous possédez. Pour cela, sur la form
principale Form1, se trouve un bouton "Equipements", qui appellera la form frmTechList. Appuyez
sur le bouton "Nouveau matériel" pour entrer les données requises (Figure 33).
My Visual Database – Manuel pratique 32/77
Figure 33
Commençez à entrer des informations sur la location de vos équipements. Pour ce faire, sur la form
principale, cliquez sur "Nouvel équipement".
Comme vous pouvez le voir maintenant, vous avez le client et l'équipement loué par lui, (vous les
avez choisis depuis une liste).
Il reste à saisir manuellement les dates du début et de la fin de la location, ainsi que le coût total de
celle-ci (Figure 34).
My Visual Database – Manuel pratique 33/77
Figure 34
Sur la figure 35, vous pouvez voir la fenêtre principale du programme avec des informations sur le
locations.
My Visual Database – Manuel pratique 34/77
Figure 35
Désormais, à partir du formulaire principal (Form1), vous pouvez utiliser la récupération de don-
nées, par exemple, en sélectionnant un client dans la liste déroulante "Client", puis en cliquant sur le
bouton "Rechercher", vous aurez toutes les données sur ce client.
Félicitations ! Votre première application utilisant une base de données est prête !
Si vous ouvrez le dossier du projet, vous trouverez un fichier eхecutable (.ехе). Ce projet pourra être
exécuter sur n'importe quel ordinateur, sans avoir à installer le programme My Visual Database.
Copiez simplement le dossier de votre projet avec tous ses fichiers.
Pour être honnête, l'interface que vous avez créée présente un inconvénient.
Par exemple, lorsqu'un nouveau client (dont les informations ne sont pas encore dans la table) veut
louer, il faut d'abord cliquer sur le bouton "Clients" pour entrer ses données. Ensuite, sur la form
principale (Form1), cliquer sur le bouton "Nouvelle location". C'est à dire, sur la form "frmRent",
sélectionner le client dans la liste des clients et entrer seulement ensuite les données sur le matériel
loué par lui. Et maintenant, imaginez que le client veut louer 10 matériels différents ? Vous devrez
sélectionner le même client 10 fois dans la liste de la form "frmRent". D'accord, ce n'est pas trèst
pratique !
Par conséquent, je suggère que nous remodelions ce projet, dans lequel nous allons créer une autre
interface plus pratique. La structure de la base de données restera la même.
Ne pensez pas que c'est un caprice. Avec la la nouvelle interface, nous envisagerons la possibilité de
sortir des enregistrements enfants pour le composant TableGrid1.
My Visual Database – Manuel pratique 35/77
Alors, allons-y !
Créez un nouveau projet (Menu: Fichier> Nouveau projet) et enregistrez-le immédiatement dans un
dossier séparé, par exemple, «Rent Project 2». Nommez le projet "Rent2", comme le montre la
figure 36.
Figure 36
Ensuite, dans l'onglet "Database Table", vous devez créer exactement la même structure de bases de
données que dans le projet précédent.
Figure 37
Comme vous connaissons déjà le processus de création des tables et des champs, vous ne vous
attarderez pas là-dessus en détail.
Cliquez sur l'onglet "Form1" et nous parlerons du concept des fichiers enfants.
La principale différence entre notre projet actuel et sa version précédente sera que sur la form
"frmClient", qui est destinée à créer / modifier un client, vous allez également placer un composant
TableGrid, qui affichera les enregistrements des équipements loués par ce client. En d'autres
termes, les enregistrements enfants appartenant au client seront affichés sur ce composant.
Prenons l'exemple d'un client nommé "KH Services", qui a loué des matériels de la table "Rent".
Comme vous pouvez le voir, ceux-ci sont marqués en rouge et ces enregistrements sont des enfants,
en relation avec le client "KH Services" de la table "Rent".
Notez également que pour les enregistrements enfant, il existe toujours une clé étrangère qui fait
référence à l'enregistrement parent.
My Visual Database – Manuel pratique 37/77
Figure 38
Et pour que cela devienne clair, je vais aller plus loin en avant et le montrer à ressembler le
formulaire "FrmClient" dans le projet déjà terminé (Figure 39).
Figure 39
Pour rendre l'utilisation du programme plus pratique, au lieu des enregistrements des locations, je
propose d'afficher la liste des clients sur la form principale ("Form1"). Aussi sur la form permettant
My Visual Database – Manuel pratique 38/77
de créer / modifier le client ("frmClient"), placez un composant TableGrid qui affichera les matériels
loués par le client. Pour parler un langage clair, nous montrerons les enregistrements enfants du
client. Aussi sur cette form, il y aura des boutons pour ajouter/modifier/supprimer des matériels
loués par ce client.
Ainsi, lorsqu'un nouveau client viendra chez vous, il suffira de cliquer sur le bouton "Nouveau client"
sur la form Form1, après quoi le formulaire "frmClient" apparaîtra dans lequel vous entrerez ses
données et, sur ce même formulaire, vous appuyerez sur le bouton "Nouvelle location", ce qui
provoquera l'apparition de la form "frmRent", sur lequel vous sélectionnerez le matériel loué, les
dates de location et leurs coûts.
En outre, si le client a besoin de louer le même équipement 10 fois, vous n'aurez plus à sélectionner
10 fois ce client pour créer un fichier de location.
1. Form1
Formulaire pour rechercher des clients. Ce même formulaire sera le principal, il apparaîtra
dès le lancement de votre application.
2. frmClient
Form de création et de modification d'un client. Cette form écrira des données dans la table
Client. Également sur la form, il y aura une liste déroulante des matériels loués par ce client.
3. frmRent
Form pour créer et modifier un enregistrement de location. Cette form écrira les données
dans la table Rent.
4. frmTechList
5. frmTech
Form permettant de créer et d’afficher des informations sur un matériel. Cette form écrira
les données dans la table Equipment.
Comme vous pouvez le constater, vous avez désormaist besoin d'une form en moins, ce qui
est plutôt une bonne chose. Allez-y !
La Form1 :
Placez les composants sur la Form1 comme présenté sur la Figure 40.
My Visual Database – Manuel pratique 39/77
Figure 40
Sur cette form, vous pourrez rechercher le client par son nom ou son numéro de téléphone.
Il existe également des boutons permettant d'appeler une form pour créer ou modifier un client, ou
encore supprimer ce client de la table.
Et un bouton nommé "Equipements", qui appellera une autre form affichant une liste des matériels
que vous possédez.
La form frmClient :
Figure 41
Cette form offre une importante différence par rapport à celle de votre projet précédent. Désor-
mais, la location de matériels ne se trouve plus sur la form principale, mais sur la form frmClient, et
sur cette form, vous voyez non seulement les données du client, comme son nom et son téléphone,
mais également tous les enregistrements associés aux locations de ce client.
La form frmRent :
Créez un nouveau formulaire en cliquant sur le bouton .
Entrez comme nom de la form : frmRent
Placez les composants sur cette form comme indiqué sur la Figure 42.
Figure 42
My Visual Database – Manuel pratique 41/77
Cette forme est conçue pour saisir l'enregistrement d'une localisation. Notez que, contrairement à
votre projet précédent, il n'y a pas de liste déroulante à partir de laquelle vous pourriez choisir le
client qui a loué un équipement spécifié.
Le fait est que la form frmRent sera appelée à partir du formulaire frmClient, ainsi le programme
associera automatiquement le client à ce formulaire et l'enregistrement de l'équipement loué appar-
tiendra automatiquement au client dont les données seront présentes sur le formulaire frmClient. En
d'autres termes, vous n'avez plus besoin de vous inquiéter, le programme associera automatique-
ment le client à l'équipement qu'il a loué.
La form frmTechList :
Créez un nouveau formulaire en cliquant sur le bouton .
Donnez lui comme nom : frmTechList.
Disposez les composants sur cette form comme indiqué dans la Figure 43.
Figure 43
Sur la form créée, vous serez en mesure de voir tout les matériels que vous possédez, avec la pos-
sibilité d'appeler un formulaire pour ajouter de nouveaux équipements ou modifier les informations
sur des matériels existants.
La form frmTech :
Créez un nouveau formulaire en cliquant sur le bouton .
Donnez lui le nom : frmTech.
Disposez les composants sur cette form comme indiqué sur la Figure 44.
My Visual Database – Manuel pratique 42/77
Figure 44
Elle est conçue pour créer/modifier l'équipement que vous possédez, en indiquant son coût de
location par jour.
Passez à la dernière étape de la création de l'application, pour configurer les composants sur le
formulaire.
Comme vous vous en souvenez, la configuration des composants se réduit à l'affectation d'actions
aux boutons et les composants destinés à entrer des informations (comme ,etc.)
indiquent à quelle table et à quel champ ils appartiennent.
Vous allez procéder à la configuration des formulaires. Je n'indiquerai que les actions à affecter aux
boutons et les champs de la table à attribuer aux composants de la form. Je vais m'attarder sur les
composants dont le réglage est différent du projet précédent.
Configuration de la Form1 :
Téléphone (EditBox)
TableName = Client
FieldName = Phone
Modifier (Button)
Action = Show record
Table component = TableGrid1
Form = frmClient
My Visual Database – Manuel pratique 43/77
Supprimer (Button)
Action = Delete record
Table component = TableGrid1
Comme je l'ai mentionné ci-dessus, sur la form principale, vous verrez désormais les enregistrements
des clients, plutôt que les enregistrements des locations, comme dans le projet précédent : Ce
bouton recherchera donc les données dans la table Client au lieu de la table Rent.
Sur la Figure 45, vous pouvez voir les paramétrages du bouton Rechercher :
Figure 45
My Visual Database – Manuel pratique 44/77
Téléphone (EditBox)
TableName = Client
FieldName = Phone
Modifier (Button)
Action = Show record
Table component = TableGrid1
Form = frmRent
Supprimer (Button)
Action = Delete record
Table component = TableGrid1
Figure 46
My Visual Database – Manuel pratique 45/77
Examinez de plus près le réglage (Figure 47) du composant TableGrid1 (équipements loués par le
client). Sur ce composant, vous verrez les enregistrements des locations rattachées au client, dont
vous voyez les données sur la form en cours (frmClient).
Figure 47
Notez l'option sélectionnée "Afficher les enregistrements enfants (si présents)" (Show child records
(if present)). Ainsi, sur ce composant, les enregistrements enfants seront automatiquement affichés,
dans votre cas, en rapport avec le client.
En d'autres termes, vous verrez les enregistrements des locations appartenant au client.
Si quelqu'un a oublié ce que les enregistrements enfant sont, vous pouvez regarder la figure 48.
My Visual Database – Manuel pratique 46/77
Figure 48
Par exemple,. si vous voyez des données sur le client KH Services sur la form frmClient, alors sur le
composant TableGrid1, vous verrez les enregistrements enfants de la table Rent, qui sont marqués
en rouge dans la figure 48.
La configuration d'autres forms, telles que frmRent, frmTechList, frmTech, n'est pas différente de
celles de notre projet précédent, configurez-les vous-même.
Une fois que vous aurez achevé les paramétrages des forms restantes, il sera temps de lancer votre
projet en cliquant sur le bouton et de tester votre travail.
Comme dans le projet précédent, vous devez d'abord ajouter à la base de données les matériels que
vous possédez et leur coût de location pour 1 journée.
Pour cela, sur la form principale, cliquez sur le bouton "Equipements" (Fig.49).
My Visual Database – Manuel pratique 47/77
Figure 49
Après avoir entré dans la table tous les matériels que vous possédez, vous pouvez directement com-
mencer à travailler.
Disons que KH Services vous a demandé les locations d'un bulldozer TM-10, d'un camion-grue K-4561
et d'un tracteur Kenworth W900.
Si c’est la première fois que cette société vous a sollicité, alors sur la form principale, vous cliquerez
sur le bouton "Nouveau client".
La form frmClient apparaît à partir de laquelle vous entrerez les données sur ce client et sur la même
form, vous cliquerez sur le bouton "Nouvelle location" afin d'affecter à ce client les matériels qu'il
veut vous louer (figure 50).
My Visual Database – Manuel pratique 48/77
Figure 50
Au lieu de cela, vous devriez le trouver sur la form principale et cliquez sur le bouton "Modifier", qui
appellera le formulaire frmClient, où vous affecterez également le prochain matériel loué en utilisant
le bouton "Nouvelle location".
Sur la form principale, en utilisant le champ "Nom du client", vous pouvez rechercher dans la base de
données pour trouver le client.
Vous devez également entrer son nom dans la EditBox, ce qui n'est pas toujours pratique.
Par conséquent, dans les paramètres de cette zone de texte, vous pouvez modifier le mode de
recherche partielle, de sorte que vous trouverez le client KH Services même si vous entrez
simplement service comme critère de recherche.
Pour ce faire, recherchez la propriété Filter et sélectionnez % s% comme indiqué dans la Figure 51.
My Visual Database – Manuel pratique 49/77
Figure 51
Parlons de la normalisation de la base de données. Si quelqu'un préfère une explication dans un style
académique, il peut obtenir des informations via ce lien Wikipédia :
https://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles)
Je vais essayer d'expliquer les principes de la normalisation dans un langage plus simple utilisant des
exemples. En premier lieu, vous devez comprendre pourquoi il est nécessaire de normaliser la struc-
ture d’une base de données.
La normalisation est un ensemble de règles auxquelles vous devez adhérer lors de la création de la
structure de la base de données. Cela vous aidera à éviter les erreurs dans cette structure, qui peu-
vent conduire à avoir des données redondantes, voire contradictoires.
Sans le savoir, depuis le début du livre, vous procédiez déjà à la normalisation, en considérant les
problèmes de stockage des données dans une table et en les divisant en plusieurs tables plus petites.
Imaginez que vous ne connaissiez pas les règles de conception d'une base de données et que vous
deviez créer une table avec une structure similaire à cellle de la Figure 52 :
My Visual Database – Manuel pratique 50/77
Figure 52
Procédez à la normalisation.
La variable de rapport est dans la première forme normale si et seulement si, dans toute
valeur admissible de la relation, chacun de ses tuples ne contient qu'une seule valeur pour
chacun des attributs.
En termes simples, il ne devrait pas y avoir plusieurs valeurs dans un champ : un champ = une valeur.
Dans votre exemple, considérez à la colonne "Hobby", dans laquelle les passe-temps de la personne
sont séparés par une virgule. Rappelez-vous : ceci n'est pas autorisé .
Pour garantir que la table ne viole pas cette règle, vous devrez créer des enregistrements supplé-
mentaires pour chacun des passe-temps de la personne, c'est-à-dire dupliquer les données, créant
ainsi intentionnellement de la redondance dans la table (Figure 53).
Figure 53
La règle de la deuxième forme normale nous aidera à nous débarrasser de cette redondance des
données.
La variable de rapport est dans la seconde forme normale si et seulement si elle est dans
la première forme normale et si chaque attribut non clé irréductiblement (fonction-
nellement complet) dépend de sa clé potentielle.
En langage clair, chaque table doit avoir une clé primaire qui identifie de manière unique l'entrée
dans la table. Dans notre cas, c'est la colonne avec le titre id, dans lequel l'identifiant de l'enregistre-
ment est stocké, il est unique pour chaque entrée de la table.
My Visual Database – Manuel pratique 51/77
Si vous utilisez le programme My Visual DataBase, lors de la création d'une table, cette
clé sera toujours créée automatiquement. Vous n'avez même pas besoin de vous en
préoccuper.
Cette règle stipule également qu'il ne devrait pas y avoir de données dupliquées dans la table
(redondance). Si vous regardez la table (Figure 53), qui est dans la première forme normale, certains
enregistrements contiennent les mêmes données, c'est-à-dire que les données sont dupliquées. La
raison en est la colonne "Hobby".
Pour résoudre ce problème de la redondance des données, vous devez créer une autre table, dans
laquelle vous stockerez le passe-temps du personnel et il y aura également dans la table une clé
étrangère qui déterminera quelle personne a un tel passe-temps spécifié.
Maintenant que vous avez deux tables, vous pouvez créer n'importe quel passe-temps appartenant
à une personne, évitant ainsi la redondance des données. Pour le comprendre, regardez la figure 54.
Figure 54
La troisième forme normale
La variable de rapport est dans la troisième forme normale si et seulement si elle est dans
la deuxième forme normale, et s'il n'y a pas de dépendances fonctionnelles transitives des
attributs non clés pour les clés.
D'abord, voyons ce qu'il en est. Notez que dans la table des Locations (Figure 53), il existe des
colonnes Ville et Index. Malheureusement, les gens peuvent se tromper. Supposons que la personne
qui remplit la table fasse une erreur et saisisse un employé habitant Yaroslavl Tver, alors devriez-vous
l’accepter? Si oui, vous obtiendrez des données contradictoires.
Ainsi, les colonnes City et Index dépendent-elles les unes des autres. Mais si nous connaissons
l'Index, nous pouvons trouver la ville par le biais de cet index. Donc, pourquoi ne pas stocker uni-
quement l'index dans la table des effectifs?
My Visual Database – Manuel pratique 52/77
Maintenant, pour se débarrasser de cette dépendance transitive, vous devez créer deux autres
tables. Une table avec les noms des villes et une table avec les index, dans laquelle il y aura égale-
ment une clé étrangère, qui déterminera à quelle ville se réfère l'index (Fig. 55).
Figure 55
Dans la pratique, vous n'utiliserez pas toujours la troisième forme normale, laissant des champs avec
une dépendance transitive.
Si vous concevez une base de données qui sera utilisée, par exemple, dans un Manuel, vous pouvez
la remplacer et la laisser tel quelel, en sacrifiant, par souci de simplicité, l'émergence possible de
données conflictuelles. Mais si vous concevez une base de données à utiliser, par exemple, dans le
secteur bancaire, à votre place, je n'ignorerais pas la troisième forme normale.
Revenons à la figure 55, car dans la table Persons, il y a deux autres champs avec une dépendance
transitive. Ces champs sont Salaire et Taxe. Supposons que vous imposiez une taxe fixe de 13%,
connaissant le salaire, vous pouvez toujours calculer la taxe. Normalement, vous n'avez pas besoin
de stocker dans une table des données qui peuvent être obtenues à partir d'autres champs de cette
table, de sorte que vous pouvez supprimer le champ Tax en toute sécurité.
Une fois que vous aurez compris ces règles, elles vous sembleront tout à fait
naturelles. Lors de la conception de bases de données, vous ne remarquerez
même pas à quel point vous allez instinctivement complètement les adopter.
Lancez My Visual Database et ouvrez à nouveau votre projet, qui se trouve dans le dossier "Rent
project2". Cliquez sur l'onglet "Database Tables" pour voir les tables créées dans votre base de
données (voir Figure 56).
My Visual Database – Manuel pratique 53/77
Figure 56
Parfois, vous devez supprimer d’une base de données un client avec toutes les données qui lui sont
associées.
Dans votre cas, si vous supprimez le client (table Client), vous devez également supprimer toutes les
données sur ses locations de matériels (table Rent), sinon vous aurez des enregistrements locatifs
faisant référence à un client inexistant, ce qui est inacceptable.
Notez la clé étrangère client_id dans la table Rent, qui référence le client dans de la table Client.
Pour cette clé étrangère, il est nécessaire d'opérer ce qu'on appelle une suppression en cascade.
Par conséquent, lorsque le client est supprimé de la table Client, les enregistrements de la table Rent
sont automatiquement supprimés.
Tout ce qui fait référence au client est supprimé à cause de la clé étrangère id_Client.
En d'autres termes, la suppression d'un enregistrement parent supprimera également les enregis-
trements enfants.
Activez la suppression en cascade pour une clé étrangère, comme illustré à la Figure 57.
My Visual Database – Manuel pratique 54/77
Figure 57
En fait, sans la suppression en cascade, vous ne pourrez pas supprimer le client de la table Client car
celui-ci est enregistré ailleurs pour ses locations. En d'autres termes, dans la table Rent, il y a des
entrées pour lesquelles la clé étrangère client_id fait référence au client. De plus, un message vous
avertira.
Mais si aucune location n’a encore été enregistrée pour ce client, vous pouvez le supprimer de la
table Client car l'intégrité des données ne sera pas compromise.
La même chose peut être dite à propos de la clé étrangère id_Equipment dans la table Rent. Vous ne
pouvez pas supprimer un matériel de la table Equipment si au moins une entrée fait référence à cet
équipement dans d'autres tables.
Ainsi, la base de données conserve automatiquement son intégrité pour empêcher la situation où
une clé étrangère fait référence à un enregistrement inexistant.
Ainsi donc, en utilisant la suppression en cascade, vous supprimez l'enregistrement et toutes les
données associées à cet enregistrement dans les tables, ou vous ne supprimez rien du tout.
En général, il n'est pas autorisé de supprimer quoi que ce soit de la base de données,
mais il est recommandé de marquer l'entrée comme une archive en utilisant un
champ de type "Oui / Non".
Et puis une erreur peut se produire. Vous pouvez être fortement tenté de créer un nouveau champ
texte dans la table "Client", où vous entrez simplement le type de client. Par conséquent, vos don-
nées dans la table "Client" ressemblent, par exemple, à la Figure 58.
Figure 58
Faites attention à la colonne "Type de client". Selon le propos de cette colonne, vous ne pouvez avoir
que deux valeurs, "Entité Légale" ou "Personne physique", vous constatez donc la redondance
apparente des données, ce qui contredit la seconde forme normale (Chapitre 2.2).
Il ne sert à rien, pour chaque client, de saisir manuellement son type. Ceci est inacceptable lors de la
conception de bases de données. Par la suite, cela affectera ses performances, il y aura également
une plus grande probabilité d'erreurs. Par exemple, quelqu'un décide qu'il suffit d'écrire juste "Jur
Soc", ou "Yu.L.", perdant ainsi l'intégrité des données et compliquant grandement tout travail sur
elles.
La bonne solution consiste à créer une autre table dans laquelle on entrera les types de clients
autorisés, appelons-la "ClientType". Et dans la table "Client", créez une clé étrangère qui se référera
à la table "ClientType" pour que l'identifiant du type de client sélectionné soit sauvegardé. Pour le
rendre plus clair, jetez un oeil à la figure 59.
Figure 59
Par cette approche, vous n'avez pas, à chaque fois, besoin d'entrer manuellement le type de client , il
suffit de le sélectionner depuis la liste. En outre, vous pouvez ajouter de nouveaux types de clients au
tableau "ClientType", par exemple "Entrepreneur individuel", "Dupont S.A.", etc.
My Visual Database – Manuel pratique 56/77
En outre, rien ne vous empêche de renommer les types de clients, cela n'affecte pas l'intégrité des
données. Dans la clé étrangère "id_CustomerType" de la table "Client", seul l'identifiant numérique
du type client est stocké, et non sa représentation textuelle.
1. Comme mentionné ci-dessus, vous devezs créer une autre table dans la base de données, appelez-
la "CustomerType".
2. Dans cette table, vous devez créer une colonne de type TEXT, appelez-le "TypeName".
3. Dans la table "Client", créez un lien vers la table "CustomerType".
Figure 60
Regardez les forms frmTechList et frmTech. Exactement les mêmes besoins doivent être créés pour
travailler avec les types de clients. La première consiste à afficher la liste des enregistrements ajoutés
et la seconde à créer/modifier des enregistrements.
Créez une nouvelle form nommée frmCustTypeList et placez dessus un composant TableGrid et trois
boutons, comme illustré dans la Figure 61.
My Visual Database – Manuel pratique 57/77
Figure 61
Créez également une form appelée frmCustTypeAdd, comme montré sur la Figure 62.
Figure 62
TableGrid1
3. Sélectionnez l'option "Afficher tous les enregistrements de la table" (Show all records
from the table).
Ensuite, configurez les boutons pour créer, éditer et supprimer des entrées :
Modifier
Action = Show record
Table component = TableGrid1
Form = frmCustTypeAdd
Delete
Action = Delete record
Table component = TableGrid1
Button1 (Sauver)
Action = Save record
Component to save = Edit1
Table = CustomerType
Figure 63
Sur le formulaire principal, vous ajouterez le composant ComboBox qui vous permettra de filtrer les
enregistrements par type de client.
Allez ensuite dans les paramètres du bouton "Rechercher" pour ajouter ce composant (ComboBox1)
à la liste "1. Sélectionnez les composants impliqués dans la recherche", (Select the fields …). Ce
composant participera donc également à la recherche.
Dans la table "CustomerType", sélectionnez le champ "TypeName", afin qu'après la recherche, vous
sachiez à quel type appartient le client.
Placez un nouveau bouton sur la form qui appellera le formulaire "frmCustTypeList" afin que vous
puissiez ajouter les types de clients.
Tout comme sur la form précédente, vous devez ajouter un composant ComboBox pour pouvoir
choisir le type auquel le client appartient.
My Visual Database – Manuel pratique 60/77
Enfin, dans les paramètres du bouton "Enregistrer", ajoutez le composant ComboBox1 à la liste
"1.Sélectionner les composants impliqués dans l'enregistrement de l'enregistrement" (Select the
components involved …) pour que les données de ce composant soient enregistrées.
Figure 64
Vous pouvez maintenant lancer le projet et ajouter des types de clients en cliquant sur le bouton
"Types de clients" sur la form principale, comme illustré à la Figure 65.
My Visual Database – Manuel pratique 61/77
Figure 65
En ajoutant des types de clients, vous pouvez commencer à les utiliser pour les clients existants et
nouveaux, en indiquant le type auquel ils appartiennent (Figure 66).
Figure 66
My Visual Database – Manuel pratique 62/77
Et enfin, afin donner vie à l'interface, pour chaque bouton, vous pouvez sélectionner votre icône en
utilisant la propriété Icon (voir Figure 66a).
Figure 66a
My Visual Database – Manuel pratique 63/77
3. L’impression
1. Le moyen le plus simple pour imprimer consiste à envoyer les données contenues dans le
composant TableGrid vers Microsoft Excel, puis à utiliser les fonctions intégrées de ce
programme pour les imprimer. Le bouton avec l'action "Ouvrir dans Excel" (Open in
Excel) vous aidera comme ceci (Figure 67).
Figure 67
2. Utilisez le document Microsoft Word comme modèle d'impression. Après avoir émis le
document d'une certaine manière, vous pouvez insérer des données dans des endroits
pré-préparés. Cette méthode implique l'utilisation d'un script simple, qui sera discuté
dans le chapitre sur les scripts de programmation.
3. Utilisez le concepteur d’état intégré. Cette méthode est la plus avancée et vous permet
d'implémenter n'importe quel rapport avec d'autres impressions et d'exporter vers
d'autres formats populaires (doc, xls, pdf et bien d'autres). Nous verrons cela en détail
dans le prochain chapitre.
A titre d'exemple, vous imprimerez un contrat simple, qui précise la responsabilité du client envers la
sécurité du matériel loué par lui. Cela ressemblera à la figure 68.
My Visual Database – Manuel pratique 64/77
Figure 68
Pour créer un état et l'imprimer, vous devez utiliser un bouton avec l'action "Rapport" (Report).
Placez le bouton sur la form principale (Form1) de votre projet et appelez-le "Contrat de
responsabilité", comme indiqué dans la figure 69.
Figure 69
Le réglage du bouton avec l'action "Rapport" (Report) est presque le même que celui du bouton avec
l'action "Recherche" (Search), car en fait les deux actions recherchent dans la base de données
l’extraction du résultat de la recherche, mais dans votre cas , le résultat de la recherche sera vu lors
de l'impression.
Figure 70
2. Sélectionner la table où effectuer la recherche (Select the database table to search for).
Vous voulez imprimer des informations sur le client, sélectionnez la table Client.
Puisque vous avez encore besoin de créer un modèle d’état, ce paramètre sera "Ouvrir le
concepteur d’état ..." (Open report designer).
Un modèle d’état est un fichier qui en déterminera l'apparence. Ce fichier est créé
par le concepteur d’état et sera enregistré dans le dossier Report de votre projet.
Dans le projet en cours, cliquez sur le bouton "Imprimer la responsabilité", créé précédemment, afin
d'ouvrir le concepteur d’état.
Créer un modèle simple n'est pas compliqué. Dans la Figure 71, vous pouvez voir où les objets ont
été placés. Faites de même.
Figure 71
Une fois que tout est prêt, allez dans le menu Fichier> Aperçu (Ctrl + P). Vous devriez voir un état
prêt à imprimer, le même que celui sur la Figure 68.
Il reste à enregistrer cet état dans un fichier via le menu Fichier> Enregistrer (Ctrl + S).
Nommez ce fichier, par exemple "Responsibility", comme indiqué dans la Figure 72.
My Visual Database – Manuel pratique 67/77
Figure 72
Dernière étape. Fermez le projet en cours et revenez aux paramètres du bouton "Contrat de
responsabilité".
Dans les paramètres "4. Sélectionnez le modèle de rapport" (Select report file), au lieu de "Ouvrir le
concepteur d'état", sélectionnez dans la liste le modèle de rapport précédemment enregistré
"Responsability.fr3", comme indiqué dans la Figure 73.
Figure 73
Maintenant vous pouvez relancer le projet. Après avoir sélectionné le client requis dans le
composant TableGrid1, cliquez sur le bouton "Contrat de responsabilité" pour afficher un état prêt à
imprimer avec les données du client sélectionné.
Parfois, il est pratique, mettre le bouton d'impression directement sur le formulaire d'ajout/
modification. Copiez donc le bouton "Contrat de responsabilité" sur le formulaire frmClient.
Dans les paramètres de ce bouton, supprimez le composant TableGrid1 de la liste "1. Sélectionnez
les composants impliqués dans la recherche". En fait, si le bouton avec l'action "Report" est placé
sur le formulaire à ajouter/modifier, il détectera automatiquement quel enregistrement envoyer à
l'imprimante.
My Visual Database – Manuel pratique 68/77
Créez un autre état, mais un peu plus complexe. Maintenant, vous devez imprimer les données sur le
client, avec toutes ses locations de matériels. Par conséquent, vous publierez un état comme celui
indiqué dans la Figure 74.
Figure 74
Placez ensuite sur la form principale (Form1) un nouveau bouton appelé "Matériels loués", comme
indiqué dans la Figure 75.
Figure 75
Pour ce bouton, sélectionnez l’action "Report", les paramétrages de ce bouton sont affichés sur la
Figure 76.
My Visual Database – Manuel pratique 69/77
Figure 76
Les réglages de ce bouton sont pratiquement les mêmes que ceux du bouton "Contrat de
responsabilité", seuls les nouveaux champs que vous devez voir dans le rapport seront ajoutés à
l'item "3.Le résultat", (The result).
Ici, il est intéressant de mentionner une nuance. Comme vous pouvez le voir dans les paramètres,
pour sélectionner le résultat, vous sélectionnez les champs de 4 tables différentes (Client,
Equipement, Rent, CustomerType). Dans d'autres programmes, il est nécessaire de compiler une
requête SQL qui spécifiera manuellement comment une table est associée à une autre table et dans
quel ordre.
Le programme My Visual Database tente de comprendre par lui-même comment lier les tables les
unes aux autres pour obtenir exactement les données que vous attendez, éliminant ainsi la nécessité
d'étudier le langage de requête SQL.
My Visual Database – Manuel pratique 70/77
Malheureusement, le programme ne peut pas toujours prédire le besoin de lier des tables pour
obtenir les données que vous souhaitez afficher. Cette situation peut se produire lors-que vous devez
associer 3 tables ou plus sans liens évidents entre elles.
Ainsi, par exemple, il n'y a pas de lien entre la table "Client" et "Equipment", la relation entre ces
tables est réalisée par le biais d'une troisième table "Rent".
Que faudrait-il faire? Dans l'onglet "Tables de la base de données", (Database tables), sous chaque
table, il y a une coche "La table est un dictionnaire" (The table is a dictionnary).
Sur cet onglet, vous devez noter quelles tables de votre projet sont des dictionnaires. Mais comment
savoir quelles tables sont des dictionnaires?
Des exemples de tables dictionnaires peuvent contenir des noms de pays (Russie, France,
Angleterre), des statuts (ouverts, fermés), des types (personne morale, individu), des noms avec des
prix, etc.
En règle générale, de telles tables sont remplies en premier lieu lorsque vous commencez à travailler
avec elles et ne seront pas modifiées plus tard.
Dans votre projet, les tables dictionnaire peuvent inclure "CustomerType" et "Equipment", cochez la
case "La table est un dictionnaire" sous ces tables.
Si cette case est cochée, vous aiderez le programme à associer correctement les tables entre elles.
Et ainsi, vous pouvez continuer à créer un état sur les matériels loués par le client.
Vous vous en souvenez, pour créer un modèle d'état, vous devez exécuter votre projet .
Dans le projet en cours, cliquez sur le bouton "Matériels loués", créé précédemment sur la Form1,
pour ouvrir le Concepteur d'état.
Cet état sera légèrement plus complexe que le précédent, puisque ce qu'on appelle des blocs (ou
bandes) seront utilisés.
Les blocs vous permettent de créer presque n'importe quelle structure d'un état, vous allez
maintenant prendre des dispositions avec certains d'entre eux.
Pour voir tous les blocs disponibles, cliquez sur l'icône à gauche et vous verrez le menu, comme
indiqué dans la Figure 77.
My Visual Database – Manuel pratique 71/77
Figure 77
Vous allez procéder à la création d'un état utilisant des blocs ; au passage, vous allez apprendre à
quoi qu'ils servent.
Dans le menu illustré à la Figure 77, sélectionnez le bloc Titre du rapport (Report Title), après quoi ce
bloc apparaîtra dans l'état. Dans ce bloc, vous pouvez mettre le titre du rapport, par exemple son
nom. Les informations de ce bloc ne seront imprimées que sur la première page de votre rapport.
Entrez le nom du rapport dans ce bloc. Vous devriez doncobtenir ce qu’affiche la figure 78.
Figure 78
My Visual Database – Manuel pratique 72/77
Placez ensuite un bloc PageHeader. Les informations placées dans ce bloc seront affichées sur cha-
que page imprimée (au cas où votre état ne tiendrait pas sur une page).
Dans ce bloc, vous allez mettre des informations sur le client. En outre, vous allez y placer les en-
têtes pour la table qui sera située dans le bloc suivant.
Placez des champs de texte et de données dans ce bloc, comme illustré à la Figure 79.
Figure 79
Ce bloc est conçu pour afficher des informations sous la forme d'un tableau.
Avec ce bloc, vous obtiendrez un tableau dans lequel tout le matériel loué par le client sera transféré.
Avant qu'il apparaisse sur l'état, vous verrez une fenêtre avec l'en-tête Select DataSet, depuis
laquelle vous sélectionnerez la source des données.
Sélectionnez cette source nommée Report dans la liste et cliquez sur OK.
Dans ce bloc, vous devrez placer les champs de la table à partir desquels le tableau sera généré.
Figure 80
My Visual Database – Manuel pratique 73/77
Placez le bloc de pied de page (Footer block) suivant. Cette unité ne sera imprimée qu'une seule fois,
c'est-à-dire que vous ne la verrez pas sur chaque page de votre état. Dans ce bloc, vous pouvez
calculer, par exemple, le montant total dépensé par le client pour la location d'équipements.
Pour calculer le montant total, placez le composant système Texte dans ce bloc. Une fois qu'il est
placé, une boîte de dialogue apparaît, que vous devrez configurer, comme indiqué dans la Figure 81.
Page 81
Page 82
My Visual Database – Manuel pratique 74/77
Et le dernier bloc que vous mettrez dans l'état est un PageFooter, ce bloc sera imprimé sur chaque
page de l'état, vous l'utilisez uniquement pour numéroter les pages.
Dans ce bloc, placez la variable système Page # sur le côté droit du concepteur d'état (onglet
Variables), faites-le glisser, comme indiqué sur la figure 83.
Page 83
Votre modèle d'état est désormais prêt, comme indiqué dans la figure 84.
Page 84
Allez dans le menu Fichier> Aperçu ou appuyez simplement sur Ctrl + P pour voir à quoi ressemblera
votre état.
My Visual Database – Manuel pratique 75/77
Enregistrez ce modèle d'état dans le dossier Report de votre projet, via le menu Fichier> Enregistrer
sous ....
Donnez un nom au fichier, par exemple "Customer_technician", comme indiqué dans la Figure 85.
Figure 85
Il ne reste plus qu'à revenir aux paramètres du bouton "Matériels loués" (Form1) et sélectionner ce
modèle d'état à utiliser pour l'impression. Voir la Figure 86.
Figure 86
My Visual Database – Manuel pratique 76/77
A suivre …
http://myvisualdatabase.com/book_en.html
En outre, à partir de ce lien, vous pouvez adresser une critique sur le livre, ou poser une (des)
question(s).
My Visual Database – Manuel pratique 77/77
1 – Introduction 02
1.1 – Introduction 03
1.2 – La base de données 03
1.3 – Identification des entités 03
1.4 – Les liens entre les tables et les clés étrangères (foreign keys) 04
1.5 – Les types of data 06
2 – Mise en pratique 07
2.1 – Créez votre première application travaillant avec une base de 07
2.2 – Normalisation de la structure de la base de données 49
2.3 – Suppression en cascade et maintien de l’intégrité 52
2.4 – Ajouter un type de client 54
3 – Les impressions 62
3.1 – Comment imprimer 63
3.2 – Le Concepteur d’état 63