Gambas France BETA


Pas de compte ? Incription

Encore un problème SQL

12
AuteurMessages
lapenduledargent#1 Posté le 28/2/2014 à 14:40:09
Bonjour à tous,

Maintenant, que je sais utiliser une requête sql dans un data source :) , j'essaie de faire une recherche dans une table avec deux critères :

Fonctionne avec un critère :
1
DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe=" & "23"

Fonctionne pas avec un deuxième critère :(

1
DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe=&1 and Code_Famille=&2" & "23" & "04"
lapenduledargent#2 Posté le 28/2/2014 à 15:40:10
J'ai essayé avec ça mais j'ai toujours une erreur sql :

1
DataSource1.Table = ("SELECT * FROM Fourniture Where Code_Groupe= &1 and Code_Famille= &2", Groupe, Famille)
lapenduledargent#3 Posté le 8/5/2014 à 13:48:44
Bonjour,

Je relance le sujet car j'ai toujours le même soucis

Une petite idée ????

Merci d'avance Pierre
didier18#4 Posté le 8/5/2014 à 15:16:19
Bonjour lapenduledargent
Je ne suis pas très calé en requêtes, mais dans les exemples de ton 1er message tu met : Code_Famille=&2" & "23" & "04".
Ne vaudrait-il pas mieux utiliser des 'ou' ? Ainsi tu aurai Code_Famille= 2 ou Code_Famille=23 ou Code_Famille=04.
En effet il est peu probable que dans le même Code_Famille tu ai 2 et 23 et 04...
didier18#5 Posté le 8/5/2014 à 15:27:44
heu sinon j'ai trouvé ça : http://www.1keydata.com/fr/sql/ c'est en Français et bien expliqué.
Normalement tu deviendras incollable sur le SQL ;-)
Bonne lecture.
Reivillo#6 Posté le 8/5/2014 à 15:30:29
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonjour lapenduledargent.

Et comme ceci...
1
DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe=&1 and Code_Famille=&2" & "23" OR "04"
Reivillo.


Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Jack#7 Posté le 8/5/2014 à 19:15:36
Bonjour.

A mon avis il faut mettre des espaces.

DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe = &1 and Code_Famille = &2"
Pour un code démocratique nationalisons Gambas.
Bernard#8 Posté le 8/5/2014 à 19:57:49
Bonjour lapenduledargent,

pour moi, ton code:
1
DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe=&1 and Code_Famille=&2" & "23" & "04"

est egal à:
1
DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe=&1 and Code_Famille=&22304"

si tu cherche des valeurs differentes
1
DataSource1.Table = "SELECT * FROM Fourniture where Code_Groupe=&1 and (Code_Famille=&2 Or Code_Famille=&23 Or Code_Famille=&04)"
spheris#9 Posté le 8/5/2014 à 20:21:09
lapenduledargent,

il s'agit soit d'un problème de casse, soit d'espacements, en gros, une mauvaise écriture de ta requète.

Pour éviter ces erreurs de requetes SQL, je te donne une petite astuce :

installe sqlitebrowser sur ton pc.
lance le et ouvre ta bdd.
dans le 3eme onglet tu as la possibilité de tester une requete sql directement dans ta bdd.
Une fois ta requete correctement ecrite et fonctionnelle, tu n'as plus qu'à l'insérer dans GB.
Je procède comme cela depuis le début et cela fonctionne parfaitement.
Bon courage.
;)
lapenduledargent#10 Posté le 9/5/2014 à 13:17:24
Bonjour à tous,

Un grand merci pour votre aide.

Pour Didier : Merci pour le lien mais j'utilise des data-source et des variable en Gambas pour compliquer le tout !
Pour Shpéris : J'utilise directement l'éditeur de Gambas --> connexion --> requètes SQL mais dans le cas présent avec datasource et variables...

et pour les autres, une simple requête fonctionne par exemple :

1
rMaRequete = DB.Exec("SELECT * FROM Fourniture WHERE Code_Groupe = &1 AND Code_Famille = &2", Code_Groupe, Code_Famille)


Mais ça va pas avec le datasource :

1
DataSource1.table = "SELECT * FROM Fourniture WHERE Code_Groupe = &1 AND Code_Famille = &2", Code_Groupe, Code_Famille


Donc c'est un problème de datasource pas de sql ???
spheris#11 Posté le 9/5/2014 à 15:39:11
lapenduledargent,

Je me souviens à l'epoque, gb2 n'acceptait pas les variables sql munies de caractères speciaux comme ton caractere "_" (entre Code et Groupe).
Peut être est-ce une piste?
bon courage.
;)
Flachy Joe#12 Posté le 9/5/2014 à 16:42:43
Iguane : Il Gambas Uniquement pour Activer ses NEuronesSalut,
essaye d'utiliser des guillemets simples inverses autour des noms des champs et de table (ça force SQL à considérer ça comme des noms et pas comme des valeurs et ça solutionnera peut-être le pb de caractères mentionné par spheris) :
1
DataSource1.table = "SELECT * FROM `Fourniture` WHERE `Code_Groupe` = &1 AND `Code_Famille` = &2", Code_Groupe, Code_Famille
;) Flachy Joe ;)
lapenduledargent#13 Posté le 9/5/2014 à 18:06:29
Bonsoir,

j'ai une erreur qui dit --> ','inattendu dans test.class:10
manu#14 Posté le 10/5/2014 à 08:22:33
Avec Gambas ca roule !
lapenduledargent,

il s'agit soit d'un problème de casse, soit d'espacements, en gros, une mauvaise écriture de ta requète.

Pour éviter ces erreurs de requetes SQL, je te donne une petite astuce :

installe sqlitebrowser sur ton pc.
lance le et ouvre ta bdd.
dans le 3eme onglet tu as la possibilité de tester une requete sql directement dans ta bdd.
Une fois ta requete correctement ecrite et fonctionnelle, tu n'as plus qu'à l'insérer dans GB.
Je procède comme cela depuis le début et cela fonctionne parfaitement.
Bon courage.
;)


Tu n'as plus besoins de ca dans gb3, tu peux tester et gerer ta base directement dans le module de base de données de gambas. As tu testé tes requetes dans cet editeur Pierre ? Ca permettrais de savoir si c'est un pb SQL ou lié a la syntaxe dans Gambas .
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#15 Posté le 10/5/2014 à 20:34:18
essaye d'utiliser des guillemets simples inverses


Yeeeesssss ! merci Flachyjoe pour avoir décoincé quelques neuronnes enfouies dans mon cerveau....
je me rappelle maintenant : j'avais un problème lié aux guillemets dans GB2. ma requête marchait hors gb mais dans GB ca me provoquait une erreur de syntaxe. Du coup j'ai remplacé les guillemets dans ma requête par chr$(34) et zou ! problème réglé. regarde de ce coté là !
A+
;)


Tu n'as plus besoins de ca dans gb3,


Je ne savais pas. merci Manu pour l'info.
;)
12