建的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中。。请问 问题在哪??
请说详细点、、、
谢谢、、

解决方案 »

  1.   

    _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; 你查看一下"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;
        } ;
      

  2.   

    y=atoi((LPCSTR)_bstr_t(TheValue));或者是atof
      

  3.   

    请问断点 怎么设,这个 我不会,,请指教,,,
    我先 初始化 x=100,y=100.。执行 那段 代码,,发现 x和y 都变成 0了。。
    很纳闷。。