Gambas France BETA


Pas de compte ? Incription

Connexion Bd

Ce sujet est résolu.

1
AuteurMessages
lapenduledargent#1 Posté le 3/10/2011 à 15:03:19
Bonjou,

Une petite question en Gb2, je faisais une connection dans le code, du style :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$hloquet = NEW Connection

WITH $hloquet
.Type = "sqlite3"
.Host = sPlace

END WITH

$hloquet.Name = sName
$hloquet.Open
$hloquet.Close

rMaRequete = DB.Exec("SELECT Machine FROM config_machine")

FOR EACH rMaRequete
ComboBox1.Add(rMaRequete!Machine)
NEXT


Mais en Gb3, il y dans la partie projet une section graphique "connexion" que j'ai utilisé avec un DataBrowser.

Ma question est comment utiliser dans un formulaire une connexion de manière graphique ?

A bientôt

Pierre
manu#2 Posté le 3/10/2011 à 21:06:46
Avec Gambas ca roule !heu bein je suis pas sûre de comprendre la question là....mais bon je tente une réponse

Une fois que tu as connecté ton projet à une Base de données que tu as créé soit par le code soit par l'interface graphique de l'IDE, tu peux utiliser les widget Data du composant gb.db.form.

Le principe général est d’insérer un datasource dans un formulaire, d'y spécifier la connexion ainsi que la table à laquelle il est relié et d'y mettre dedans des widgets data. Datasource est en fait un container.

Le dataBrowser est un de ces controles...
Tu as aussi
les datacombo, qui sont très pratique pour choisir une donnée dans une table,
les dataControl qui te permettent de lire ou écrire dans ta base de données (comme des textbox).
le dataBrowser qui est en fait un columnView adapté à la lecture et l’écriture dans les tables puisque qu'il permet de se déplacer dans les enregistrements grâce a une barre de navigations (que tu peux cacher si tu le souhaites...)et de renvoyer au container DataSource l'index de l'enregistrement...

Tu peux aussi imbriquer les datasources les uns dans les autres pour faire des recherche dans ta base de données sur plusieurs table.

Enfin, grâce à tous ces contrôles, tu peux modifier les données dans ta table et les enregistrer pas un simple datasource1.save.

Sache que dans un même formulaire tu peux utiliser bien sûr d'autre controles qui ne sont pas des controles data...

Ce composant est super pratique et permet de créer des formulaires de consultations ou de saisie super rapidement... Je l'utilise dans tous mes projets avec BDD.

N’hésite pas a poser d'autres questions car il y a beaucoup à dire sur ce composant et ses innombrables possibilités...

Manu

PS

De grâce, Pierre, quand tu nomme une connexion trouve lui un nom plus parlant que hloquet, ca c'est la signature d'un de nos membres.... :). Un truc du genre hMaConnect ou hConnect1, bref un truc plus logique quoi :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
lapenduledargent#3 Posté le 4/10/2011 à 13:01:37
Bonjour Manu,

Une fois que tu as connecté ton projet à une Base de données que tu as créé soit par le code soit par l'interface graphique de l'IDE, tu peux utiliser les widget Data du composant gb.db.form.


Merci de ta réponse, ma question est précisément de savoir comment on établi cette connexion par l'interface graphique ou plutôt que faire après avoir cliqué sur nouvelle connexion, par exemple pour une requête SQL.

Merci également pour tes précisions sur les contrôles, je pense que ce sera utiles à d'autres également.

A bientôt

Pierre
manu#4 Posté le 4/10/2011 à 16:43:44
Avec Gambas ca roule !haaa, pour les requêtes SQL graphique, faudra attendre gambas4 !!!! Cependant, tu peux, dans les contrôles, filtrer tes enregistrements avec une clause WHERE.

Dans le "database-manager" de gambas tu peux cependant tester ta requête sSQL (Bouton "Requete SQL")

En clair, il faut continuer, dans le code a utiliser des objets Result et y exécuter des bonnes vielles requêtes SQL.

Mais au risque de me répéter, une utilisations de datasources imbriqués, te permet quand même de faire des requêtes sans une ligne de code.Je te donne un exemple concret si tu veux bien :

j'ai une table (Machine) dans lequel j'ai répertorié des machines à commandes numériques (je tente de m'adapter ... :) ).
Cette table contiens les champs suivant :

CHAMP.............Type

idMachine.........serie (Clé primaire)
NomMachine........string
TypeMachine.......string

J'ai une seconde table (ReglageMachine) qui contiens des réglages de toutes les machines (bon excuses mon incompétence en la matière... :oops: )

CHAMP..............Type

idReglage..........serie (Clé primaire)
idMachine..........Integer
VitesseRotation....Integer
ProfondeurPercage..Float

Dans un formulaire, je veux voir pour une machine donnée, tous les réglages possibles pour chacune d'elle :

Dans un formulaire, tu met un datasource (datasource1) connecté à la table Machine puis tu y insère un Databrowser. Dans la propriété columns du databrowsers, tu choisi le champs NomMachine. Toujours dans Datasource1, tu insères un datasource (datasource2) que tu connecte a la table Reglages. Dans datasource2, tu met un dataview. Dans la propriété columns du dataview, tu insères les champs qui t'interesse.

Exécute ton projet...

Quand tu choisi une machine avec ton databrowser, tous les réglages de celle ci apparaissent dans le dataview...

Maaaagique et sans une ligne de code...

Gambas viens en fait de réaliser une requête SQL avec une jointure naturelle sur le champ idMachine. C'est pour ça que j'ai choisi le même nom de champs.

Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
lapenduledargent#5 Posté le 7/10/2011 à 08:50:31
Bonjour Manu,

Je reviens un peu tardivement... Merci pour tes explications et ton exemple parlant.

Il faudra que j'essai de jouer avec les contrôles mais une chose à la fois.
A présent, avec la méthode classique des requêtes et une connexion placée sur mon formulaire d'ouverture, j'affiche sans problème ma requête dans un Datasource et un DataBrowser.

A bientôt

Pierre
1