我按照课本上说的方法,做出了ADO调用access数据库,但有很多地方不明白为什么
做一个基于对话框的project name DoCom
工程有两个类分别为CDoComApp和CDoComDlg
1.为什么声明pRecordset在类CDoComDlg中而pConnection却在类CDoComApp中?
2.初始化COM库和pConnection_>Open()为什么要在InitInstance()中进行?
3.在pRetordset->Open()中的第二个参数为什么会是_variant_t((IDispatch*)theApp.pConn,true),本来就是一个connection,可写得这么麻烦,不明白。

解决方案 »

  1.   

    1)这个是不一定的 一般来说是在你的对话框创建的时候就建立这个声明 程序运行是先初始化CDoComApp 这代表的是一个应用程序的初始化 而CDoComDlg仅仅是这个引用程序的主体部分 所以可以在应用程序初始化的时候pConnection后pRecordset
    2)初始化COM库和OPEN不一定要在InitInstance() 在里面的原因和上面一样其实也可以在其他要用的地方采用 但是如果多次的打开同一个数据库会降低程序的数据库效率
    3)这个嘛是COM要求要这样写呵呵 没办法 多看看这方面的书和例子 很快就学得会
      

  2.   

    1.中国队又输了
    2.巴西队又大胜了
    3.我把pConnection的声明放在CDoComDlg类中,为什么不行?
    4.如果我是在CDoComDlg中声明pConnection的话,那么对于初始化COM库和pConnection->Open()我是不是可以放在OnInitDialog()中?
    5.如果我是在CDoComDlg中声明pConnection的话,那么对于pRecordset->Open()的第二个参数是不是可以写成:
         (_variant_t)pConnection
     呢?
      

  3.   

    It's OK!
    对于声明我已经过了关,原来我没有把那些初始化COM的代码移到CDoComDlg类中,不好意思
    2.对于那个pRecordset->Open()的第二个参数,为什么前面要加上个(IDispatch*)呢?
      

  4.   

    我把时间从DateTimePicker中取出就错了,为什么?
    如何做比较好?
    还有使下拉框选中指定的一项?
      

  5.   

    kao,我发现大家都很聪明,这些问题都不屑一顾