try
{ if (m_DataPtr.m_pSampleSet!=NULL)
{
m_DataPtr.m_pSampleSet->Close(); 
}
m_DataPtr.m_pSampleSet->Open(dbOpenDynaset,strQuery);  
                //我追中在上面报错,提示 access   voilation
//m_DataPtr.OpenDatabase("PL300.mdb");
}
catch (CDaoException* e)
{
::DaoErrorMsg(e);
e->Delete();
}

解决方案 »

  1.   

    if (m_DataPtr.m_pSampleSet)
    {
    m_DataPtr.m_pSampleSet- >Open(dbOpenDynaset,strQuery);   
    }
      

  2.   

    是这句m_DataPtr.m_pSampleSet- >Open(dbOpenDynaset,strQuery);   
    提示 存储违例:Access Violation
      

  3.   

    strQuery的内容,是一个查询语句,这个没有关系.
    我就是单独执行m_DataPtr.m_pSampleSet-  >Close();
    也出错啊
      

  4.   

    不要下面的我的能够正常运行:
    try { if (m_DataPtr.m_pSampleSet!=NULL) 

    m_DataPtr.m_pSampleSet- >Close();  

    m_DataPtr.m_pSampleSet- >Open(dbOpenDynaset,strQuery);   
                    //我追中在上面报错,提示 access   voilation 
    //m_DataPtr.OpenDatabase("PL300.mdb"); 

    catch (CDaoException* e) 

    ::DaoErrorMsg(e); 
    e- >Delete(); 

     
      

  5.   

    就这么剪切了一段代码看不懂啊
    数据库吗?
    这段干啥用的??防御什么?
    if (m_DataPtr.m_pSampleSet!=NULL)  
    {  
    m_DataPtr.m_pSampleSet-  >Close();   

    指针被关闭之后是不是还需要重新CreateInstance才能open??
      

  6.   

    指针被关闭之后是不是还需要重新CreateInstance才能open?? 
    --------------------------------------------------
    关闭之后它就为NULL,应该可以直接使用吧,它应该可以直接打开
    -----------
    这段代码应该比较独立了吧,假如都弄上来比较麻烦了啊
      

  7.   

    try {        CDaoRecordset *pp;
          pp->Open(dbOpenDynaset,strQuery); 
        }   catch (CDaoException* e)  
        {  
          ::DaoErrorMsg(e);  
          e-  >Delete();  
        }  
    也出错,这是怎么回事啊!??
     
      

  8.   

    try {        CDaoRecordset *pp;
          pp- >Open(dbOpenDynaset,strQuery); 
        }   
    这个错误很正常,如果不出错才奇怪了,因为*pp是一个空指针,什么也没有指向,所以就出现了错误。
      

  9.   


    关键是看:m_DataPtr.m_pSampleSet-〉close()里面是如何处理的,如果程序中
    是把m_DataPtr.m_pSampleSet = NULL;
    那么再使用,就出现了问题。
    所以,我认为是m_DataPtr.m_pSampleSet = NULL为空了
      

  10.   

    if (m_DataPtr.m_pSampleSet!=NULL)    // 这里判断指针是否为空
    {
    m_DataPtr.m_pSampleSet- >Close(); 
    }
    m_DataPtr.m_pSampleSet- >Open(dbOpenDynaset,strQuery);   // 执行这一句为什么不判断了???
      

  11.   

    为空应该可以打开;不为空,那为什么呢?给它赋什么值?
    我的strQuery是strQuery.Format("select sample,..,curveDown from [sample] where user=#%s#",g_strUser)
    g_strUser是一个全局的用户名变量,                       |
                                                    省略
      

  12.   

    if (m_DataPtr.m_pSampleSet!=NULL)    // 这里判断指针是否为空  //因为它可能前面指向另外的一个表,所以要关了
    {
    m_DataPtr.m_pSampleSet- >Close(); 
    }
    m_DataPtr.m_pSampleSet- >Open(dbOpenDynaset,strQuery);   // 执行这一句为什么不判断了???
    //这里有后面的catch检测
      

  13.   

    关键是看:m_DataPtr.m_pSampleSet-〉close()里面是如何处理的,如果程序中 
    是把m_DataPtr.m_pSampleSet = NULL; 
    那么再使用,就出现了问题。 
    所以,我认为是m_DataPtr.m_pSampleSet = NULL为空了
    --------------------------------------------------
    Close()就是CDaoRecordset的一个函数,不是我定义的.m_pSampleSet是一个CDaoRecordset的一个指针.
      

  14.   

    sql语句没错马?
    换个最简单的看看
    select sample,..,curveDown from [sample] where user=#%s#",
    为什么是#%s#?日期?
    表名和列名相同?sample?
      

  15.   

    strQuery.Format("select sample,..,curveDown from [sample] where user='%s'",g_strUser) 
      

  16.   

    我把user当成日期了.
    但不是这里的问题,我改了也是这样.
    我一开始就没有注意到这里来,因为在这块我一执行数据库操作,就提示"存储违列"
      

  17.   

    是啊 
    应该是这样才正常,不过不太清楚楼主的想法
    ----------------------------------------
    我是在这里查询一个表,然后用LIST显示出来一些字段,和画出一些字段的曲线.
    但是我在这里一操作数据库就"存储违列"
      

  18.   

    m_DataPtr.m_pSampleSet-  >Open(dbOpenDynaset,strQuery);   // 执行这一句为什么不判断了???
    //这里有后面的catch检测 
    ----------------
    倒!!!指针为0时也用catch来处理???m_DataPtr.m_pSampleSet的值是否为0,设个断点看一下。
      

  19.   

    存储违列???
    不过话说回来,dao我也没用过,我用的是ado
      

  20.   

    if (m_DataPtr.m_pSampleSet) 

    m_DataPtr.m_pSampleSet-  >Open(dbOpenDynaset,strQuery);    
    } 你换一下试试看,再问