vc数据库开发日记2

CEmployees 类:

 

用来对应人事表插入、删除、修改、查询的类,是这个模块的直接调用的核心,

通常由窗体层面调用此类(MFC框架)。需要注意的一点是,这个类必须依赖一个公共的变量(PubTableName,当前正在使用表的名字)才能正常工作,虽然考虑过默认参数,但是为了程序更改和扩展,最终放弃了这个方案,如果一定要用可以使用重载的方法来扩充。  

 

CEmployees 类的函数:

 

构造/析构函数:

CEmployees                              包括ADOConn 的初始连接和sqlstr的初始化

~CEmployees                            无特别用处

-------------------------------------------------------------------------------------------------------------------

成员函数:

Insert                                         插入一个新的记录,调用前必须首先填好类的Hrt这个变量然后调用这个函数。注意:表的序号自动增加类型

        

         Mofidy                                      修改一个记录,必须提供数据表中的序号、Hrt PubTableName

 

         GetInfo                                      得到一个记录的内容,必须提供数据表中的序号。

 

         Del                                           删除一个记录,必须提供数据表中的序号。

 

         HaveGH                                     判定一个工号是否已经存在。

 

         VartToCString1                          从数据库中读到数据,然后转化成CString,已经考虑到了读到NULL的情况

        

         VartToCString                            同上但是最终放弃,不明原因的错误老是出现。

        

         ------------------------------------------------------------------------------------------------------------

 

        

         Employees 成员函数详细说明:

        

         Insert :

                   函数原型:int CEmployees::Insert(CString TableName)

                   

参数:    参数:

         

          TableName:当前正在用的表名字,如 200708 200706

函数内部对应Hrt来动态生成SQLinsert语句,如果Hrt一个字变量是空,那么在插入时,自动填上空。但是有几个特殊以下说明:工号,如果有重复那么是无法插入新的记录的。 Hrt的进长日期和出生日期一但确定为正常,那么Hrt应签定合同日期和应签定社保险日期及入厂年龄会自动计算并填入。而合同签定日一旦确定,合同到期日期也会填入。这里得感谢LeaF的方法,的确是十分不错。而且方法本来就是他创造的之不过VC、VB的写法不一样。   

 

 

          GetInfo :

                    函数原型:int CEmployees::GetInfo(UINT Id, CString TableName, HRT &hrt)

           给出于Id,TableName,调用以后Hrt会填充进数据表中相应记录的内容。

                   

                   附上部分代码:

 

BOOL CEmployees::HaveGH(CString GH, CString TableName)

{

       sqlstr ="select 工号 from " + TableName + " WHERE 工号='" + GH  + "'" ;

       //sql ...

       _RecordsetPtr pRecordSet;

       pRecordSet=adocnn.GetRecordSet(sqlstr);

      

       if (pRecordSet->adoEOF)//喂这里可是BOOL类型哦

       {

              //没有这条记录返回false

              return FALSE;

       }

       else

       {    

              //有这一条记录。

              return TRUE;

       }

 

                  }

                  -------------------------------------------------------

       //

int CEmployees::Del(UINT id, CString TableName)

{

      

       //进来是unsigned int 类型转化

       CString strId;

       strId.Format("%d",id);

       //============================

       sqlstr = "delete from " + TableName + " where 序号 = " + strId ;

       adocnn.ExecuteSQL(sqlstr);

       //adocnn.ExitConnect();

      

       //状态码,未使用

       return 0;

}

        ---------------------------------------------------------

   CString CEmployees::VarToCString1(CString strZD, _RecordsetPtr pRset)

{

       CString strValue;

       _variant_t var;

 

       var = pRset->GetCollect((_variant_t)strZD);

       if (var.vt != VT_NULL)

       {

              strValue = (LPCSTR)_bstr_t(var);

       }

       else if(var.vt != VT_EMPTY)

       {

              strValue = "";

       }

       else

       {

              strValue = "";

       }

       return strValue;

}

 

========================重头戏,是这个==============================

int CEmployees::Insert(CString TableName)

{

      

       CString Sqlc = "";

       CString Sqlv = "";

       CString DeptIndex = "";

 

       //1。部门

       if(! hrt.DeptIn.IsEmpty())

       {

              if(hrt.DeptIn.Mid(3,4)=="厂部")

              {

                     Sqlc+="部门,";

                     Sqlv+="'厂部',";

 

              }

              else

              {

                     Sqlc=Sqlc + "部门,";

                     Sqlv=Sqlv + "'" + hrt.DeptIn.Mid(3,6) +"',";

                    

              }

             

              Sqlc+="DeptIndex,";

              Sqlv+="'" +hrt.DeptIn +"',";

             

       }

       else

       {

              Beep(500,200);

       }

       //2.工号这里只检查是否空,长度的问题留给窗体函数

    if (hrt.No.IsEmpty() == FALSE)

       {

              if (HaveGH(hrt.No,PubTableName))

              {

                     Beep(500,500);

                     AfxMessageBox("工号不能重复啊!");

                     return 1;

              }

              else

              {

             

                     Sqlc+="工号,";

                     Sqlv+="'" +hrt.No +"',";

                  AfxMessageBox("工号码没重复,OK!");

              }

    }

       else

       {

              //工号为空!

              Beep(500,200);

       }

       //3.姓名

       if (!hrt.Name.IsEmpty())

       {

              Sqlc+="姓名,";

              Sqlv+="'" + hrt.Name + "',";

 

       }

       else

       {

              Beep(500,200);

              AfxMessageBox("姓名不能为空!");

              return 1;

       }

       //4姓别

       if(!hrt.Sex.IsEmpty())

       {

              Sqlc += "性别,";

              Sqlv += "'" + hrt.Sex + "',";

       }

 

       //5职务

       if (!hrt.Headship.IsEmpty())

       {

              Sqlc += "职务,";

              Sqlv += "'" + hrt.Headship + "',";

       }

       //6进厂日期

       if (!hrt.Jcrq.IsEmpty())

       {

              Sqlc += "进厂日期,";

              Sqlv += "'" + hrt.Jcrq + "',";

             

              //-----------------------------------------------------------------

              //时间转化成oletime

              COleVariant VariantTimeJcrq;

              COleDateTime DateTimeJcrq;

              //进厂日期

              VariantTimeJcrq = hrt.Jcrq;

              VariantTimeJcrq.ChangeType(VT_DATE);

              DateTimeJcrq = VariantTimeJcrq;

              //-----------------------------------------------------------

              DateTimeJcrq +=30;

              //应签定社保日期

              hrt.Yqhtrq = DateTimeJcrq.Format(_T("%Y-%m-%d"));

              //应签定合同日期

              hrt.Yqsb = DateTimeJcrq.Format(_T("%Y-%m-%d"));

              {

                     Sqlc += "应签合同日期,";

                     Sqlv += "'" + hrt.Yqhtrq + "',";

                     Sqlc += "应办社保日期,";

                     Sqlv += "'" + hrt.Yqsb + "',";

              }

              //-------------------------------------------------------------

             

              //-----------------------------------------------------------------

             

      

       }

       else

       {

              AfxMessageBox("进厂日期,没有?");

              return 1;

       }

       //7出生日期

       if (!hrt.Csrq.IsEmpty())

       {

              Sqlc += "出生日期,";

              Sqlv += "'" + hrt.Csrq + "',";

             

              //===================================================================

              //时间转化成oletime

              COleVariant VariantTime;

              COleDateTime DateTime;

              //出生日期

              VariantTime = hrt.Csrq;

              VariantTime.ChangeType(VT_DATE);

              DateTime = VariantTime;

             

              //入场年龄

 

             

             

              //时间转化成oletime

              COleVariant VariantTime1;

              COleDateTime DateTime1;

              //入场日期

              VariantTime1 = hrt.Jcrq;

              VariantTime1.ChangeType(VT_DATE);

              DateTime1 = VariantTime1;

 

              //入厂年龄 :入场日期-出生日期

              int i;//临时变量

              DateTime1=DateTime1-DateTime;

              i=DateTime1.GetYear();

              i-=1900;

              hrt.Rcage=i;

              //CString转化

              CString strAge;

              strAge.Format("%d",hrt.Rcage);

              //Sql语句

              Sqlc += "入厂年龄,";

              Sqlv += "'" + strAge + "',";

 

 

 

 

       }

       else

       {

              AfxMessageBox("出生日期,没有?");

              return 1;

       }

       //离开厂日期

       if (!hrt.Lcrq.IsEmpty())

       {

              Sqlc += "离厂日期,";

              Sqlv += "'" + hrt.Lcrq + "',";

       }

       //身份证号码 长度有效后续进行。

       if (!hrt.IdCard.IsEmpty())

       {

              Sqlc += "身份证号码,";

              Sqlv += "'" + hrt.IdCard +"',";

       }

       //地址

       if (!hrt.Address.IsEmpty())

       {

              Sqlc += "住址,";

              Sqlv +="'" + hrt.Address + "',";

 

       }

       //合同签定日期

       if (!hrt.Htrq.IsEmpty())

       {

             

              Sqlc += "合同签订日,";

              Sqlv += "'" + hrt.Htrq +"',";

 

                            //=====合同到期日================

                            //时间转化成oletime

                            COleVariant VariantTime;

                            COleDateTime DateTime;

                            //合同签定日期

                            VariantTime = hrt.Htrq;

                            VariantTime.ChangeType(VT_DATE);

                            DateTime = VariantTime;

                            //一年默认365

                            DateTime+=365;

                            hrt.Htdrq = DateTime.Format(_T("%Y-%m-%d"));

                            Sqlc += "合同到期日,";

                            Sqlv += "'" + hrt.Htdrq +"',";

             

 

      

       }

       //入社保日期

       if (!hrt.Rsbrq.IsEmpty())

       {

              Sqlc += "入社保日期,";

              Sqlv += "'" + hrt.Rsbrq +"',";

              //入社会保险了

              Sqlc += "社保,";

              Sqlv += "'Y',";

       }

       //入商保日期

       if (!hrt.Rbbrq.IsEmpty())

       {

              Sqlc += "入商保日期,";

              Sqlv += "'" + hrt.Rbbrq + "',";

              //=========

              Sqlc += "商保,";

              Sqlv += "'Y',";

       }

       //退商保日期

       if (!hrt.Cbbrq.IsEmpty())

       {

              Sqlc += "退商保日期,";

              Sqlv += "'" + hrt.Cbbrq +"',";

       }

       //办就业证日期

       if (!hrt.Bjyrq.IsEmpty())

       {

              Sqlc += "办就业证日期,";

              Sqlv += "'" + hrt.Bjyrq +"',";

       }

       //办暂住证日期

       if(!hrt.Bzrq.IsEmpty())

       {

              Sqlc += "办暂住证日期,";

              Sqlv += "'" + hrt.Bzrq +"',";

 

       }

       //备注

       if (!hrt.Memo.IsEmpty())

       {

              Sqlc += "备注,";

              Sqlv += "'" + hrt.Memo+"',";

       }

      

       //收尾工作

       Sqlc = Sqlc.Left(Sqlc.GetLength()-1);

       Sqlv = Sqlv.Left(Sqlv.GetLength()-1);

             

       //sql语句完成.

       sqlstr="insert into " + PubTableName + "(" +Sqlc + ") values (" + Sqlv +")";

      

      

       AfxMessageBox(sqlstr);

       //执行sql 语言。     

       adocnn.ExecuteSQL(sqlstr);

      

      

      

       return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值