VC 6.0+ODBCID Name ParentName LevelNum
1 中国 0 0  
2 四川省 中国 1
3 重庆市 中国 1
4 乐山市 四川省 2
5 德阳市 四川省 2这是表里的内容。
如何根据内容,在当前目录下,来建立一个如下的文件目录。中国
----四川省
----------乐山市
----------德阳市
----重庆市
这似乎是一个递归的问题,但跟建立树控件又有很大的不同。恳请老师们的帮助。
  CRecordSet recordset;
  strSQL="SELECT * FROM 行政区划";
if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
recordset.MoveFirst();
while (!recordset.IsEOF())
{
//用if(LevelNum)肯定不行,因为LevelNum可以递增到无限大
  //这里该如何写代码呢?请老师们帮忙给点提示。有大致的参看代码更好。
recordset.MoveNext();
}
recordset.Close();

解决方案 »

  1.   

    你不要在这个读数据的循环中直接处理,应该先按LevelNum的顺序将所有记录读取后,用数组进行存储。
    然后扫描这个数组,其中要用到递归。
      

  2.   

    本帖最后由 happyparrot 于 2010-04-26 17:18:07 编辑
      

  3.   

    回复1楼的:happyparrot老师二维数组的边界不好确定啊。
    或者请老师说的更详细一些。
    非常感谢!请继续指教!
      

  4.   

    回复 happyparrot老师 3楼我正在根据您的提示,改写程序。。
    非常感谢您!先给分。从逻辑上看,实现它应该没有问题。
    如遇到困难,我会继续发帖请教。麻烦了。
      

  5.   

    typedef struct _cityadds
    {
        CString sCity;
        CString sCityAdds;
    }cityadds;//这个结构没有问题
    //下面这个用法是什么意思?我还没有用到过,查阅基础书,也没有答案。
    //恳请happyparrot 老师的帮助
    typedef CArray<cityadds,cityadds&> CCityAddsArray;//在VC中,编译提示:TreeDlg.h(15) : error C2143: syntax error : missing ';' before '<'