--并且
|__ 姓名 包涵 刘
|__ 所属单位 包涵 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先谢了
|__ 姓名 包涵 刘
|__ 所属单位 包涵 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先谢了
对, 那该怎么 写?
http://www.csdn.net/expert/topic/882/882283.xml?temp=.7165338然后 由这个查询树, 得到 查询 sql 语句。就是将 “或者”接点的子接点 用 OR 来连接, 将“并且” 接点的子接点用 AND 来连接。