以下是程序,可是DataGrid 什么也不显示很着急啊!
 ADODBHandler dbObj;
 _RecordsetPtr p_data;
 int i;
  BOOL check =dbObj.OpenDatabase();
           if (check==TRUE)   //if connected
p_data=dbObj.GetProductNames();
DataViewGrid dlg;
      //DataViewGrid是一个form,上面就一个控件ms DataGrid 6.0 变量名为:m_DataGrid
dlg.m_DataGrid.SetRefDataSource(NULL);
dlg.m_DataGrid.SetRefDataSource(p_data);
         dlg.m_DataGrid.Refresh();
dlg.DoModal();
//
//执行这段代码可是m_DataGrid什么也不显示。
//数据库打开是正确的。因为我在紧接上面的代码,下面我用下列代码进行了严正,结果很正常:
      while ( !p_data->GetadoEOF() )
      i=p_data->Fields->GetItem("TAXWARENO")->GetValue().intVal;
   //TAXWARENO 是表的一个列,int类型   
            CString TempStr="";
  TempStr.Format("%d",i);
     MessageBox(TempStr);//能正常显示数据
             p_data->MoveNext();
             请问为什么DataGrid不工作呢?他根本什么都不显示。

解决方案 »

  1.   

    老兄,试试我的代码:
    ::CoInitialize(NULL);
    m_pCon.CreateInstance(_uuidof(Connection));
    m_pCon->Open("jw_zjgl","sa","",NULL); m_pRs.CreateInstance(_uuidof(Recordset));
    m_pRs->Open("select*from f_dw",m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    m_grid.SetRefDataSource(m_pRs);

    m_grid.SetColWidth(0,0,0);  //设置ID列的宽度为0
    m_pRs->Close();
    return TRUE;
    注意:m_grid为MSHFLEXGRID的控件变量。
          如果用DataGrid,在连接时应指明光标类型为客户端光标。
      

  2.   

    如果用DataGrid,在连接时应指明光标类型为客户端光标。
    这句话我不懂。。我太弱了。。
      

  3.   

    为DataGrid时的代码:
    m_pCon.CreateInstance(_uuidof(Connection));
    m_pCon->PutCursorLocation(adUseClient);  //必须加此句
      

  4.   

    哦!我加了这句,终于DATAGRID有点反映了。自动生成了所有行,可是其中没有数据啊!
      

  5.   

     ADODBHandler dbObj;
     _RecordsetPtr p_data;
     int i;
      BOOL check =dbObj.OpenDatabase();
    //打开的Oracle8i的数据库,在另外的一台电脑(服务器)上的。
         if (check==TRUE)     
              {
               m_datagrid1.SetRefDataSource(p_data);//能正确显示出行数,可是没有数据
        m_datagrid1.Refresh();
    //就这么多。
                。。
      //           下面的是别的处理了。
    在ADODBHandler类中,是这样打开数据库的:
    BOOL ADODBHandler ::OpenDatabase()
    {
    _bstr_t strMissing(L"");      //Variable for missing function parameters
        _bstr_t strConnectionString;  

    //Check if connection is already open
    if (!m_bDatabaseOpen)
        {
            //Initialise the connection string for database
            strConnectionString = "Provider=OraOLEDB.Oracle;Data Source="+ Datasource +
                                  "; User Id=" + Username +
      ";Password="+ Password ;     //Create instance of ADODB connection object
    m_cpConnection.CreateInstance("ADODB.Connection");
    m_cpConnection->PutCursorLocation(adUseClient);
     //上面一行 是经你指点 添加上的
            //Alternate way of creating instance
        //m_cpConnection.CreateInstance(__uuidof(Connection));
            
    //Set the connection string for ADODB connection object
    m_cpConnection->ConnectionString = strConnectionString;
        
    try
    {
                //Open Connection to database. Use strMissing for parameters that are not required
    //to be passed
                m_cpConnection->Open(strMissing,strMissing,strMissing,-1);
    }
    //Catch COM errors
        catch( _com_error &e)
    {
               // get info from _com_error
               AfxMessageBox(e.Source() +" : " +e.Description() +" in OpenDatabase() function");
       return FALSE;
    }
            
    //Catch Unhandled Exceptions
            catch(...)
    {
               AfxMessageBox("Exception in OpenDatabase() function");
       return FALSE;
    } } //Connection to database is open
        m_bDatabaseOpen = TRUE; 
    // MessageBox(_T("DataBase Open Proroly"));
    return  TRUE;    //successfully connected}
      

  6.   

    我知道了。在datagrid中的属性中的columns属性中的 DataField必须填写
    有没有办法在程序中修改它呢?
      

  7.   

    我这里在另一台机上有一个SQL SERVER,在本机上配置了一个DSN,叫jw,下面是连接
    m_pCon->Open("jw","sa","274008",NULL);  //我喜欢用ODBC,
    可以正常工作呀,这样吧,你先在你机上配置个ODBC,连接服务器的,照我的试试,应该没问题的。
      

  8.   

    难啊!
    我的这个程序原来不连数据库的(非数据库应用程序)
    后来有了这方面的需要,我就通过了添加文件的方式,把ADO 的封装类加入到了工程中,
    然后就可以访问数据库了。根本没配什么DSN.! 不过机器上有ORACLE的客户端。
    汗,我都要急死啦!
    唉,弄不好了
      

  9.   

    配置DSN很容易,对你以前的程序又没什么要求,只是连接的时候把连接字符串改成含DSN的就行了。
      

  10.   

    不配了感觉跟那个没什么关系的
    学会用datagrid 就行了吧!谢谢你!给你50分怎么样?
      

  11.   

    我没办法给你分呀!50分不行5555555555555555555
    100分呀。。舍不得
    我就这么多分了啊
    对了,我最后不用datagrid了,用edit!
    晕死,自己设置好格式 显示整齐就好了。我暂时这么处理了。谢谢你
      

  12.   

    问题没有解决啊!
    只是用来edit 自己做了 对齐处理,使其看起来像表格了。
    唉 !
    斑竹 帮我给  VCSQLVB(九龙.君威)  50分吧,剩下的分我自己保留了。
    谢谢 斑竹!