求一个算法,自动生成指定格式的编号的问题,希望有代码
C#语言,TreeView当插入数据库时比如根节点编号是CY,然后下面依次是CY01,CY0101CY
-CY01
---CY0101
这些编号是在添加到数据库时自动生成的,每添加一个节点时,编号都是自己生成
救救我吧,这个问题困扰我一天了 --------------------编程问答-------------------- 写一个存储过程吧 --------------------编程问答-------------------- 父节点id应该知道吧。
通过查询先获得同级的最大id
大概是这样:
select max(id) from tablename where parentid = 父id
然后最大id加1。。。。。 --------------------编程问答-------------------- 帮顶..................... --------------------编程问答-------------------- 到底是在数据库中生成,还是在程序中生成?
如果是在程序中生成:
TreeNode tn=treeView1.SelectedNode;
string strText=tn.Text+tn.Nodes.Count.ToString("00");//多少位数字就加多少个0
TreeNode stn=tn.Nodes.Add(strText);
//其他处理
--------------------编程问答-------------------- up --------------------编程问答-------------------- 还是在数据库中生成简单。最好利用触发器实现。 --------------------编程问答-------------------- 用SQL解决。
把你的表结构贴出来。 --------------------编程问答--------------------
--------------------编程问答-------------------- 然后sb.ToString()就是生成后的 --------------------编程问答-------------------- 以前用过的一个方法, 假定有一个结果集,列为 id pid(指向父点) bh(编号) name. 其中的编号有的有,有的没有.现在需要补齐所有的编号. 算法:
int i=TreeView1.selectnode.nodes.count;
StringBuilder sb = new StringBuilder();
sb.Append("CY");
if(i<10)
{
sb.Append("0");
}
sb.Append((i+1).ToString());
1. While循环遍历结果集.
2. 如果是根节点,生成编号.写入当前行
3. 如果不是根节点, 而且当前记录没有编号,查找父记录是否有编号
a)没有的话,跳过.
b)有的话读出父点的编号, 假如为05. 在做循环从1 - 99,生成 0501,0502...0509.的编号,顺序查找编号是否占用,知道找到没有占用的,写入当前记录.
4. 继续循环直到所有的编号都已经生成.
这个算法的速度受节点深度的影响. 为了避免无限循环,还应该增加一个最大循环次数.
--------------------编程问答-------------------- 取最大值
select isnull(max(convert (int ,right(ecsTyCode,2))),0)+1 as maxcode from mst_bs_ecsType where left(ecsTyCode,len('FAAABBB'))='FAAABBB' and len(ecsTyCode)=len('FAAABBB')+2
其中"FAAABBB"为父结点.
要生成的结点为"FAAABBB"+上面的值. --------------------编程问答-------------------- 写SP算法吧
补充:.NET技术 , C#