Gambas France BETA


Pas de compte ? Incription

Objet table d'une base de données

Ce sujet est résolu.

1
AuteurMessages
manu#1 Posté le 30/8/2010 à 21:21:00
Avec Gambas ca roule !Bonsoir,

Ok, le titre n'est pas du tout explicite :o

j'explique mon problème.

J'ai une application qui utilise une Base de Données Sqlite. A l'ouverture de l'application je teste la presence de celle-ci ainsi que des différentes tables. Si une table n'existe pas, je la crée avec tous ses champs de la façon suivante :

1
' Gambas module filePublic maconnect As ConnectionPublic unetable As Table' là on test la présence de la table et si elle n'existe pas on la créé ainsi que les champs qui la composes If Not maconnect.Tables.Exist("Produits") Then unetable = maconnect.Tables.Add("Produits") unetable.Fields.Add("Id", db.Serial) unetable.Fields.Add("Nom", db.String, 16) unetable.Fields.Add("Type", db.String, 10) unetable.Fields.Add("Poid", db.Float, 2) unetable.PrimaryKey = ["Id"] unetable.Update() Message.Info((unetable.Name) & " créé") Endif


Le probleme de procédé ainsi, est que si pour une raison inconnu, j'ai besoin de completer plus tard ma table avec 1 ou 2 nouveau champs, mon test ne les créera pas car il se fait sur l'existence des tables. Donc je pourrais faire un truc du genre :

1
IF NOT maconnect.Tables.Exist("Produits") THEN unetable = maconnect.Tables.Add("Produits") unetable.Fields.Add("Id", db.Serial) unetable.Fields.Add("Nom", db.String, 16) unetable.Fields.Add("Type", db.String, 10) unetable.Fields.Add("Poid", db.Float, 2) unetable.PrimaryKey = ["Id"] unetable.Update() Message.Info((unetable.Name) & " créé" ELSE IF NOT unetable.Fields.Exist ("NouveauChamp") THEN unetable.Fields.Add("NouveauChamp", db.String, 16)ENDIF


Sauf que ca ne marche pas car l'objet " unetable " n'est pas défini : il ne sais pas que "unetable" est la table produit. Que dois-je ecrire pour que cela fonctionne ? :geek: :geek:

Une idée (ou une question) ???

Merci d'avance
:geek: :geek:
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)
Prokopy#2 Posté le 31/8/2010 à 12:00:00
Kinder PinguiC'est normal, car tu ne donnes la référence que dans le premier bloc if, donc que si la table n'existe pas.
Rajoute ça au début du Else :

1
unetable = maconnect.Tables["Produits"]


:)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
manu#3 Posté le 31/8/2010 à 21:41:00
Avec Gambas ca roule !

C'est normal, car tu ne donnes la référence que dans le premier bloc if, donc que si la table n'existe pas.



oui je sais :)


j'avais essayé en mettant le nom de la table entre parenthèse, les crochets, je n'y avais pas pensé....

Merci
:)
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)
GarulfoUnix#4 Posté le 31/8/2010 à 22:26:00
By the way

j'avais essayé en mettant le nom de la table entre parenthése, les crochets, je n'y avais pas pensé....
:)


N'oublie pas que certaines classes peuvent se comporter comme un tableau ;) .
Prokopy#5 Posté le 1/9/2010 à 06:35:00
Kinder Pingui

C'est normal, car tu ne donnes la référence que dans le premier bloc if, donc que si la table n'existe pas.

e sais :)


j'avais essayé en mettant le nom de la table entre parenthése, les crochets, je n'y avais pas pensé....

Merci

:)[/Quote]


La doc mon vieux, la doc ! :D
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
GarulfoUnix#6 Posté le 1/9/2010 à 09:13:00
By the wayAffirmatif, toujours avoir un onglet ouvert dans son navigateur avec la documentation de Gambas. :study:
Prokopy#7 Posté le 1/9/2010 à 12:32:00
Kinder PinguiTu t'en sors avec seulement un onglet dans ton navigateur toi ? :lol:

Moi c'est une fenêtre avec plusieurs onglets sur l'écran supérieur, et l'IDE de Gambas sur l'écran inférieur. :study: :study: :study:
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
manu#8 Posté le 1/9/2010 à 13:05:00
Avec Gambas ca roule !je ne suis pas de ceux qui oublient la doc là, les amis.....mais reconnaissez quand même que d'une part est elle est incomplète et que d'autre part elle n'est pas accessible à des débutants. :cry:

Je reconnais que l'on y trouve quand même beaucoup d'informations et heureusement qu'elle existe mais des fois je ne comprends même pas ce qui est écris!!!. Pourtant, moi aussi, je passe des heures à chercher, à lire des articles qui ont un rapport plus ou moins proche avec gambas, j'ai lu récemment des tutos sur python. Mais une culture informatique ne s'acquiert pas d'un coup de cuillère a pot... :geek: :cry: alors, de grâce, merci de respecter nos difficultés et d'éviter de nous sortir (en raccourci) t'as qu'a lire la doc ! Merci d'avance :)



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)
GarulfoUnix#9 Posté le 1/9/2010 à 22:34:00
By the way
Tu t'en sors avec seulement un onglet dans ton navigateur toi ? :lol:

Moi c'est une fenêtre avec plusieurs onglets sur l'écran supérieur, et l'IDE de Gambas sur l'écran inférieur. :study: :study: :study:


Prokopy je sous-entendais "un onglet réservé a la doc Gambas".
Dans mon navigateur je me retrouve très vite avec un minimum de 10 onglets :-D .

Manu, savoir lire et comprendre la doc c'est devenir autonome ;) .
Après bien sur je peux comprendre que ça peut être plus ou moins accessible pour certaines personnes.
Prokopy#10 Posté le 2/9/2010 à 06:39:00
Kinder Pinguifrance1159 : je sous-entendais aussi "un seul onglet de doc" et "une fenêtre entière pour la doc". ;)

La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
GarulfoUnix#11 Posté le 2/9/2010 à 13:29:00
By the wayOk ok :)
1