Subject |
Re: Paremeter for SQL SELECT |
From |
Mervyn Bick <invalid@invalid.invalid> |
Date |
Thu, 26 Mar 2015 15:25:36 +0200 |
Newsgroups |
dbase.getting-started |
On Thu, 26 Mar 2015 15:05:43 +0200, Svatopluk Blaha
<svatopluk.blaha@seznam.cz> wrote:
> Many thanks for explaining but using your's code I do not obtain asked
> result. Table Job has fields Id and Xy, value of Id are "A" or "B".
> Formular has an entryfield for input parameter value and a pushbutton
> for starting selection. The code I have is:
> ....
> function PUSHBUTTON1_onClick
> cId = form.entryfield1.value // cId = "A"
> ? "cId= "+cId
> q = new Query()
> q.sql=[SELECT * FROM Job WHERE Id = :pId]
> q.params['pId'] = 'cId'
> q.requestLive := false
> q.active:=true
> return
>
> No result. Single statement: SELECT * FROM Job WHERE Id = 'A' works as
> it is expected of course. Where i made a mistake?
The problem is q.params['pId'] = 'cId'
You are asking dBASE to select records where the string "cId" is found in
the Id field and, of course, there aren't any. If you remove the quote
marks all should be well.
You will also probably need to trim the value in entryfield1. It is also
probably a good idea to force the value in entryfield1 to uppercase to
match the values in the table just in case the user enters a lowercase
value.
cId = upper(trim(form.entryfield1.value))
q.params['pId'] = cId
This will look for records where Id holds the contents of cId which, in
this case, is "A".
Mervyn.
|
|