Gambas France BETA


Pas de compte ? Incription

Utiliser une base de données enregistrée n'importe où :

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 :



====================