源代码如下: sqlstr = "select * from Balancelist bl where card_no in(select ca.card_no from CurrentAcc ca join DebitCard dc on ca.father_no='" + cardno + "' union select ra.card_no from RegularAcc ra join DebitCard dc on ra.card_no='" + cardno + "' union select fa.card_no from FinancialAcc fa join DebitCard dc on fa.card_no='" + cardno + "')";
this.OpenCon();
OleDbDataAdapter adapter = new OleDbDataAdapter(sqlstr, sqlcon);
DataSet ds = new DataSet();
adapter.Fill(ds, "BalanceList");
this.CloseCon();
在执行上面语句时,系统报错“未处理的OleDbException,子查询中不存在此操作”,错误出现在adapter.Fill(ds,"BalanceList")这句代码。就是上面这段相同的代码我在sql 2000的环境跑过,没有问题的,但我现在数据库移植到access上了,就不能正常跑了,请大家给点解决办法。。急!! 在线等
this.OpenCon();
OleDbDataAdapter adapter = new OleDbDataAdapter(sqlstr, sqlcon);
DataSet ds = new DataSet();
adapter.Fill(ds, "BalanceList");
this.CloseCon();
在执行上面语句时,系统报错“未处理的OleDbException,子查询中不存在此操作”,错误出现在adapter.Fill(ds,"BalanceList")这句代码。就是上面这段相同的代码我在sql 2000的环境跑过,没有问题的,但我现在数据库移植到access上了,就不能正常跑了,请大家给点解决办法。。急!! 在线等
说明你SQL语句有错误啊仔细检查, 把语句拿到 access运行一遍。能跑出来结果 在复制到程序里面来。
在Access2002中运行这个语句查询时,会让我数据库出现异常,自动就关闭了,是什么原因啊?? 郁闷中,搞了半天,都没弄明白....
手边没有测试环境,只能简单说说我的建议:
1.去网上查一下有关UNION是否能用查询在ACCESS数据库的查询
2.另外所有的字段名称在加上"[]";[字段名1],[字段名1]...我记得以前测试的时候如果不加"[]"好像在条件查询中有问题,加上了就好了。
3.干脆去网上找吧,ACCESS数据库的SQL语句的写法和语法?网上有的。
熟悉Access查询的朋友帮我看看上面语句有什么问题啊? 我在Access中执行会导致数据库异常关闭...问题还在解决中..
当BalanceList表数据为空时,上面这条语句是可以正常执行的,可是如果有记录,就会出现异常,数据库死了!!!哎,Access就这么难么!!!
因为你使用的SQL语句已经涉及到多个表
所以不能使用映射到某个表的用法
改用DataTable试试