VC中采用ADO访问SQL Server数据库 ,产生IDispatch eror #3092 .请给为高手指教。加分!!谢谢了,(附部分源程序)
m_pConnection.CreateInstance( __uuidof(Connection)
m_pRecordset.CreateInstance( __uuidof(Recordset) );
m_pCommand.CreateInstance( __uuidof(Command) );
m_pConnection->Open( source , user , pwd , NULL );_bstr_t sql);
_bstr_t sql = "select * from flightdata where experimentname in ( select experimentname from flightexperiment where exeprimentdate between '" + QueryDlg.m_strFromDate + "' and '" + QueryDlg.m_strToDate + "' )";
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandText = sql;
m_pCommand->CommandType = adCmdText;
_variant_t rowcount;
m_pRecordset = m_pCommand->Execute( &rowcount , NULL , adCmdText );
.........................................................................
........................................................................
就产生了产生IDispatch eror #3092 错误。请各位大师指教!不胜感激!!
问题点数:50、回复次数:11Top
1 楼laiyiling(陌生人[MVP])回复于 2004-09-01 22:56:42 得分 10
给数据库的关键字都加上[]符号
sql = "select * from [flightdata] where [experimentname].......Top
2 楼onlyyou0115(小文)回复于 2004-09-02 00:04:15 得分 0
谢谢laiyiling,小弟也受教Top
3 楼xushuwen1979(xsw)回复于 2004-09-02 11:13:14 得分 0
加上关键字后还是出现IDispatch eror #3092 错误。我用相同的语句在sql server的查询分析器里面执行。可以得到想要的结果啊。请各位大哥出招,给小弟我指点迷津!!!Top
4 楼bohut(●伯虎● )回复于 2004-09-02 11:19:08 得分 10
3092——目标表已经存在
出现3092时是VIEW的名称对了,但view里面表的名称错了
将view里要查询的表修正Top
5 楼DebugXP(NULL)回复于 2004-09-02 11:32:39 得分 0
直接用m_pRecordset->Open执行SQLTop
6 楼xushuwen1979(xsw)回复于 2004-09-02 15:47:51 得分 0
view里面的表怎么修正 啊?能不能详细一点?多谢大哥了!Top
7 楼laiyiling(陌生人[MVP])回复于 2004-09-02 16:27:48 得分 10
_variant_t vNULL;
vNULL.vt=VT_ERROR;
m_pRecordset = m_pCommand->Execute( &vNULL,&vNULL,adCmdText );Top
8 楼xushuwen1979(xsw)回复于 2004-09-02 21:11:57 得分 0
我再把问题说得详细一些
在数据库中建了2个表
表flightxepetiment:
有3个field:experimentname , experimentdescribe , experimentdate。
表flightdata:
有多个属性:expetimentname , 和很多试验参数。。。。。。。。。
其中表flightxepetiment的experimentname是主键。在表flightdata中是外键。查询的是expetimentdata在一定范围的试验参数的数值。
bstr_t sql = "select * from flightdata where experimentname in ( select experimentname from flightexperiment where exeprimentdate between '" + QueryDlg.m_strFromDate + "' and '" + QueryDlg.m_strToDate + "' )";
这个语句我在查询分析器里面验证过是正确的。
出现IDispatch eror #3092 错误不应该是语句错误啊。
可是我试验了好几中方法Recordset的Open和Command的Execute方法都出现这个错误!
但是我把语句改成bstr_t sql = "select * from flightdata where experimentname"
就不会出现错误。估计是查询语句错了,请各位高手指点!!感谢!!!
一定加分!!
Top
9 楼yankykxy(Yanky)回复于 2004-09-02 22:49:07 得分 20
"select * from flightdata where experimentname in ( select experimentname from flightexperiment where exeprimentdate between '" + QueryDlg.m_strFromDate + "' and '" + QueryDlg.m_strToDate + "' )";
第二个 SELEECT 怎么没有输出的字段说明呢 ?Top
10 楼xushuwen1979(xsw)回复于 2004-09-03 09:47:58 得分 0
怎么说明第二个输出字段?高手能不能具体说清楚点好吗?谢谢了!!Top
11 楼xushuwen1979(xsw)回复于 2004-09-03 16:33:05 得分 0
各位高手快来看看这个问题怎么解决 啊。感觉不尽,等待中。。一定加分!!Top




