要求在第一个combo box下拉列表中选择一项,将这一项转换为字符串用于查询,用SQL查询语句在数据库中提取相应记录显示于另一个combo box程序代码如下:
void CImageProc::OnSelendokCombo1()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CString str,sql1;
//初始化记录集对象
m_pRecordset2.CreateInstance(__uuidof(Recordset));
//取得第一个combo box下拉列表的值
int n = m_RoadName.GetCurSel();
m_RoadName.GetLBText(n,str);
//数据库中Name字段与该值比较取得相应记录
sql1.Format("SELECT * FROM Road WHERE Name=%s",str);
//sql1得到了相应的数据库查询语句,正确!调试时就是下面这句出错了,
HRESULT hr3=m_pRecordset2->Open((_variant_t)sql1,_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText); //从数据库中读出各个字段的数据,反馈给界面控件
if(m_pRecordset2->GetRecordCount()!=0)
{
while(!m_pRecordset2->adoEOF)
{
m_RoadPart.AddString((LPCTSTR)(_bstr_t)m_pRecordset2->GetCollect("Part"));
m_pRecordset2-> MoveNext();
}
m_pRecordset2->Close();
}
}运行时出错!
不知道该OPEN语句哪里不对,弄了2天没搞清楚
多谢您的帮助,我要崩溃了
void CImageProc::OnSelendokCombo1()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CString str,sql1;
//初始化记录集对象
m_pRecordset2.CreateInstance(__uuidof(Recordset));
//取得第一个combo box下拉列表的值
int n = m_RoadName.GetCurSel();
m_RoadName.GetLBText(n,str);
//数据库中Name字段与该值比较取得相应记录
sql1.Format("SELECT * FROM Road WHERE Name=%s",str);
//sql1得到了相应的数据库查询语句,正确!调试时就是下面这句出错了,
HRESULT hr3=m_pRecordset2->Open((_variant_t)sql1,_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText); //从数据库中读出各个字段的数据,反馈给界面控件
if(m_pRecordset2->GetRecordCount()!=0)
{
while(!m_pRecordset2->adoEOF)
{
m_RoadPart.AddString((LPCTSTR)(_bstr_t)m_pRecordset2->GetCollect("Part"));
m_pRecordset2-> MoveNext();
}
m_pRecordset2->Close();
}
}运行时出错!
不知道该OPEN语句哪里不对,弄了2天没搞清楚
多谢您的帮助,我要崩溃了
sql1.Format("select * from Road where Name='%s'",str);还不行的话查看下m_pConnection是不是空值
但不明白的是,为什么不用加那个引号,str也获得了正确的值?
但SQL语句就过不去