Gambas France BETA


Pas de compte ? Incription

combobox.List et BDD

Ce sujet est résolu.

1
AuteurMessages
valaquarus#1 Posté le 29/4/2024 à 20:36:19
-- Unus Ex Altera --Bonsoir,
est il possible de faire correspondre un combobox.List et une colonne d'une base de données ?
Et comment ?
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
jeanyvon#2 Posté le 30/4/2024 à 11:36:51
Gambas? Ma! Et gustoBonjour!
Oui, avec sql

dim monresultat as result

with maconexion
monresltat = .exec("select macolonne from matable") ' (peut être que je ne suis pas bon)
.close

for each monresultat
combobox1.add
next
Vieillir? On peut retarder mais pas y échapper!
Patrick#3 Posté le 30/4/2024 à 12:26:10
Bonjour,
Mieux que je pourrais l'expliquer : https://sql.sh/fonctions/group_concat
valaquarus#4 Posté le 30/4/2024 à 13:40:04
-- Unus Ex Altera --Bonjour Patrick et merci,
pourquoi faire simple quand on peut faire compliqué :

1
2
3
4
5
6
7
hResult = db.Exec("select * from Table1")

IF hResult.Available THEN
FOR EACH hResult
ComboBox1.Add(hResult!Nom)
NEXT
ENDIF
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Patrick#5 Posté le 30/4/2024 à 14:01:51
Je suis bien d'accord :

1
2
hresuslt=db.exec("SELECT GROUP_CONCAT(Nom) as Nom From Table1"
IF hresult.Available THEN combobox1.list = Split(hresult!Nom,",")


Non testé mais ce doit être ça, l'autre raison est la performance de la requête c'est beaucoup plus rapide en sql. Je me suis donc habitué a faire le maximum en sql.
valaquarus#6 Posté le 30/4/2024 à 15:06:10
-- Unus Ex Altera --Oui,
cette requête est réputée être beaucoup plus rapide d'après mes lectures mais je ne la maîtrise pas du tout et ma base est "petite".
Par contre je ne sais pas enregistrer une base triée.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Patrick#7 Posté le 30/4/2024 à 15:23:42
A ma connaissance on enregistre pas une base triée, les tris se font en lecture avec "ORDER BY" en fin de requête.
valaquarus#8 Posté le 30/4/2024 à 16:24:54
-- Unus Ex Altera --Oui, je m'en suis rendu compte.
J'ai fait ça qui ne fonctionne que si on clique sur une ligne et une colonne :
1
FMain.tri = "order by " & DataView1.Columns[DataView1.View.Column]

mais pas quand on clique sur les entêtes de colonne, or je voudrais récupérer le tri effectué sur ces entêtes.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Patrick#9 Posté le 30/4/2024 à 16:59:03
Regarde l'événement ColumnClick
valaquarus#10 Posté le 30/4/2024 à 17:42:38
-- Unus Ex Altera --je cherchais désespérement un
1
PUBLIC SUB DataView1_ColumnClick(Column AS INTEGER)
qui n'existe pas et j'ai eu l'idée de le remplacer par un
1
PUBLIC SUB GridView1_ColumnClick(Column AS INTEGER)

Qui semble vouloir fonctionner. Bizarerie
Non en fait pas du tout. Il n'y a pas d'évènement _ColumnClick pour le dataview.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
valaquarus#11 Posté le 1/5/2024 à 06:28:20
-- Unus Ex Altera --Bonjour,
au lieu de ça qui ne donne pas entière satisfaction :
1
2
FMain.Champ = DataView1.Columns[DataView1.View.Column]
FMain.tri = "order by " & DataView1.Columns[DataView1.View.Column]

j'ai fait ça :
1
2
FMain.Champ = DataSource1.Sort
FMain.tri = "order by " & DataSource1.Sort

Et il faut faire attention au fait qu'il y a trois positions pour .sort :

- indifférent ("")
- Ascending (" Asc")
- Descending (" Desc")
1
2
3
4
5
6
7
8
9
10
11
12
13
PUBLIC SUB DataSource1_Change()

IF DataSource1.Ascending THEN
FMain.Asc = " Asc"
ELSE
FMain.Asc = " Desc"
ENDIF

IF DataSource1.Sort = "" THEN DataSource1.Sort = "Nom"

Label1.Text = " Tri effectué sur " DataSource1.Sor't & 'FMain.Asc

END
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Patrick#12 Posté le 2/5/2024 à 13:25:21
Si ça fonctionne comme tu veux c'est super, mais pour finir le sujet la propriété View renvoi la tableview utilisée, tu n'as plus qu'a poser un observer dessus.
valaquarus#13 Posté le 2/5/2024 à 14:04:20
-- Unus Ex Altera --Bonjour Patrick,
c'est rigolo mais c'est exactement la conclusion que je me suis faite et je lisais ce qu'il faut à propos des observer.
Mais bon là ça fonctionne comme je le veux.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
1