Gambas France BETA


Pas de compte ? Incription

tri dans un data source

Ce sujet est résolu.

12
AuteurMessages
lapenduledargent#1 Posté le 2/2/2014 à 16:51:08
Bonjour à tous,

Comment faire un tri dans DEUX colonnes d'un data source ?

J'y arrive sans problème pour UNE colonne avec datasource.sort = "Code_Groupe"

Je peux le faire avec une requête sql :

1
SELECT * FROM `Famille` ORDER BY `Code_Groupe` ASC,`Code_Famille`ASC


Mais comment faire pour que le résultat soit affiché dans le datasource ?

Bon dimanche à tous.
lapenduledargent#2 Posté le 3/2/2014 à 11:24:16
Bonjour,

Je pense que c'est pas évident...Peux d'exemples sur les datasources.

Je dois avancer dans mon programme, nous sommes en plein ré-encodage.

Ce soir, je vais le refaire d'une manière classique avec ma requête sql et une gridview.

Bonne journée

Pierre
lapenduledargent#3 Posté le 9/2/2014 à 11:02:29
Bonjour à tous,

J'ai toujours mon soucis de tri.
Je trouve dommage de devoir me passer des datasources pour si peu !

Avec dataSource1.sort = "Code_Groupe" & "Code_Famille" --> j'ai une erreur

Avec dataSource1.sort = "Code_Groupe" AND "Code_Famille" --> j'ai une erreur

Avec datadataSource1.filter = DB.Exec("SELECT * FROM `Famille` ORDER BY `Code_Groupe` ASC,`Code_Famille`ASC") --> marche pas non plus !
Jack#4 Posté le 9/2/2014 à 17:39:08
Salut,

pourquoi mettre des ' ?

as-tu essayé avec DB.Exec("SELECT * FROM Famille ORDER BY Code_Groupe ASC,Code_Famille ASC")

Tu mets les ' si tu fais un requête dans une console mais pas dans Gambas.
Pour un code démocratique nationalisons Gambas.
lapenduledargent#5 Posté le 9/2/2014 à 18:06:09
Bonsoir Jack,

J'avais déjà essayé :

DataSource1.Filter = DB.Exec("SELECT * FROM Famille ORDER BY Code_Groupe ASC,Code_Famille ASC")

Mais voilà ce que ça me retourne :

Type incorrect : string attendu à la place de result

Jack#6 Posté le 10/2/2014 à 17:55:29
Désolé mais je ne peux pas t'aider plus car je ne connais pas les datasources.
Pour un code démocratique nationalisons Gambas.
lapenduledargent#7 Posté le 11/2/2014 à 16:28:54
Bonsoir Jack,

Mais de rien et merci d'avoir essayé c'est surtout par curiosité !
C'est simple et rapide les datasources mais j'ai rien trouvé de concret sur les requêtes sql sur le forum et sur google.

Bonne soirée

Pierre
Jack#8 Posté le 11/2/2014 à 17:31:03
Y'aura peut-être un gourou des datasources qui passera par là.
Pour un code démocratique nationalisons Gambas.
lapenduledargent#9 Posté le 11/2/2014 à 17:34:47
Ahh je l'espère !
manu#10 Posté le 17/2/2014 à 23:44:57
Avec Gambas ca roule !Je ne comprend pas exactement ce que tu veux faire : Peut tu détailler ?
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#11 Posté le 18/2/2014 à 08:12:13
Bonjour Manu,

Merci de t'intéresser à mon problème ;)

Dans mon datasource, je souhaite ordonner deux champs :

Code_Groupe et puis Code_Famille

Je sais le faire avec une requête sql de manière classique :
1
DB.Exec("SELECT * FROM Famille ORDER BY Code_Groupe ASC,Code_Famille ASC")


mais comment faire pour l'appliquer à mon datasource ?
manu#12 Posté le 21/2/2014 à 21:54:26
Avec Gambas ca roule !Excuse pour la lenteur de la reponse....

Facile ;)

Dans les propriétés du controle dataSource tu ne renseignes pas la table dans lequel le datasource doit aller chercher les données. Tu le fait à l'instanciation de ton formulaire comme ca par exemple :

1
2
3
4
5
PUBLIC SUB Form_Open()

DataSource1.Table = "SELECT * FROM Famille ORDER BY Code_Groupe ASC,Code_Famille ASC"

END


Tu peux aussi mettre ca sur l'evenement d'un bouton du genre :

1
2
3
PUBLIC SUB Button1_Click()
DataSource1.Table = "SELECT * FROM Famille ORDER BY Code_Groupe ASC,Code_Famille ASC"
END


Tu peux donc créer plusieurs boutons avec des modes de tri different ou des choix de tri dans un combo ou tout ce que tu veux. Tu peux aussi créer dynamiquement tes datasources et effectuer n'importe quelle requete SQl dans la propriété "table" du datasource pour definir les donnes de ton datasource. Tu peux donc aussi faire des requetes sur plusieurs tables pour alimenter un seul datasource.

C'est pas beau ca ? J'adore ce composant ;)

Tu vois la puissance du truc ?

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#13 Posté le 22/2/2014 à 12:10:54
Bonjour Manu,

Excuse pour la lenteur de la réponse.... pas de problème, le boulot avant tout :)

J'essaie ta proposition mais j'ai toujours une erreur :

Unknows table: Famille ORDER BY Code_Groupe ASC,Code_Famille ASC

Alors avec DataSource1.Table = "Famille" ça fonctionne mais toujours pas de tri ?????

Donc, je suppose que dans datasource.table, c'est une variable et pas une requête SQL
manu#14 Posté le 22/2/2014 à 13:54:52
Avec Gambas ca roule !Dans la propriété Table de ton dataSource c'est bien une requete SQL que tu rentres comme je te l'ai montré dans l'exemple ci dessus. Mais tu ne fait pas ca dans le controle (graphique) du DataSource. Tu le fait dans le code.


On est bien d'accord que tu as une table qui s'appelle Famille et que tu as au moins deux champs Code_Groupe et Code_Famille ?
J'ai reproduit un petit exemple et ca marche bien chez moi... En plus, je n'arrive pas à reproduire ton message d'erreur.

Je peux t'envoyer mon petit exemple par mel, je ne crois pas qu'il ai un interet sur la forge...
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)
gambix#15 Posté le 22/2/2014 à 14:03:03
Faire simple !Salut Pierre


Manu il a dit SELECT... en faite tu passe une requète complète a la propriété table.

Cette propriété accepte deux types d'argument, soit une table valide soit une requête... Je dois avouer que la première année j'ai eu de mal a comprendre aussi.

Mais c'est ce qui permet la souplesse de DataSource. (Qui aurait besoin d'un peu de travail encore)

Moins de texte dans une signature c'est agrandir son espace.
12