我本来代码如下:(运行正常)
GetDlgItem(IDC_EDIT1)->GetWindowText(m_bt); 
GetDlgItem(IDC_COMBO1)->GetWindowText(strTemp); 
str1.Format("insert into wz (title,class,nr) values('%s','%s','%s')",m_bt,strTemp,fromClipboard);    
m_pConnection->Execute((_bstr_t)str1,NULL,adCmdText);
我现在想把时间也加到记录里去就出错了
GetDlgItem(IDC_EDIT1)->GetWindowText(m_bt); 
GetDlgItem(IDC_COMBO1)->GetWindowText(strTemp); SYSTEMTIME sys;
GetLocalTime( &sys );
CString time;
time.Format("%d-%d-%d  %d:%d:%d",sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond);        
    
str1.Format("insert into wz (title,class,nr,date) values('%s','%s','%s','%s')",m_bt,strTemp,fromClipboard,time);    
m_pConnection->Execute((_bstr_t)str1,NULL,adCmdText); 
编译没问题,运行就出错,不知道什么原因

解决方案 »

  1.   

    try
    {
    }
    catch(_com_error &e)
    {
    CString strErrMsg = e.Description();
    AfxMessageBox(strErrMsg);
    }
      

  2.   

    将执行SQL的部分放到Try里面去   查看报错信息  再来根据提示更改SQL语句
      

  3.   

    我这么写了:
    try
     {
          str1.Format("insert into wz (title,class,nr,date) values('%s','%s','%s','%s')",m_bt,strTemp,fromClipboard,time); 
      m_pConnection->Execute((_bstr_t)str1,NULL,adCmdText); 
     }
        catch(_com_error &e)
    {
         CString strErrMsg = e.Description();
         AfxMessageBox(strErrMsg);
    }
    编译有问题,
    error C2440: 'initializing' : cannot convert from 'class _bstr_t' to 'class CString'
            No constructor could take the source type, or constructor overload resolution was ambiguous
    Error executing cl.exe.3.exe - 1 error(s), 1 warning(s)
      

  4.   

    我考虑了一下,是不是因为date字段是日期/时间数据类型,而CString time;的原因啊
      

  5.   

    写入DateTime类型需要先转换吧,找到个转换的方法
    strCString="2003-10-27 6:24:37"; //CString--->COleDateTime      
    COleVariant vtime(strCString);     
    vtime.ChangeType(VT_DATE);      
    COleDateTime time4=vtime; 
      

  6.   

    我添加代码如下:
        SYSTEMTIME sys;
        GetLocalTime( &sys );
        CString   time;  
        time.Format("%d-%d-%d  %d:%d:%d ", sys.wYear,sys.wMonth,sys.wDay, sys.wHour,sys.wMinute,sys.wSecond);  
          
        COleVariant vtime(time);    
        vtime.ChangeType(VT_DATE);      
        COleDateTime time4=vtime;
    str1.Format("insert into wz (title,class,nr,date) values('%s','%s','%s','%s')",m_bt,strTemp,fromClipboard,time4); 
    还是运行有错
      

  7.   

    这样的SQL是没有问题的,你把SQL中的data换成[date]试下
      

  8.   

    刚测试你的代码,没发现问题,我用的SQL2000,我在想你那边出错是不是因为你的代码里:time.Format("%d-%d-%d  %d:%d:%d",sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond);    
    这里面的两个空格?("%d-%d-%d  %d:%d:%d"或者说你的数据表里的date字段的类型问题,建议先在查询分析器里运行一下你程序里生成的SQL,看看是何错
      

  9.   


    1.这样的SQL是没有问题的,你把SQL中的data换成[date]试下
    试了还是不行
    2.我把这里面的两个空格time.Format("%d-%d-%d  %d:%d:%d",sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond);   
    ?("%d-%d-%d  %d:%d:%d"给删掉了,也不行。我的的数据表里的date字段是日期/时间数据类型。
    3.建议先在查询分析器里运行一下你程序里生成的SQL,看看是何错
    我不知道怎么在查询分析器里运行程序里生成的SQL
    4.你的数据库文件修改为带有时间项了吗?。不明白你的意思
      

  10.   

    运行时一点按钮,就出错,说是“0x10217cd3”指令引用的“ox9e87c65a”内存。该内存不能为“read"