建的Win32 Application的工程,,
我需要 获取 物体A 的坐标 (x,y)
在构造函数 里写了这么一段,,CoInitialize(NULL);
try
{_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ddd";
pConn->Open("","","",adConnectUnspecified); pRst->Open("select * from location where lname='A' ",(IDispatch *)pConn,adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t TheValue;
TheValue=pRst->Fields->GetItem("dbx")->Value;
if(TheValue.vt!=VT_NULL)
x=TheValue.fltVal; TheValue=pRst->Fields->GetItem("dby")->Value;
if(TheValue.vt!=VT_NULL)
y=TheValue.fltVal; pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
} CoUninitialize();
但是,坐标值 并没有 传到 x,y中。。请问 问题在哪??
请说详细点、、、
谢谢、、
我需要 获取 物体A 的坐标 (x,y)
在构造函数 里写了这么一段,,CoInitialize(NULL);
try
{_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ddd";
pConn->Open("","","",adConnectUnspecified); pRst->Open("select * from location where lname='A' ",(IDispatch *)pConn,adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t TheValue;
TheValue=pRst->Fields->GetItem("dbx")->Value;
if(TheValue.vt!=VT_NULL)
x=TheValue.fltVal; TheValue=pRst->Fields->GetItem("dby")->Value;
if(TheValue.vt!=VT_NULL)
y=TheValue.fltVal; pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
} CoUninitialize();
但是,坐标值 并没有 传到 x,y中。。请问 问题在哪??
请说详细点、、、
谢谢、、
TheValue=pRst->Fields->GetItem("dbx")->Value;
if(TheValue.vt!=VT_NULL)
x=TheValue.fltVal;TheValue=pRst->Fields->GetItem("dby")->Value;
if(TheValue.vt!=VT_NULL)
y=TheValue.fltVal; 你查看一下"dbx", "dby"的数据类型是什么,是double的话,采用TheValue.dblVal; 是float的话,采用TheValue.fltVal; 是int的话,采用theValue.intVal;详细参见结构体
struct tagVARIANT
{
union
{
struct __tagVARIANT
{
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
LONGLONG llVal;
LONG lVal;
BYTE bVal;
SHORT iVal;
FLOAT fltVal;
DOUBLE dblVal;
VARIANT_BOOL boolVal;
_VARIANT_BOOL bool;
SCODE scode;
CY cyVal;
DATE date;
BSTR bstrVal;
IUnknown *punkVal;
IDispatch *pdispVal;
SAFEARRAY *parray;
BYTE *pbVal;
SHORT *piVal;
LONG *plVal;
LONGLONG *pllVal;
FLOAT *pfltVal;
DOUBLE *pdblVal;
VARIANT_BOOL *pboolVal;
_VARIANT_BOOL *pbool;
SCODE *pscode;
CY *pcyVal;
DATE *pdate;
BSTR *pbstrVal;
IUnknown **ppunkVal;
IDispatch **ppdispVal;
SAFEARRAY **pparray;
VARIANT *pvarVal;
PVOID byref;
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
ULONGLONG ullVal;
INT intVal;
UINT uintVal;
DECIMAL *pdecVal;
CHAR *pcVal;
USHORT *puiVal;
ULONG *pulVal;
ULONGLONG *pullVal;
INT *pintVal;
UINT *puintVal;
struct __tagBRECORD
{
PVOID pvRecord;
IRecordInfo *pRecInfo;
} __VARIANT_NAME_4;
} __VARIANT_NAME_3;
} __VARIANT_NAME_2;
DECIMAL decVal;
} __VARIANT_NAME_1;
} ;
我先 初始化 x=100,y=100.。执行 那段 代码,,发现 x和y 都变成 0了。。
很纳闷。。