Pour utiliser une base de données, SQLite3, enregistrée "n'importe où" sur son disque dur,
il faut d'abord dans l'IDE :
- créer une connexion :"hConn", définir une table et peut-être quelques enregistrements (pas obligé).
- Dans le répertoire Projet, créer un sous-répertoire du nom de votre projet (par facilité)
- y déposer une copie de la base que vous venez de créer (avec le même nom).
- créer un module de connexion à la base qui servira de module de démarrage :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| PUBLIC SUB main()
DIM T1, T2 AS STRING
T2 = ".local/share/lecteurMultiBase" '<---------------------------' la base utilisée par le programme sera copiée ici T1 = "/usr/share/lecteurMultiBase/LaBase" '<----------------------' la base est enregistrée là grâce au paquet d'installation (voir image plus bas)
IF NOT Exist(T1) THEN Message.Info(("Veuillez refaire l'installation SVP")) QUIT ENDIF
IF NOT Exist(User.home &/ T2) THEN MKDIR (User.home &/ T2) Message.Info(("la base n'existe pas elle va être copiée!" ENDIF
IF NOT Exist(User.home &/ T2 &/ "LaBase") THEN COPY T1 TO (User.home &/ T2 &/ "LaBase") WAIT ENDIF
Connections["hConn"].Host = User.home &/ T2 '<------------------' Host de la "nouvelle" base Connections["hConn"].Name = "LaBase" '<--------------------------' même nom de base que celle de l'IDE Connections.Create("hConn") '<---------------------------------' affectation de la "nouvelle" base à la connection et ouverture de celle-ci WAIT 0.5
FMain.Show() '<------------------------------------------------' le formulaire principal
CATCH '<----------------------------------------------------------' attrape erreur Message.Title = ("Une erreur est survenue !") Message.Error((" Située à : "& "MDebut.Main" & ("\n Texte de l'erreur : ") & Error.Text)
END
|
- sur le formulaire principal, à l'ouverture :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| PUBLIC hResult AS Result '<-----------------------------------------'résultats de recherche sur base PUBLIC tri AS STRING '<--------------------------------------------'SQL de tri PUBLIC Champ AS STRING '<------------------------------------------'partie de phrase SQL indiquant sur quel champ se fait le tri PUBLIC Asc AS STRING '<----------------------------------------'partie de phrase SQL indiquant si le tri est Asc(endant) ou Desc(endant) PUBLIC bAsc AS BOOLEAN '<---------------------------------------'bascule boolean indiquant la valeur du tri pour DataSource1.Ascending
PUBLIC SUB Form_Open() IF NOT db.Current.Opened THEN db.Current.Open '<--------------------------------------------' ouverture de la base par défaut ENDIF hResult = db.Exec("select * from Table1 " & tri) '<--------------' la première fois tri="" IF hResult.Available THEN '<--------------------------------------' Si la requête donne un résultat
FOR EACH hResult '<--------------------------------------------' pour chaque résultat '<--------------------------------------------------------' tout ce qu'il y a à faire, ici NEXT
hResult.MoveTo(hResult.index) '<-------------------------------' on bouge jusqu'à l'index ENDIF
|
Si on utilise un DataView dans un DataSource défini dans l'IDE (idem avec tout contrôle Data) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| PUBLIC SUB Form_Open()
DIM i AS INTEGER
DataSource1.Sort = FMain.Champ '<-------------------------------' valeur de tri à l'ouverture DataSource1.Ascending = FMain.bAsc '<---------------------------' valeur boolean de tri à l'ouverture
IF DataSource1.Sort = "" THEN DataSource1.Sort = "Nom" '<--------' pour éviter le tri sur rangement de la base, peut être commentée
FOR i = 0 TO DataView1.Columns.Max DataView1.View.Columns[i].Width = -1 DataView1.View.Columns[i].Alignment = Align.Normal NEXT
DataView1.View.Select(FMain.ind) '<-------------------------------' sélection de la ligne d'index à l'ouverture
END
PUBLIC SUB DataSource1_Change() '<----------------------------------' affichage des modifications de tri
IF DataSource1.Sort = "" THEN DataSource1.Sort = "Nom" '<-------' pour éviter le tri sur rangement de la base, peut être commentée IF DataSource1.Ascending THEN FMain.Asc = " Asc" '<-------------' si true alors Asc IF NOT DataSource1.Ascending THEN FMain.Asc = " Desc" '<----------' si false alors Desc
Label1.Text = " Tri effectué sur " DataSource1.Sor FMain.Asc
END
|
En conclusion : on peut, donc, "mélanger" l'utilisation des objets tout faits des Données et les commandes SQL directes qui permettent des requêtes fines sur votre base de données.
Exemple utilisé pour cette présentation :
LecteurMultiBase====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
La Documentation :
====================