一个嵌套select语句的问题
我的select语句是这样的:
sql="select noteid,usercode,title,ttime,( select count(*) as nums from renotesheet where notesheet.noteid=renotesheet.noteid) from notesheet order by ttime";
oledbconnection cnn=new oledbconnection(strcnn);
cnn.open();
oledbdataadapter cmd=new oledbdataadapter(sql,cnn);
dataset ds=new dataset();
cmd.fill(ds,"table1");
this.datagrid1.datasource=ds.tables["table1"].defaultview;
this.datagrid1.databind();
在运行时出现如下问题:
至少一个参数没有被指定值。
说明: 执行当前 web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: system.data.oledb.oledbexception: 至少一个参数没有被指定值。
源错误:
行 130: oledbdataadapter cmd=new oledbdataadapter(sql,cnn);
行 131: dataset ds=new dataset();
行 132: cmd.fill(ds,"table1");
行 133: this.datagrid1.datasource=ds.tables["table1"].defaultview;
行 134: this.datagrid1.databind();
在datagrid1中有这5个绑定字段:noteid,usercode,title,ttime,nums.如果去掉嵌套的select语句和绑定字段nums就毫无问题
推荐阅读
将as nums 返到外面
就是sql="select noteid,usercode,title,ttime,( select count(*) from renotesheet where notesheet.noteid=renotesheet.noteid) as nums from notesheet order by ttime";
sql="select noteid,usercode,title,ttime,( select count(*) as nums from renotesheet where notesheet.noteid=renotesheet.noteid) from notesheet order by ttime";
子查询中缺少表名 notesheet
sql="select noteid,usercode,title,ttime,
( select count(*) as nums from notesheet,renotesheet
where notesheet.noteid=renotesheet.noteid)
from notesheet order by ttime";
try to modify it as following:
sql="select noteid,usercode,title,ttime,
( select count(*) from renotesheet
where noteid in (select noteid from notesheet)) as nums
from notesheet order by ttime";


讨论区