用ado读sql2000 sever中数据时float全读为0,但bstr正确,为什么?请帮助!

lbsylh 2002-05-06 03:32:59
用ado读sql2000 sever中数据时float全读为0,但bstr正确,为什么?请帮助!

float ff=pFeild->GetItem("someItem")->value.fltVal; //ff=0???
_bstr_t bb=pFeild->GetItem("someItem")->value.bstrVal; //bb="some text"
...全文
67 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbsylh 2002-05-09
  • 打赏
  • 举报
回复
to RodgerLiang greenery knightsj

THANKS!!!

float ff = pFeild->GetItem("someItem")->value;

this is right!
lbsylh 2002-05-08
  • 打赏
  • 举报
回复
to knightsj

对不起,你可能误会我的问题了。
我的问题是读bstr类型数据没问题,date类型数据也没问题
但decimal(sql2000),float(vc)出现问题!!!
读出来的float数全为0,检查发现读出的竟是BOOL类型!!!

请帮助。
knightsj 2002-05-08
  • 打赏
  • 举报
回复
我看应该这样

variant vVal;//用variant类型可以转换成其它数据类型
_bstr_t bstrVal;
vVal = pFeild->GetItem("someItem")->value;
bstrVal = vVal.bstr;
lbsylh 2002-05-08
  • 打赏
  • 举报
回复
to rodgerliang

原为float ff=pFeild->GetItem("someItem")->value.fltVal; //ff=0???
改为_variant_t vvt=pFeild->GetItem("someItem");
结果vvt为VT_BOOL型
why???
sql2000 server里面该变量设为decimal

请帮忙!!!!!!!!!!!!!
RodgerLiang 2002-05-08
  • 打赏
  • 举报
回复
You make a mistake :

the variant value should be
_variant_t vvt=pFeild->GetItem("someItem")->Value;

you shouldn't use value.fltVal, Because vt = VT_DECIMAL
you can try this :
float ff = pFeild->GetItem("someItem")->value;
dyw 2002-05-08
  • 打赏
  • 举报
回复
试试先变更类型,再读。
var.ChangeType(...);

greenery 2002-05-08
  • 打赏
  • 举报
回复
试试
_variant_t vvt=pFeild->GetItem("someItem");
float f = float(vvt);
RodgerLiang 2002-05-06
  • 打赏
  • 举报
回复
You must make sure the return value's type is float.
You can check pFeild->GetItem("someItem")->value.vt

MSDN:
typedef struct tagVARIANT {
VARTYPE vt;
unsigned short wReserved1;
unsigned short wReserved2;
unsigned short wReserved3;
union {
unsigned char bVal; // VT_UI1.
short iVal; // VT_I2 .
long lVal; // VT_I4 .
float fltVal; // VT_R4 .
double dblVal; // VT_R8 .
VARIANT_BOOL boolVal; // VT_BOOL.
SCODE scode; // VT_ERROR.
CY cyVal; // VT_CY .
DATE date; // VT_DATE.
BSTR bstrVal; // VT_BSTR.
IUnknown FAR* punkVal; // VT_UNKNOWN.
IDispatch FAR* pdispVal; // VT_DISPATCH.
SAFEARRAY FAR* parray; // VT_ARRAY|*.
unsigned char FAR* pbVal; // VT_BYREF|VT_UI1.
short FAR* piVal; // VT_BYREF|VT_I2.
long FAR* plVal; // VT_BYREF|VT_I4.
float FAR* pfltVal; // VT_BYREF|VT_R4.
double FAR* pdblVal; // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
CY FAR* pcyVal; // VT_BYREF|VT_CY.
DATE FAR* pdate; // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
void FAR* byref; // Generic ByRef.
};

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧