void CSocketEvent::ConfirmUpDown(CString &str1,CString &str2,double &x,double &y)
{
CDaoRecordset RecSet(&m_db);

    COleVariant var,var1,var2,var3;
var.ChangeType(VT_R8,NULL);
var1.ChangeType(VT_BSTR,NULL);
var2.ChangeType(VT_R8,NULL);
var3.ChangeType(VT_R8,NULL);
CString strSql;
double df_x;        //前面点的X坐标
          double df_y;        //前面点的Y坐标
double dn_x;        //现在点的X坐标
double dn_y;        //现在点的Y坐标
int n1 = 0;
n1 = str1.Find(" ",0);
str1 = str1.Right(str1.GetLength() - n1 - 1); strSql.Format("select * from hqp5 where carnum like '*%s*'", str1);
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,strSql,NULL);
if(RecSet.GetRecordCount() < 1)
{
RecSet.Close();
strSql.Format("select * from hqp5");
                  RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,strSql,NULL);
RecSet.AddNew();

                  var1 = CString(str1);
RecSet.SetFieldValue("carnum",var1);
         var2 = double(x);
RecSet.SetFieldValue("df_x",var2);
var3 = double(y);
RecSet.SetFieldValue("df_y",var3);
        RecSet.Update();
RecSet.Close();
}
   在if(RecSet.GetRecordCount() < 1)条件里面我新增数据,var2和var3是double类型,加到数据库是正确的;var1是CString类型,比如是"1971",加到数据库中后就只有"1"了,后面的都没有了,不知道怎么改,请高手指点.

解决方案 »

  1.   

    你这个carnum是什么类型阿??
      

  2.   

    另外,对于在数据库增加纪录,还可以使用插入语句,用如下sql语句 sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"个人推荐用这种方法
      

  3.   

    carnum是表中的字段,在ACCESS我设置成文本类型的.
      

  4.   

    不好意思,我跑这边来买个小问题,请高手解决 前几天我在本机装了一个SQL,同时写了一个带ADO控件的程序,发现程序在本机运行正常,可是一移植到其他机上面的时候,发现加了ADO控件的都不起作用了,我以为是数据源的问题,设置好数据源,和SQL的IP地址后,还不行,实在是没有办法了,我复制源程序代码到客户机上面,同时安装了一个VC编译器,一编译程序,所有的ADO又有用了,这个时候的SQL还在原来的服务器上面。你说怪不怪啊,如果是这样的话,我有20台客户机的话,那现在是不是需要每台都要装VC编译器,是ADO没有起作用吗?
    哪个帮我解决一下,在线等,谢谢我个人感觉是不是什么环境没有安装好
      

  5.   

    应该没问题啊,你看看数据库里面carnum的长度对吧还有,跟踪一下 var1 = CString(str1);
    以后,var1的值是多少,
      

  6.   

    carnum的长度我设置成最大的了,var1的值跟踪的时候是正确的,如"1927",但插入后就变成只剩"1"了.