Gambas France BETA


Pas de compte ? Incription

[resolu] Auto complementation des champs index dans un data sources

Ce sujet est résolu.

1
AuteurMessages
manu#1 Posté le 2/2/2011 à 22:31:00
Avec Gambas ca roule !Bonjour,

Tout est dans le titre mais bon, je vais préciser ma question ;)

exemple : J'ai une table MarqueMateriel avec un champ string : marque et un champ idMarque de type serie qui s'autocomplemente normalement.

Dans un mini formulaire, j'ai un datasource connecté a cette table et je ne veux qu'un datacontrole pour saisir la nouvelle Marque. Je ne vais pas remplir le champs idMarque, puisque ca se fait tous seul normalement.
Pourtant, si je fais ca, il n'accepte pas l'enregistrement car le champ idMarque n'a pas été saisi !!!!

Ma question est simple, comment faire pour que ce champ "se saisisse seul". Je précise que si je met dans mon data source un databrowser, ce champ id ce complète seul, c'est donc possible !.

J'ai bien trouvé la méthode Datasource1.index mais elle n'est pas documenté donc je ne sais pas si je doit l'invoquer et comment.

Voila, j’espère que j'ai été clair .... :)

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)
spheris#2 Posté le 2/2/2011 à 23:05:00
Ton problème vient de deux endroits possibles :

-Soit tu n'as pas déclaré ton champ comme il faut, de type : PRIMARY INDEX KEY.
-Soit tu ne crées pas le champs comme il faut lors d'un nouvel enregistrement.

Pour la première idée, ouvre ta bdd avec l'excellent logiciel sqlitebrowser et tu seras fixé.
Quant à la 2eme, montre nous le code de ta parti création d'une nouvelle ligne dans ta table.

;) ;)
manu#3 Posté le 3/2/2011 à 08:10:00
Avec Gambas ca roule !Bonjour,




-Soit tu n'as pas déclaré ton champ comme il faut, de type : PRIMARY INDEX KEY.


Si spheris, la clé principale est déclaré comme il le faut et au passage, j'utilise dans la version 3, le gestionnaire de base de données intégré a Gambas qui est parfaitement opérationnel maintenant :




Quant à la 2eme, montre nous le code de ta parti création d'une nouvelle ligne dans ta table.


L'interet des datasources, c'est de limiter considerablement les lignes de codes justement.
Voila le code qui enregistre la valeur dans la base de donnée et qui fonctionne tres bien si l'on renseigne le champs id :

1
PUBLIC SUB btnOK_Click() DataSource1.Save ME.Close(TRUE)END


Ce code est dans le code du bouton valide ! Dur de faire plus simple :)
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)
jeanyvon#4 Posté le 3/2/2011 à 14:55:00
Gambas? Ma! Et gustoSalut,
J'ai toujours renseigné ce champ
Autrement une erreur en GB2 ou 3

1
WITH maconnexion monresultat = .exec("select * from encour") IF monresultat.count > 0 THEN monresultat.MoveLast Num = (monresultat!N) + 1 ELSE Num = 0 ENDIF' .Close End With With maconnexion .Begin .exec("insert into encour values('" & Num & "','" & ladate & "','" & lemontant & "','" & lepaye & "','" & laventil & "')") .Commit

A+
JY
Vieillir? On peut retarder mais pas y échapper!
manu#5 Posté le 3/2/2011 à 18:30:00
Avec Gambas ca roule !Oui jean Yvon mais tu n'utilise pas les DataSources et les DataControle. C'est beaucoup plus simple d'autant plus si tu utilises un databrowser.

Donc pour ceux qui ne connaissent pas :

Dans mon formulaire je créer un datasource qui est un conteneur relié a une (seule) table de base de données : Dans ce conteneur, je peux mettre des contrôles de 4 types :

DataControle qui est en fait une sorte de textBox dans lequel je défini a quel champ il est relié.
DataCombo qui est un combo qui va alimenté la meme table et dont la liste peux provenir d'un code, d'une entree manuelle lors de la création de ce controle ou d'une autre table de la base de données
DataView qui est en fait un gridview reliée à une table.
Et le DataBrowsers qui est en fait un dataView avec en plus une barre de navigation : nouvel enregistrement, supprimer enregistrement, suivant, précédent, dernier, premier...

Grace a tous ces controles, je navigues et visualise mes enregistrements de façon très simple :)

Aucune ligne de code pour faire des commit ou autre a la base de données. Juste des évènements du style :

Datasource.save
Datasource.move
Datasource.movefirst
Datasource.movenext
.......

Mais problème concernant la Clé principale ..... :(
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)
manu#6 Posté le 3/2/2011 à 21:33:00
Avec Gambas ca roule !ouhlalalala !!!!!!! :sunny: :sunny: :sunny: :affraid: :affraid: :affraid: :oops: :oops: :oops: :oops:

J'ai trouvé :oops: :oops: :oops: et j'ai honte !!!!

Si vous regardez bien mon ScreenShots de la base de données vous pouvez voir que mon champ idMarque n'est pas de type serie mais de type entier. Avec un type entier en cle primaire, gambas exige une valeur et c'est bien le but, avec un type serie se créé automatiquement....

Voili voilo :geek: :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)
1