ado方式连接数据库.记录集m_Recordset是select * from tab
语句:
_variant_t strvar;
strvar=m_Recordset->GetCollect(_variant_t((long)2));
该字段的值比如是1131.38,那么
strvar.fltVal = 1.58540e-040;(不知道为什么是这个数)
strvar.lVal = 113138
请问如何取得这个字段的值?
请最好不要使用_bstr_t(strvar),因为程序对运行时间有要求,_bstr_t(strvar)比较费时。
另外请问如果该字段是字符型,那么是否只能用_bstr_t(strvar)取得该字段的值?

解决方案 »

  1.   

    strvar.vt = 14;
    连接的是dbf文件
    字段是Num型,长度8,2个小数位
      

  2.   

    试试
    strvar.ChangeType(VT_R8);
    然后取strvar.dblVal;看看
      

  3.   

    如果你知道小数位就用double db = strvar.lVal/100.0;
    如果不知道小数位就只能用double db = atof((char *)(LPTSTR)strvar.bstr);我觉得在这方面的时间应该不是问题把?
      

  4.   

    to:goodboyws(深夜不眠者) 
     按照你的方法,结果正确了。谢谢。
    to:lizmei001(暗黑) 
    如果数值是12.30,strvar.lVal=123,所以小数位不确定。strvar只有bstrVal属性,但是运行后会报错。
    时间确实很短,但是我大概需要执行6万次类似的操作,而且几秒钟就要执行一遍,所以希望找到一个最省时间的操作。
    strvar.lVal的时间最短,为T。strvar.dblVal的时间约为2T。_bstr_t(strvar)的时间略比4T少点。再请问如果该字段是字符型,那么是否只能用_bstr_t(strvar)取得该字段的值?
    明天给分结贴。
      

  5.   

    再请问如果该字段是字符型,那么是否只能用_bstr_t(strvar)取得该字段的值?
    ---------------------------------------
    直接用BSTR LPCWSTR  pwsz = (LPCWSTR)var.bstrVal;