oracle10g时,假如某字段为number(4),某记录值为10010,用adoquery的savetofile后的xml文件里值变为10了,前面的100自动舍弃了,有遇到此问题的吗?谢谢

解决方案 »

  1.   

    Number(4) 你是怎么存放10010这个数据的?
    貌似字段根本不够长嘛
      

  2.   


    SQL> create table t(idx int,value number(4));Table created.SQL> insert into t values(1,10010);
    insert into t values(1,10010)
                           *
    ERROR at line 1:
    ORA-01438: value larger than specified precision allowed for this column
    SQL> insert into t values(1,1010);1 row created.SQL> commit;Commit complete.SQL>
    adoQuery1.SaveToFile('c:\1.xml');
    看结果正确,我的版本11G,Delphi 6<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
    xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
    xmlns:rs='urn:schemas-microsoft-com:rowset'
    xmlns:z='#RowsetSchema'>
    <s:Schema id='RowsetSchema'>
    <s:ElementType name='row' content='eltOnly' rs:updatable='true'>
    <s:AttributeType name='IDX' rs:number='1' rs:nullable='true' rs:writeunknown='true' rs:basetable='T' rs:basecolumn='IDX'>
    <s:datatype dt:type='number' rs:dbtype='numeric' dt:maxLength='19' rs:scale='0' rs:precision='38' rs:fixedlength='true'/>
    </s:AttributeType>
    <s:AttributeType name='VALUE' rs:number='2' rs:nullable='true' rs:writeunknown='true' rs:basetable='T' rs:basecolumn='VALUE'>
    <s:datatype dt:type='number' rs:dbtype='numeric' dt:maxLength='19' rs:scale='0' rs:precision='4' rs:fixedlength='true'/>
    </s:AttributeType>
    <s:AttributeType name='ROWID' rs:number='3' rs:rowid='true' rs:basetable='T' rs:basecolumn='ROWID' rs:keycolumn='true'
     rs:hidden='true' rs:autoincrement='true'>
    <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='18' rs:fixedlength='true' rs:maybenull='false'/>
    </s:AttributeType>
    <s:extends type='rs:rowbase'/>
    </s:ElementType>
    </s:Schema>
    <rs:data>
    <z:row IDX='1' VALUE='1010' ROWID='AAARg9AAEAAAAIHAAA'/>
    </rs:data>
    </xml>
      

  3.   

    number(4)类型的字段,理论上不会存在某记录值为10010
      

  4.   

    在数据库里搜索下
    select * from tabname where colname=10010
    如果没有这条数据,说明不是delphi的导入错误,而是本身就没有这个数
      

  5.   

    number(4)字段长度不够, 肯定会报错的,根本就插不进去
      

  6.   

    我的环境是oracle10g,delphi7,按照hyrongg的方法,不写第二个参数pfXML也是有问题。如果不指定number的长度就没问题,用oracle9i的客户端连oracle10g的库也没问题,但关键是总不能再装oracle9的客户端吧,呵呵!
      

  7.   

    对了adoconnection的驱动选择的Oracle Provider for OLE DB