Bonjour à tous,
Je souhaite faire une sélection sur une base de données SQLITE et pour cela j'utilise dans un formulaire* :
- Un contrôle RadioGroup avec 3 options me permettant d'identifier et de choisir le champ qui fera l'objet de la sélection,
- Un Tedit destiné à renseigner la valeur du critère de sélection (chaîne de caractères),
- Une base gérée par Zeos (que je peux parcourir sans problèmes) avant de me lancer dans le processus de sélection (TZConnection ZC_Stock, TZQuery ZQ_Stock, DTdatasource Dats_Stock).
- Une série de contrôle TDB_Edit destiné à afficher la base de donnée et, après sélection, à afficher les résulats corespondant à cette sélection.
J'ai programmé les lignes de code suivantes*:
La construction de la requête a pour résultat (valeur de SQLselect1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 procedure TFormProduit.BT_selectClick(Sender: TObject); var selchamp1 : String ; Var ValueRG : integer; Var SQLselect1 : String ; Var Nb_EnrSel : String; begin ValueRG := Integer(RG_choixsel.ItemIndex); Case ValueRG of 0 : selchamp1 := 'Produits' ; 1 : selchamp1 := 'Designation' ; 2 : selchamp1 := 'Categorie' ; end ; Label7.caption := 'N° ' + selChamp1 ; // construction de la variable contenant la requête SQL SQLselect1 := 'SELECT * from SProduit WHERE ' + selchamp1 + '=' + QuotedStr(Ed_CritSelect.text) ; //requête // exécution de la requête SQL Try ZQ_Stock.active := False ; ZQ_Stock.SQL.Clear ; ZQ_Stock.Datasource := Datas_Stock ; ZQ_Stock.SQL.text := SQLselect1 ; ZQ_Stock.active := True; ZQ_Stock.execSQL ; finally ZQ_Stock.free ; end; // affichage des résultats de la requête //Nb_EnrSel := intToStr(ZQ_Stock.recordcount); Label6.caption :=SQLselect1 ; //Nb_EnrSel + ' sélectionnés' ; // DBED_Produit.text := ZT_Stock.fieldbyname('Produits').asString; end;
Select * from SPRODUIT (nom de la table) WHERE Produits (le nom du champ) = 'Toto' (la valeurs choisie du champ entrée dans le TEDIT
.
Lorsque je lance cette procédure, le logiciel se bloque et rien ne se passe. Impossible de localiser l'erreur commise. J'ajoute que la valeur Toto est entourée de simples quotes et non pas de doubles comme dans le gestionnaire de base SQLITE SQlite admin que j'utilise pour tester le résultat de mon code.
Quelqu'un, en cette période de farniente national, aurait-il une piste ?
Merci
R.O.
Partager