Is there no way but to make another workaround function like below? The
other solutions? Please reply. Thanks in advance.
Bae, Hyun-jik
-----------------------
ADOVariant ToVariant(LONGLONG x)
{
DECIMAL d;
d.scale=0;
d.sign=0;
d.Hi32=0;
if(x<0)
{
d.sign=DECIMAL_NEG;
d.Lo64=-x;
}
else
{
d.sign=0;
d.Lo64=x;
}
_variant_t l=d;
return l;
}
ADOVariant ToVariant(ULONGLONG x)
{
DECIMAL d;
d.scale=0;
d.sign=0;
d.Hi32=0;
d.Lo64=x;
_variant_t l=d;
return l;
}
LONGLONG ToLongLong(const ADOVariant &r)
{
DECIMAL d=r;
if(d.scale!=0)
_com_issue_error(DISP_E_OVERFLOW);
if(d.sign!=0)
return -LONGLONG(d.Lo64);
else
return d.Lo64;
}
ULONGLONG ToULongLong(const ADOVariant &r)
{
DECIMAL d=r;
if(d.scale!=0)
_com_issue_error(DISP_E_OVERFLOW);
if(d.sign!=0)
return -LONGLONG(d.Lo64);
else
return d.Lo64;
}