不明白你的意思。
if(GetName(n[i],i)==TRUE)
;
else
;

解决方案 »

  1.   


    是不是要在GetName写运算?
      

  2.   


    // 是这样的要求?void jsk::GetName(CString str,int i)
    {  
    bool b=false;
    _RecordsetPtr ptr;
    CMy11App * p=(CMy11App *)AfxGetApp();
    if(str != "")
    {
    p->strSql = "select * from TABLE4 where 一级故障名称='"+str+"'";
    p->open(ptr); //打开数据库
    while(!ptr->rsEOF)
    {
    n[i]=(LPCTSTR)(_bstr_t)ptr->GetCollect("规则名称");
    GetName(n[i],i);
    b=true;
    qq.m[i]=n[i];
    i++;
    ptr->MoveNext();
    }
    } if(b)
    {
    //另一种运算
    }

      

  3.   

    在类中定义一个BOOL型成员变量,用于表示程序是否执行了GetName,初始化为FALSE,在GetName后面加上一行代码,把这个变量设置为TRUE,在需要分支的地方判断这个变量就可以了。
      

  4.   

    为什么不让GetName(n[i],i);返回BOOL型呢,这样就可以判断了.
      

  5.   

    大侠是这样吗BOOL pd; 
    pd=FALSE; 
    void jsk::GetName(CString str,int i) 
    { pd=TRUE; 
    _RecordsetPtr ptr; 
    CMy11App * p=(CMy11App *)AfxGetApp(); 
    if(str != "") 

    p->strSql = "select * from TABLE4 where 一级故障名称='"+str+"'"; 
    p->open(ptr); //打开数据库 
    while(!ptr->rsEOF) 

    n[i]=(LPCTSTR)(_bstr_t)ptr->GetCollect("规则名称"); 
    GetName(n[i],i); 
    if(pd=TRUE) 
    {}; 
    ELSE 
    {}; 
    qq.m[i]=n[i]; 
    i++; 
    ptr->MoveNext(); 


    }
      

  6.   


    pd=FALSE; 
    void jsk::GetName(CString str,int i) 
    { pd=TRUE; 
    _RecordsetPtr ptr; 
    CMy11App * p=(CMy11App *)AfxGetApp(); 
    if(str != "") 

    p->strSql = "select * from TABLE4 where 一级故障名称='"+str+"'"; 
    p->open(ptr); //打开数据库 
    while(!ptr->rsEOF) 

    n[i]=(LPCTSTR)(_bstr_t)ptr->GetCollect("规则名称"); 
    GetName(n[i],i); 
    if(pd=TRUE) 
    {}; 
    ELSE 
    {}; 
    qq.m[i]=n[i]; 
    i++; 
    ptr->MoveNext(); 


    }没能明白你想要的是什么意思,不过这个好像没意义吧,因为else都不可能执行到,
      

  7.   

    我是想按7楼说的那样做呀,在类中定义一个BOOL型成员变量,用于表示程序是否执行了GetName,初始化为FALSE,在GetName后面加上一行代码,把这个变量设置为TRUE,在需要分支的地方判断这个变量就可以了。可是貌似怎么都不会执行ELSE的,怎么办呀
      

  8.   

    你难道是这个意思??void jsk::GetName(CString str,int i) 
    {  _RecordsetPtr ptr; 
        CMy11App * p=(CMy11App *)AfxGetApp(); 
        if(str != "") 
        { 
              p->strSql = "select * from TABLE4 where 一级故障名称='"+str+"'"; 
              p->open(ptr); //打开数据库 
             if(!ptr->rsEOF)
            { 
                 while(!ptr->rsEOF) 
               { 
                n[i]=(LPCTSTR)(_bstr_t)ptr->GetCollect("规则名称"); 
                GetName(n[i],i); 
                //一种运算
                qq.m[i]=n[i]; 
                i++; 
                ptr->MoveNext(); 
               }
             }
             else 
             {
              //另一种运算
             }
        } 

      

  9.   

    可是貌似怎么都不会执行ELSE的,怎么办呀
    ========================================
    为什么必须在else中修改这个 bool 成员呢?在任何其他地方都可以修改的嘛,
    只要符合触发GetName的条件了,就设置BOOL型成员变量为true,
    不符合了,就设置BOOL型成员变量为false不是说必须在 GetName 执行的前后设置条件,
    而是只需要在 GetName 执行之前进行判断即可
      

  10.   

    知道呀,就是在GetName(n[i],i);这里呀,执行这句递归就一种算法,如果直接执行qq.m[i]=n[i]就另外一种,那判断应该怎么写   
      
      

  11.   

    看来还是没理解你的意思,你看看4楼是不是你要的,如果不是,再解释一下什么时候不走GetName(n[i],i)这一步。
      

  12.   

    难道这样??bool b=true;
    void GetName()
    {
      //***
      if(b)
       {
         GetName();
         b=false;
       }
       else
       {
         qq.m[i]=n[i];
         b=true;
       }
    }