真的 不能 解决吗?(发第4帖 求递归算法了,愿出 500分 感谢)(在线等待)
天限天空 2002-07-23 11:38:52 前三 帖 链接:
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
先谢了