Requete SQL sous Delphi en Utilisant un Edit

Fermé
s_a_razak Messages postés 1 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 10 août 2003 - 10 août 2003 à 17:04
 seange - 23 déc. 2010 à 17:47
Bonjour à tous,

afin de faire une sélection d'un ensemble d'enregistrements vérifiants la condition Cod_Fil=('le text d'un edit') d'une table Etudiant et les afficher sur un DBGRID, j'ai utilisé un Composant Query dont la propriété SQL contient le text suivant:
Select all
From Etudiant
Where Etudiant.Cod_fil=:Saisie

où (Saisie) est le nom du paramètre portant la valeur à saisir dans(Edit.text) (propriété params de Query)
le code de l'instruction Delphi est:
Query1.Parabyname('saisie').asinteger:=strtoint(edit1.text);
Mais à l'exécution, le débogueur m'a notifier l'exception suivante:
Exception 'EDBEngineError' avec le message utilisation incorrecte du mot-clé Elément: From
N° de ligne 2: Processus stopé
Que faut-il faire pour filtrer une table en saisissant la valeur du champ sur lequel on veut faire la sélection ?

12 réponses

tleboukaka Messages postés 79 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 5 mai 2010 4
8 nov. 2007 à 21:28
Salut

je crois être tout a fait capable de résoudre ce probleme de requete parametrée. car dans ma bdd Delphi 90% de mes requetes sont toutes de ce genre.
Le temps va vers la fin. demain si je me rappele je me connecterai et donnerai la réponse à ton pb

bon courage
3
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
21 févr. 2008 à 14:18
peux-tu nous donner le message d'erreur ?
2
tleboukaka Messages postés 79 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 5 mai 2010 4
9 nov. 2007 à 09:06
slt

je suis là pour vouloir donner une solution à ton pb :
ce que je demande est que tu me détaille la structure de chaque table qui constitue la requete (du moins les champs importants et leur type : Numerique, Alphabetique ou AlphaNumerique)
1
comment crée une requete parametré mais le parametre prend les noms de colonnes d'une autre table
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai un serieux problème surtout lorsqu'il faut utiliser les requete parametré, car ça génère toujours un message d'erreur selon lequel le param n'est pas reconnus.
Pouvez me donner un bon code pour y arriver.

Cordialement
Vieux Mukal
1
Hello,
Je pense qu'il te manque le * dans ton select. Les messages d'erreurs des SGBD ne sont pas toujours treès pertinents : il te signale un pb au niveau du FROM car il ne s'attend pas à le treouver tout de suite après le ALL.
Essaye avec : SELECT * FROM etudiants...

A plus
0
tleboukaka Messages postés 79 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 5 mai 2010 4
9 nov. 2007 à 09:19
j'attends tjrs
0
comment utiliser une requete au delphi mais le parametre de cette requete est un champ d'une table
0
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
4 févr. 2008 à 10:16
SELECT * FROM MyTable1 WHERE MySearchID IN (SELECT MySearchID FROM Table2)
0
tleboukaka Messages postés 79 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 5 mai 2010 4
21 févr. 2008 à 20:37
salut

voici comment tu dois proceder :

c'était pourtant important de bien definir ton architecture, pour nous permettre de bien résoudre ton problème. je part de l'idée que codFiliere est un champs de la table Etudiant. je suppose que les champs de la table Etudiant sont : num etudiant, nom etudiant, code filiere, etc
sur ton form :
place un composant TDBlookUpComboBox, et selectionne le en cliquant dessus
dans inspecteur d'objet, applique ces proprietés :
NAME : dlcCodFiliere
LIST SOURCE : dataSourceEtudiant (le dataSource de la table Etudiant)
LIST FIELD : cod_Filiere (ou Nom filiere)
KEY FIELD : cod_Filiere
ensuite
tu place un tButton (exemple bouton OK / EXECUTER)
en bas tu place un TDBGrid (c'est là que va s'afficher le contenu de ta requete une fois que tu clique sur le bouton OK)

tu va paramettrer maintenant ton Query
Selectionne le depuis l'Arbre d'Objet, clique sur son signe +, clique droit sur Param. clik encore sur AJOUTER ARTICLE du menu contextuel
dans inspecteur objet : renseigne DATA TYPE avec ftString
renseigne aussi NAME en tapant ParamCodFiliere
tu peu sauvegarder...

ensuite
evenement On Clic de ton bouton, tu ecrit le sql de ta requete du genre :

...
begin
query1.SQL.Clear;
query1.SQL.Add ('SELECT TblEleve.elvNum, tbleleve.ElvNom, tblEleve.CodFiliere, ... ');
query1.SQL.Add ('FROM ...');
query1.SQL.Add ('INNER JOIN .... ON... ');
query1.SQL.Add ('WHERE (codFiliere = :ParamCodFiliere) ');
query1.SQL.Add ('ORDER BY ... ');
query1.ParamByName ('ParamCodFiliere').AsString:=dlcCodFiliere.Text;
query1.Open;
end;
...

enfin, tu dois parametrer ton TDBGrid
selectionne ton dbGrid
dans Inspecteur Objet, renseigne son dataSource. il correspond au datasource de la requete query1

voilà, celà DEVAIT marcher sans problème
90% de mes requetes sont parametrées, voir même des parametres sur 3 niveaux et ça marche comme cela

bon courage

Eric
0
imeneimene Messages postés 61 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 10 avril 2010
21 mai 2009 à 22:24
Bonjour ,
mais ou trouver l'Arbre d'Objet du Query;
0
dans l'option Parameters en bas a gauche (propriété du query)
0
tleboukaka Messages postés 79 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 5 mai 2010 4
22 févr. 2008 à 12:57
salut

j'ai oublié un détail :
Sélectionne ton composant Query1
dans Inspecteur Objet, renseigne la valeur DATABASENAME
Proprieté ACTIVE = False
sur la ligne SQL dans Inspecteur Objet tjrs, clique sur le bouton ...
colle l'instruction de ta requete comme suit :

SELECT TblEleve.elvNum, tbleleve.ElvNom, tblEleve.CodFiliere, ...
FROM ...
INNER JOIN .... ON...
WHERE (codFiliere = :ParamCodFiliere)
ORDER BY ...

REMARQUE que ça commence par SELECT et termine par Order BY

ensuite clique sur OK pour fermer cette petite fenetre.

Si ça marche ça fairait plaisir que vous le fassiez savoir

ERIC
0
Madjid2010 Messages postés 1 Date d'inscription samedi 6 février 2010 Statut Membre Dernière intervention 9 février 2010
9 févr. 2010 à 22:21
Salut à tous ;
Je suis amateur en delphi, mons rêve est d'arriver à réaliser un jour une application.
Je souhaiterai trouver des personnes a m'assister afin de permettre d'échanger ou changer ce que je sais .
SALUTATIONS MADJID
0
étant donné que tu as paramétré l'attribut cod_fil par ":saisi", tu dois spécifié la nature de ce parametre.tu fais click sur le query en question et sur la ligne PARAMS de l'inspecteur d'objets tu selectiones les 3point(...) et tu vois la liste des parametres que tu as utilisé dans le query.tu selectionnes le parametre en question et sur la ligne datatype de l'inspecteur d'objets tu prends ftstring
essaye et tu me donnes des nouvelles .
voici mon mail angex140@yahoo.fr
0