高手,谢谢你之前给我的解答,我还想问下以下代码 
void Qurey::OnButton2() 
{
UpdateData();
CString sSQL;
    SYSTEMTIME   time;   
    GetSystemTime(&time);   
    int   year   =   time.wYear ; 
    int   month   =   time.wMonth ;  
    int   day   =   time.wDay;  
int price = 0;
CString date = ("");
CString sday = ("");
CString smonth = ("");
CString syear = ("");
sday = (CString)day;
smonth = (CString)month;
syear = (CString)year;
date = syear+smonth;
date = date+sday;
_variant_t  vField; CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst1(__uuidof(Recordset));
CString  str = "Provider=MSDAORA.1;Password=123456;User ID=liyang;Data Source=orcl;Persist Security Info=True";
pConn->Open(_bstr_t(str),"","",adConnectUnspecified);
sSQL.Format("select * from object where oid = %d",m_oid);
    pRst1 = pConn->Execute(_bstr_t(sSQL),NULL,adCmdText);
vField = pRst1->GetFields()->GetItem((long)15)->Value;
price = vField.intVal;

sSQL.Format("insert into temp values('%s',%d,to_date('%s','yyyymmdd'))",m_oid,price,date);
pConn->Execute(_bstr_t(sSQL),NULL,adCmdText);
// TODO: Add your control notification handler code here

}
 在获得PRICE处就出错,为什么呢!看了几本书,改过来改过去就是不行,是连的ORCLE 还想问下,我前面的三个获得系统时间的变量的用法对吗,有什么办法这三个变量做为日期在INSERT语句中插入到我的另一个表中吗??我在这里的用三个CString 变量附值再相加好象不行,请高手指点,下我该怎么实现,就是从一个表中获得PRICE加上从系统获得日期再插入TEMP表中谢谢了!~~~~~~~~~"

解决方案 »

  1.   

    是price   =   vField.intVal出错??
    还是上面一句出错?
      

  2.   

    用ado执行数据库操作时,在外面最好加上try catch,不然会被错误郁闷死...
      

  3.   

    实在是谢谢前辈指点!~
    因为第一次用VC开发MIS所以不太知道,该怎么在里面写TRY CATCH,只要是不太懂,该抛出怎样的错误!我用断点跟踪
    就总是到了好象是汇编的地方,真的不懂!~~
    至于程序我只能不停的替换,来看是哪出错了。
    试过之后:
    sSQL.Format("insert into temp values('%s',203,to_date('18720205','yyyymmdd'))",m_oid);
    这样对了
    但是
    sSQL.Format("insert into temp values('%s',203,to_date('%s','yyyymmdd'))",m_oid,date);
    出错,所以我想的这样的方法插入得到的时间,是不行。请前辈教我个怎样得系统日期,然后插入表内
    实在是感谢!~
    至于下面这里的
    sSQL.Format("select   *   from   object   where   oid   =   %d",m_oid); 
            pRst1   =   pConn-> Execute(_bstr_t(sSQL),NULL,adCmdText); 
    vField   =   pRst1-> GetFields()-> GetItem((long)15)-> Value; 
    price   =   vField.intVal; 
    也应该有问题
    但是我想应该是前面的问题
    sSQL.Format("select   *   from   object   where   oid   =   %d",m_oid); 
            pRst1   =   pConn-> Execute(_bstr_t(sSQL),NULL,adCmdText); 
    这里的
    vField   =   pRst1-> GetFields()-> GetItem((long)15)-> Value;
    是不是可以改成
    vField = pRst1-> pRst1->GetCollect("PRICE");
    我只想得到我object表中的price值(NUMBER型)
    然后和DATE一起插入到表中,
    请前辈指点,真的是很感谢。感激不尽,我左改又改都不知道怎么改了,因为是临时搞,所以查书效果不大。
      

  4.   

    你先看看date的值是多少?
    要么调试
    要么messageBox()
    举个例子
    加入你获得的month=9
    那么你转化成字符串就是"9"
    所以你全加在一起,mm只是9,而不是你想要的09
    所以需要格式化format("%02d",month)
    打个比方
    你再仔细查一下