--并且
      |__ 姓名 包涵 刘
      |__ 所属单位 包涵 51robot
      |__ 或者
      |     |__ 性别 不等于 男
      |     |__ 并且
      |          |__ 出生年月 等于 1979-7-28
      |         |__ 所属单位 不包涵 aa
      |
      |___ 录入时间 不等于 2002-7-17
      |___ 身份证号码 包涵 5101071979上面是 我构造出来的 查询条件树 ,(前面如果是 并且 表示 子节点 都是并且 关系,前面如果是 或者 表示 子节点 都是或者 关系)请指教 我怎样 从 这个 树组合 sql 查询语句 (每个查询条件接点中都 隐藏着 所属表名、字段名、类型 ... 等条件)用vc 的递归实现,
以下是 一段 代码, 但结果 总是有问题, 请高手指点!!!
void CSearchDlg::makeSQL(HTREEITEM hItem)
{
HTREEITEM hSubItem,hSiblingItem;
    
hSubItem = m_tree.GetChildItem(hItem);
    if(hSubItem) {        
                  sqlText = sqlText + "(";
makeSQL(hSubItem);
sqlText = sqlText + ")";
} hSiblingItem = m_tree.GetNextSiblingItem(hItem); 
    while(hSiblingItem)
    {   
if(m_tree.GetItemText(hSiblingItem) != "并且" && m_tree.GetItemText(hSiblingItem) != "或者")    sqlText = sqlText + "*";        makeSQL(hSiblingItem);
        hSiblingItem = m_tree.GetNextSiblingItem(hSiblingItem); 
    }}(在这里用  *  来表示 查询条件)详细内容 在 http://www.csdn.net/expert/topic/882/882283.xml?temp=.7165338先谢了

解决方案 »

  1.   

    用递归实现查询串,只要一个sql串就行,该地归只负责生成AND XXX 或OR XXX
      

  2.   

    我就是 将 sqlText 设成 全局变量来实现阿
    对, 那该怎么 写?
      

  3.   

    在 下面 帖子 中 说明了 怎么 构建 这个 查询树,
    http://www.csdn.net/expert/topic/882/882283.xml?temp=.7165338然后 由这个查询树, 得到 查询 sql 语句。就是将 “或者”接点的子接点 用 OR 来连接, 将“并且” 接点的子接点用 AND 来连接。