ado连接动态表

imzclf231 2010-05-03 09:04:16
在一选择表的对话框中一edit(m_edit)选择要编辑的表,点ok后在另一对话框中连接选择的表的sql语句怎么写?小弟初学VC,望各位大侠们不吝赐教。。。万分感激
...全文
179 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
imzclf231 2010-05-05
  • 打赏
  • 举报
回复
是不是子对话库(编辑表)中想要访问父对话框(选择表)(CSelectMOD类)的成员变量不成功的原因?
FireBirdCN 2010-05-05
  • 打赏
  • 举报
回复
不管是固定连接也好 动态链接也好
都是连接语句 查询语句在程序运行过程中的生成 有一点错误也不行
仔细试验自己生成的SQL语句 可以在查询分析器中试验
imzclf231 2010-05-05
  • 打赏
  • 举报
回复
非常感谢zyq5945对我的帮助,我用你的方法试了下,异常的描述如下:
ADO Error
Code=800aOe78
Code meaning=Unknown error Ox800AOE78
Source=ADODB.Recordset
Description=对象关闭时,不允许操作。
是不是因为CSelectMOD //CSelectMOD类就对应我说的选择表的对话框已经关闭,所以引用MODdlg.m_edit无效。。。还望各位能解决小弟的困惑,当然我一直在努力查找
尹成 2010-05-04
  • 打赏
  • 举报
回复
楼上正解!
zyq5945 2010-05-04
  • 打赏
  • 举报
回复
//打印调用ADO控件时产生的详细错误信息
void dump_com_error(_com_error &e)
{
CString ErrorStr;
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
ErrorStr.Format( "\n\tADO Error\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n\n",
e.Error(), e.ErrorMessage(), (LPCTSTR)bstrSource, (LPCTSTR)bstrDescription );
//在调试窗口中打印错误信息,在Release版中可用DBGView查看错误信息
::OutputDebugString((LPCTSTR)ErrorStr);
#ifdef _DEBUG
AfxMessageBox(ErrorStr, MB_OK | MB_ICONERROR);
#endif
}


try
{
//你的ADO代码

}
catch(_com_error& e)
{
dump_com_error(e);
}
zyq5945 2010-05-04
  • 打赏
  • 举报
回复
加上异常
//打印调用ADO控件时产生的详细错误信息
void dump_com_error(_com_error &e)
{
CString ErrorStr;
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
ErrorStr.Format( "\n\tADO Error\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n\n",
e.Error(), e.ErrorMessage(), (LPCTSTR)bstrSource, (LPCTSTR)bstrDescription );
//在调试窗口中打印错误信息,在Release版中可用DBGView查看错误信息
::OutputDebugString((LPCTSTR)ErrorStr);
#ifdef _DEBUG
AfxMessageBox(ErrorStr, MB_OK | MB_ICONERROR);
#endif
}
muyiyj 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zyq5945 的回复:]
http://blog.csdn.net/zyq5945/archive/2010/04/29/5541280.aspx

C/C++ code
UpdateData(FALSE);
CString strSql(_T("Select * from "));
strSql += m_edit;
if (m_pRecordset != NULL)
{
m_pRecordset->Cl……
[/Quote]

你最好去www.vckbase.com上面学习下,有很多ado的操作
zyq5945 2010-05-04
  • 打赏
  • 举报
回复
http://blog.csdn.net/zyq5945/archive/2010/04/29/5541280.aspx
UpdateData(FALSE);
CString strSql(_T("Select * from "));
strSql += m_edit;
if (m_pRecordset != NULL)
{
m_pRecordset->Close();
}

m_pRecordset->Open(strSql,.....)
shenyi0106 2010-05-04
  • 打赏
  • 举报
回复
www.codeproject.com
search adox
imzclf231 2010-05-04
  • 打赏
  • 举报
回复
在线等待,希望各位大侠及时解决小弟心中疑惑,小弟会酌情给分的。。。
imzclf231 2010-05-04
  • 打赏
  • 举报
回复
我用1楼的方法试了下,还是出现run time错误,很是不解。我把代码贴下,还望各位帮我看看:
_variant_t RecordsAffected;
CString strSql(_T("SELECT * FROM "));
CSelectMOD MODdlg; //CSelectMOD类就对应我说的选择表的对话框
strSql += MODdlg.m_edit;//不知道这么用有没有效,是不是要用全局变量。。。
if (pRster != NULL)
{
pRster->Close();
}

pRster->Open((_bstr_t)strSql,pCnt.GetInterfacePtr(),adOpenDynamic,\
adLockOptimistic,adCmdText);

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧