题目:有两张表,一张是staff(员工号,姓名,工资,所属部门),另一张是department(部门号,部门名称,负责人),要求:(1)通过一个菜单触发一个对话框输入员工姓名,再弹出一个对话框输出该员工所在部门负责人的姓名。(2)在View类中添加一个CRecordset的指针m_pSet来实现(1)的操作。代码:
void CPersonnelView::OnQuery()
{
// TODO: Add your command handler code here
CString m_mgrName=' ';
CPutStfNameDlg m_putStfName;
if(m_putStfName.DoModal()==IDOK)
{
CString strSQL;
strSQL.Format("select 负责人 from department where 部门名称 = (select 所属部门 from staff where 姓名 = '%s')",m_putStfName.m_stfName);
m_pSet->m_pDatabase->ExecuteSQL(strSQL);
if(m_pSet->GetRecordCount()==1)
{
m_pSet->GetFieldValue(1, m_mgrName); CString strOut = "这个部门的负责人是" + m_mgrName ; AfxMessageBox(strOut);
}
else
{
AfxMessageBox("无这个员工");
}
}
}问题:在执行SQL语句后,set还总是staff表的第一条记录(初始化时设置的),就说明这句SQL语句执行后,set并没有装进新的记录集,什么原因呢?是不是再调用一下Open呢?试了一下还是不能得到正确结果啊。
void CPersonnelView::OnQuery()
{
// TODO: Add your command handler code here
CString m_mgrName=' ';
CPutStfNameDlg m_putStfName;
if(m_putStfName.DoModal()==IDOK)
{
CString strSQL;
strSQL.Format("select 负责人 from department where 部门名称 = (select 所属部门 from staff where 姓名 = '%s')",m_putStfName.m_stfName);
m_pSet->m_pDatabase->ExecuteSQL(strSQL);
if(m_pSet->GetRecordCount()==1)
{
m_pSet->GetFieldValue(1, m_mgrName); CString strOut = "这个部门的负责人是" + m_mgrName ; AfxMessageBox(strOut);
}
else
{
AfxMessageBox("无这个员工");
}
}
}问题:在执行SQL语句后,set还总是staff表的第一条记录(初始化时设置的),就说明这句SQL语句执行后,set并没有装进新的记录集,什么原因呢?是不是再调用一下Open呢?试了一下还是不能得到正确结果啊。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货