DataBinding.cpp和DataBinding.h这两个文件是从“工程->添加工程->Fiels”中添加的吧 那其中的绑定过程也是直接在里面写的吧
例如:class CFJRs:public CADORecordBinding

 BEGIN_ADO_BINDING(CFJRs)
 ......................
.....................
.....................
......................
END_ADO_BINDING()
public:
  ..............
  ..............
  都是直接写进去就行了吗对吗
指教一下

解决方案 »

  1.   

    绑定的列要与你实际的列相对应,而且顺序也不能变,在表中是什么顺序绑定时就是什么顺序,列的类别也要取最相近的,列的总数量更不能错。而且这仅仅是完成了绑定的类派生问题而已,实际的绑定操作还没开始。要你在实际上要操作数据时再使用使用代码完成。一般是生成新变量,将新量绑定到记录集,又将记录集绑定到这个绑定对象,当然记录要执行数据操作命令,以使记录集不为空,然后MoveFirst开始读写。
      

  2.   

    形如:
    class CSelInfoRs: public CADORecordBinding
    {
    public: TCHAR Product_Name[BASE_LEN];
    TCHAR Date[BASE_LEN];
    TCHAR Demo[BASE_LEN]; int Count;
    int m_lState;
    float Total_Price;
    float Per_Price;

    BEGIN_ADO_BINDING(CSelInfoRs)
    ADO_VARIABLE_LENGTH_ENTRY2(1, adChar, Product_Name, sizeof(Product_Name), m_lState, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2(2, adSingle, Per_Price, sizeof(Per_Price), m_lState, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2(3, adInteger, Count, sizeof(Count), m_lState, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2(4, adSingle, Total_Price, sizeof(Total_Price), m_lState, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2(5, adChar, Date, sizeof(Date), m_lState, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2(6, adChar, Demo, sizeof(Demo), m_lState, TRUE)
    END_ADO_BINDING()
    };
      

  3.   

    调用时:
    CSelInfoRs SelInfoRs; try
    {
    pConn->Open((_bstr_t)strSql, "", "", adModeUnknown);//打开数据库


    pRs->QueryInterface(
    __uuidof(IADORecordBinding), (LPVOID*)&picRs);

    //执行查询处理,并返回存放结果
    pRs->Open(  (_variant_t)chSqlSentence,                // 查询DemoTable表中所有字段
    pConn.GetInterfacePtr(),  // 获取库接库的IDispatch指针
    adOpenDynamic,
    adLockOptimistic,
    adCmdText);
    picRs->BindToRecordset(&SelInfoRs);
    }
    catch (...)
    {
    pRs->Close();
    pConn->Close();
    pRs = NULL;
    pConn = NULL;
    ::CoUninitialize();
    return;
    }