2 tianxiezhi tianxiezhi 于 2016.05.08 08:58 提问

VC++通过选择组合框条件自动查询数据库,并将查询结果显示到编辑框

问题如标题,目前编写代码如下,但选择组合框条件后没反应
代码如下,诚盼大家指教,我是编程爱好者,为自己做需,谢谢!:
CShiYinShaSet rs;
UpdateData();
CString strSQL;
//ShiYinSha:数据库中表名;
//PiCi:表中列名;
//Si_Pi:组合框ID变量,CString Si_Pi
strSQL.Format("select * from ShiYinSha where PiCi = '%s'", Si_Pi);
if (!rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL))
{
AfxMessageBox("打开数据库失败!");
return;
}

while (!rs.IsEOF())
{
    //Si_Si为编辑框变量,CString Si_Si;
    //m_Si为Acces数据库中Si列的变量
    //Si_Si.AddString((LPCTSTR)(CString)rs.m_Si);当使用此行代码时AddString出错
    Si_Si += (LPCTSTR)(CString)rs.m_Si;
    rs.MoveNext();
}
rs.Close();

2个回答

caozhy
caozhy   Ds   Rxr 2016.05.08 09:25

没看到你 Si_Pi在哪里赋值的
如果用的是DDX,那么你需要调用UpdateData

tianxiezhi
tianxiezhi 谢谢!Si_Pi在OnInitialUpdate()赋值,代码如下:
一年多之前 回复
tianxiezhi
tianxiezhi   2016.05.08 09:35

谢谢您的回复,可否给出纠正的代码

Si_Pi 在这里通过数据库查询自动显示数据库字段到组合框中的,使用时可通过下拉框选择
void CXianWeiFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

CShiYinShaSet rs;
if (!rs.Open(AFX_DB_USE_DEFAULT_TYPE, "select * from ShiYinSha"))
{
    MessageBox("打开数据库失败!", "数据库错误", MB_OK);
    //return FALSE;
}

while (!rs.IsEOF())
{
    m_ctrSiPi.AddString((LPCTSTR)(CString)rs.m_PiCi);

    rs.MoveNext();
}
rs.Close();
}
tianxiezhi
tianxiezhi 回复caozhy: 可能就确实没有您提到的赋值问题了,谢谢!
一年多之前 回复
tianxiezhi
tianxiezhi 回复caozhy: 谢谢!请教下您,在这里当如何处理啊?
一年多之前 回复
caozhy
caozhy 哪一行赋值了?再说,OnInitialUpdate在界面初始化的时候调用,就算赋值了,也不是你选择以后的值。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!