我做了个功能窗体,功能窗体上有几个dataEdit控件,这些dataEdit控件的数据源,指向dataSetBroker1.
问题是:
我想让这个功能窗体打开的时候,就让dataEdit显示dataSetBroker1中的某条数据。
procedure TMainForm.BizFormShow(Sender: TObject); 中的部分代码如下:
TSQLdataset(datasetbroker1.DataSet).SQLFilter:='bm='''+LastBM+''' and RQ=to_date('''+sysutils.DateToStr(lastRQ)+''', ''yyyy-mm-dd'') and BC='''+lastBC+'''';
TSQLdataset(datasetbroker1.DataSet).SQLFiltered:=true;
datasetbroker1.DataSet.open;
datasetbroker1.DataSet.Refresh;
if datasetbroker1.DataSet.RecordCount>0 then
begin
……
end;
经验证: TSQLdataset(datasetbroker1.DataSet).SQLFilter的值可以在数据库的表中取到一条记录,可不知道为什么:datasetbroker1.DataSet.RecordCount>的值总是0?
这可怎么办?
我做了个功能窗体,功能窗体上有几个dataEdit控件,这些dataEdit控件的数据源,指向dataSetBroker1.
问题是:
我想让这个功能窗体打开的时候,就让dataEdit显示dataSetBroker1中的某条数据。
procedure TMainForm.BizFormShow(Sender: TObject); 中的部分代码如下:
TSQLdataset(datasetbroker1.DataSet).SQLFilter:='bm='''+LastBM+''' and RQ=to_date('''+sysutils.DateToStr(lastRQ)+''', ''yyyy-mm-dd'') and BC='''+lastBC+'''';
TSQLdataset(datasetbroker1.DataSet).SQLFiltered:=true;
datasetbroker1.DataSet.open;
datasetbroker1.DataSet.Refresh;
if datasetbroker1.DataSet.RecordCount>0 then
begin
……
end;
经验证: TSQLdataset(datasetbroker1.DataSet).SQLFilter的值可以在数据库的表中取到一条记录,可不知道为什么:datasetbroker1.DataSet.RecordCount>的值总是0?
这可怎么办?
3楼的回答:TSQLdataset(datasetbroker1.DataSet).DataFetch.CommandText的值为
select * from ZBJLB where (bm = 'CLD' and RQ = to_date('2009-9-3', 'yyyy-mm-dd') and BC = '中班')
放在Toad for oracle 中查询了一下,查出来了一条记录。
4楼的回答:代码执行到
if datasetbroker1.DataSet.RecordCount>0 then 的时候,看到datasetbroker1.DataSet.RecordCount的值为0,DataEdit没有任何数据显示。
不用sqlfilter,用userfilter吗?我两个都试过,对于解决这个问题没有帮助。数据集的刷新refresh,我可以把它去掉。
我不是说不用SQLFilter用userfilter,而是,直接给把“select * from ZBJLB where (bm = 'CLD' and RQ = to_date('2009-9-3', 'yyyy-mm-dd') and BC = '中班') ”这个赋值给SQL语句,即给
TSQLDataSet(datasetbroker1.DataSet).SQL.Text 赋值,或者直接把这个SQL语句定义到数据集上,看看是否有数据,
从你的描述看,说 DataEdit没有任何数据显示 没有数据,说明这个SQL过去客户端没有得到任何数据哦,RecordCount 这个值为0,是正常的。我问一下你的rq字段,是日期型的,还是日期时间型的,就是是否带时间呢?
或者说你在给数据集定义SQL语句,见附件图,从数据库中是否看到有'2009-9-3'这个值,后面是否带时间了
我把代码改成了这样:
DataSetBroker1.DataSet.Close;
Tsqldataset(DataSetBroker1.DataSet).SQL.Clear;
Tsqldataset(DataSetBroker1.DataSet).SQL.Text:='select * from ZBJLB where '+'bm='''+LastBM+''' and RQ=to_date('''+sysutils.DateToStr(lastRQ)+''', ''yyyy-mm-dd'') and BC='''+lastBC+'''';
DataSetBroker1.DataSet.Open;
datasetbroker1.DataSet.Refresh;
if datasetbroker1.DataSet.RecordCount>0 then
dialogs.ShowMessage('查出来有记录!');
我把代码改成了这样:
DataSetBroker1.DataSet.Close;
Tsqldataset(DataSetBroker1.DataSet).SQL.Clear;
Tsqldataset(DataSetBroker1.DataSet).SQL.Text:='select * from ZBJLB where '+'bm='''+LastBM+''' and RQ=to_date('''+sysutils.DateToStr(lastRQ)+''', ''yyyy-mm-dd'') and BC='''+lastBC+'''';
DataSetBroker1.DataSet.Open;
datasetbroker1.DataSet.Refresh;
if datasetbroker1.DataSet.RecordCount>0 then
dialogs.ShowMessage('查出来有记录!');