Subject Re: query result
From Mervyn Bick <invalid@invalid.invalid>
Date Sat, 18 Jul 2020 17:34:13 +0200
Newsgroups dbase.getting-started

On 2020-07-18 16:32, Mustansir Ghor wrote:
> Dear All
>
> I am using following two queries in 2 grids in a similar fashion of seeing invoice no and date in grid 1 and and items details of a particular (a row of grid 1)  invoice in grid2.
>
>   this.QTEMPSAL = new QUERY(this)
>     with (this.QTEMPSAL)
>        left = 21.0
>        database = form.dlocal
>        sql = "select sno,sdate from sales where sdate between :mdate1 and
>                 :mdate2 group by sno,sdate"
>        params["mdate1"] = {  /  /  }
>        params["mdate2"] = {  /  /  }
>        active = true
>     endwith
>
>    
>     this.QSALES = new QUERY(this)
>     with (this.QSALES)
>        left = 15.0
>        top = 1.0
>        database = form.dnov
>        sql = "select * from sales where sno=:sno"
>        masterSource = form.qtempsal.rowset
>        active = true
>     endwith
>
> In both grids initial results are fine. Even when I scroll down in grid one, the grid2 displays correctly for each row of grid 1. However after last row when i scroll up , the rows of grid 1 displays last row content in all. And grid 2 does not display based on grid 1
>
> Since duplication of data were only 2 columns, I decided to keep records in one file and avoid using join.
>
> Can anybody point out were the problem lies.

I can't replicate the problem here.

I don't know why you found it necessary to use two different database
objects.  Are the the sales tables different in each database?


For the QTEMPSAL query try the following.

     sql = "select distinct sno,sdate from sales where sdate between
:mdate1 and :mdate2"

To make sure you only see details for the selected date in grid2 you
will need to change the sql property in the QSALES query

    sql = "select * from sales where sno=:sno and sdate=:sdate"


If you want to see all the sales for a given customer use the following
in QTEMPSAL

sql = "select distinct sno from sales where sdate between :mdate1 and
:mdate2

The fields in the WHERE clause do not need to be in the rowset.

For QSALES add parameters to the query and use

    sql = "select * from sales where sno=:sno and sdate between :mdate1
and :mdate2"

Mervyn.