Delphi 中 NextRecordset(j)
j:=0;DSTMRBpdctnomx.Recordset:=spMrbPdctno.NextRecordset(j);DSTMRBpdctno.Recordset:=s...
j := 0;
DSTMRBpdctnomx.Recordset := spMrbPdctno.NextRecordset(j);
DSTMRBpdctno.Recordset := spMrbPdctno.NextRecordset(j);
什么意思,起什么作用 展开
DSTMRBpdctnomx.Recordset := spMrbPdctno.NextRecordset(j);
DSTMRBpdctno.Recordset := spMrbPdctno.NextRecordset(j);
什么意思,起什么作用 展开
2个回答
2013-05-14
展开全部
/*
* 标题: ADO的NextRecordset()的用法
* 作者:焦佳旺 网名:风归叶
* 如转载,请保持文档内容的完整性,谢谢!
*/
表1
产品ID 单位重量 销售数量
1 2.5 100
2 3.6 89
3 5.0 20
如果想得到单位重量大于3的产品信息在客户端显示出来(比如用DBGrid).
那么可以很简单的
select 产品ID,单位重量,销售数量 from 表1 where 单位重量 > 3
就行了.
如果客户又提出来,我还想知道单位重量大于3的产品一共销售了多少.怎么办呢?
我们可以
select 产品ID,sum(销售数量) as 合计 from 表1 where 单位重量 > 3
我们发现,必须要执行两次.也就是说,有两条SQL语句要发送,当然SQL数据库也就要分别编译.对于简单的SQL语句,
这不算什么,如果是复杂的SELECT查询呢?多少会影响效率吧.
熟悉SQL的朋友们都知道,类似的问题可以用一条SQL语句解决,即加上COMPUTE.
例如:
/*
*执行前,请在SQL2000中安装PUBS示例数据库
*/
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance)
执行结果会有两个结果集. 一个是符合条件的数据, 另一个是合计.
那么上面的语句用ADODataset执行可不可以呢?答案是肯定的.
并且返回的也是两个结果集. 说到这,聪明的朋友肯定想到了. ADO的NextRecordset()原来是干这个用的!
例如
TADOTable *tbl;
try
{
int i;
tbl = new TADOTable(this);
tbl->Recordset = dtsFind->NextRecordset( i );
StatusBar->Panels->Items[0]->Text = "共有记录: " + IntToStr( dtsFind->RecordCount ) + " 条";
StatusBar->Panels->Items[1]->Text = "中国税务 " + tbl->Fields->Fields[0]->AsString + " 册";
StatusBar->Panels->Items[2]->Text = "税务研究 " + tbl->Fields->Fields[1]->AsString + " 册";
}
__finally
{
delete tbl; tbl = NULL;
}
这时候,我就可以访问tbl的中的数据了.也就是合计的数据.
可以发现, 这个方法在查询的时候很有用,一次查询,就可以得到两个"表"的内容了.省了不少事吧!:)
如果你对sql语句很精通,也可以返回3个或更多的结集.
* 标题: ADO的NextRecordset()的用法
* 作者:焦佳旺 网名:风归叶
* 如转载,请保持文档内容的完整性,谢谢!
*/
表1
产品ID 单位重量 销售数量
1 2.5 100
2 3.6 89
3 5.0 20
如果想得到单位重量大于3的产品信息在客户端显示出来(比如用DBGrid).
那么可以很简单的
select 产品ID,单位重量,销售数量 from 表1 where 单位重量 > 3
就行了.
如果客户又提出来,我还想知道单位重量大于3的产品一共销售了多少.怎么办呢?
我们可以
select 产品ID,sum(销售数量) as 合计 from 表1 where 单位重量 > 3
我们发现,必须要执行两次.也就是说,有两条SQL语句要发送,当然SQL数据库也就要分别编译.对于简单的SQL语句,
这不算什么,如果是复杂的SELECT查询呢?多少会影响效率吧.
熟悉SQL的朋友们都知道,类似的问题可以用一条SQL语句解决,即加上COMPUTE.
例如:
/*
*执行前,请在SQL2000中安装PUBS示例数据库
*/
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance)
执行结果会有两个结果集. 一个是符合条件的数据, 另一个是合计.
那么上面的语句用ADODataset执行可不可以呢?答案是肯定的.
并且返回的也是两个结果集. 说到这,聪明的朋友肯定想到了. ADO的NextRecordset()原来是干这个用的!
例如
TADOTable *tbl;
try
{
int i;
tbl = new TADOTable(this);
tbl->Recordset = dtsFind->NextRecordset( i );
StatusBar->Panels->Items[0]->Text = "共有记录: " + IntToStr( dtsFind->RecordCount ) + " 条";
StatusBar->Panels->Items[1]->Text = "中国税务 " + tbl->Fields->Fields[0]->AsString + " 册";
StatusBar->Panels->Items[2]->Text = "税务研究 " + tbl->Fields->Fields[1]->AsString + " 册";
}
__finally
{
delete tbl; tbl = NULL;
}
这时候,我就可以访问tbl的中的数据了.也就是合计的数据.
可以发现, 这个方法在查询的时候很有用,一次查询,就可以得到两个"表"的内容了.省了不少事吧!:)
如果你对sql语句很精通,也可以返回3个或更多的结集.
更多追问追答
追问
那0是返回第一个数据集吗!
追答
是的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询