我用ADO+ACCESS,写一个树!
我在初使化树叉的函数中,调用了
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM NoteTree",_variant_t((IDispatch*)theApp.m_pConnection,true),/*adOpenDynamic*/adOpenStatic,adLockOptimistic,adCmdText);
语句,一都都正常。
但当我“单击树叉显示详细信息”这个函数中要再次调用m_pRecordset时,却出错了,在这个函数中必须调用m_pRecordset->Close,然后重新m_pRecordset->Open……
可是一调用m_pRecordset->Close就出错,在单击树叉出错时就显示“RunTime Error”的错误。abnormal program termination!
PS:编译时没有出错!
这是怎么回事儿,请大家帮帮我!
close是函数,m_pRecordset->Close();
你试试
楼上的情况是可以编译过去,不过我的测试结果和楼主的错误不太一样
可以再if(m_pRecordset->state)
m_pRecordset->Close();
先探测一下状态
使用ADO编程会有些莫名其妙的错误,建议TRY CATCH试试。有时程序中的其他错误也会导致奇怪问题,仔细检查代码!
ado本来对频繁打开关闭就会出现问题
重新初始化一下呢
或者不用CLOSE 改用null
你把m_pRecordset.CreateInstance("ADODB.Recordset");放到构造函数中,看看
我把m_pRecordset.CreateInstance("ADODB.Recordset");放到构造函数中以后,在程序初使化时就出错,错误 信息是:Invalid Pointer!原来好使的ShowTree也不行了!
大家还有什么好办法吗! 55555~
将以前创建的对象先释放了
if(m_pRecordset->State)
m_pRecordset->Close();
m_pRecordset.Release();
m_pRecordset = NULL;
以后再建
m_pRecordset.CreateInstance();
再使用
这个错误就不是对象指针引起的,可能是你的数据中读写记录方面有问题,你在你的代码中
加入调度信息看看吧.