真的 不能 解决吗?(发第4帖 求递归算法了,愿出 500分 感谢)(在线等待)

天限天空 天限天空 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
前三 帖 链接:
http://www.csdn.net/expert/topic/888/888244.xml?temp=.6981623
http://www.csdn.net/Expert/TopicView1.asp?id=888244
详细内容 在 http://www.csdn.net/expert/topic/882/882283.xml?temp=.7165338


--并且
|__ 姓名 包涵 刘
|__ 所属单位 包涵 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

先谢了
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部