设为首页 加入收藏

TOP

3.8.1 设计员工模块(4)
2013-10-07 14:27:57 来源: 作者: 【 】 浏览:54
Tags:3.8.1 设计 员工 模块

3.8.1  设计员工模块(4)

(7) 因为树形控件中需要显示部门信息又要显示员工信息,而员工信息是根据部门来划分的,所以在这里使用了两层的循环语句。第一个whlie循环读取部门信息,根据读取到的部门信息再遍历记录集读取相应的员工信息。双击"删除"按钮添加消息响应函数,实现员工信息的删除,代码如下:

  1. void CEmpInfoManageDlg::OnDel()    
  2.  {    
  3.   if(theApp.m_strEmpID == "")                      
    //员工编号不能为空    
  4.   {    
  5.       MessageBox("请选择一条信息!");             
    //信息提示    
  6.       return ;    
  7.   }    
  8.   CString strSQL;                                   
    //定义字符串变量    
  9.   strSQL.Format("delete from emp where id = %s", 
    theApp.m_strEmpID);    
  10.      if(MessageBox("确定删除吗?", "注意", MB_YESNO)
    == IDYES)    //消息提示  
  11.      {    
  12.          try    
  13.          {    
  14.              theApp.m_pConnection->Execute((_bstr_t)
    strSQL, NULL, adCmdText);    
  15.              MessageBox("删除成功!");    
  16.             ShowTreeData();    
  17.              m_ListCrtl.DeleteAllItems();    
  18.          }    
  19.          CATCH_ERROR;    
  20.      }    
  21.   }  

3. 修改员工信息

此部分与员工信息添加相类似,区别在于"修改"按钮的消息响应函数。"修改"按钮的消息响应函数OnUpdate( )代码如下:

  1. void CEmpUpdateDlg::OnUpdate()    
  2.  {    
  3.   UpdateData();                           
  4.      //数据更新    
  5.   if(m_strName == "")                          
  6.      //条件的判断    
  7.   {    
  8.       MessageBox("姓名不能为空!");              
  9.      //信息提示    
  10.       return ;    
  11.   }    
  12.   if(m_nAge == 0)    
  13.      {    
  14.          MessageBox("请设置年龄!");    
  15.          return ;    
  16.      }    
  17.      CString strSex, strDepart, strBirth, strAge;      
  18.      //定义字符串变量    
  19.      strBirth.Format("%d-%d-%d", m_Birth.GetYear(),  
  20.  m_Birth.GetMonth(), m_Birth. GetDay());    
  21.      GetDlgItem(IDC_COMBO1)->GetWindowText(strSex);    
  22.      //获取组合框文本    
  23.     GetDlgItem(IDC_COMBO2)->GetWindowText(strDepart);   
  24.      //获取组合框文本    
  25.     strAge.Format("%d", m_nAge);    
  26.      m_pRecordset->PutCollect("name",_variant_t(m_strName));     
  27.      //修改姓名    
  28.      m_pRecordset->PutCollect("age",_variant_t((long)m_nAge));   
  29.      //修改年龄    
  30.      m_pRecordset->PutCollect("sex",_variant_t(strSex));        
  31.      //修改性别    
  32.      m_pRecordset->PutCollect("addr",_variant_t(m_strAddr));    
  33.      //修改住址    
  34.      m_pRecordset->PutCollect("depart",_variant_t(strDepart));   
  35.      //修改部门    
  36.      m_pRecordset->PutCollect("birth",_variant_t(strBirth));    
  37.      //修改生日    
  38.      m_pRecordset->PutCollect("phone",_variant_t(m_strPhone));  
  39.      //修改电话    
  40.      m_pRecordset->PutCollect("more",_variant_t(m_strMore));  
  41.      //修改备注    
  42.      char            *pBuf = m_pBMPBuffer;    
  43.      VARIANT         varBLOB;    
  44.      SAFEARRAY       *psa;    
  45.      SAFEARRAYBOUND  rgsabound[1];    
  46.      if(pBuf)    
  47.      {    
  48.          rgsabound[0].lLbound = 0;    
  49.          rgsabound[0].cElements = m_nFileLen;    
  50.          psa = SafeArrayCreate(VT_UI1, 1, rgsabound);    
  51.         for (long i = 0; i < (long)m_nFileLen; i++)    
  52.              SafeArrayPutElement (psa, &i, pBuf++);    
  53.          varBLOB.vt = VT_ARRAY | VT_UI1;    
  54.           varBLOB.parray = psa;    
  55.          m_pRecordset->GetFields()->GetItem("photo")-  
  56.      >AppendChunk(varBLOB);  
  57.      //修改图片数据    
  58.      }    
  59.      m_pRecordset->Update();                         
  60.      //更新记录集    
  61.      MessageBox("修改成功!");    
  62.  }  

在上述代码中,对数据库的修改并不是通过SQL语句进行的,而是先通过PutCollect( )函数修改相应的字段,然后调用Update( )函数完成数据库的更新。读者可以将其与员工信息添加的代码进行对比来掌握。

4. 员工查询

(1) 插入一个对话框资源,ID为IDD_EMP_INDEX_DLG,如图3-9所示。

 
图3-9  员工查询
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.8.1 设计员工模块(5) 下一篇3.8.1 设计员工模块(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: