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.