以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自动编号  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=23262)

--  作者:lxhmax
--  发布时间:2012/9/7 10:30:00
--  [求助]自动编号

 

 

   我要将编号列设置为自动编号“WT000001”,以这种格式每增加一行就自动添加编号!请问要怎么写代码,因为这个是关联列,如果用了表达式就关联不了了


--  作者:jspta
--  发布时间:2012/9/7 10:34:00
--  

在帮助中搜索  自动编号 找到“自动编号生成方法”

觉得狐爸应该直接提供这种简单单列,字母+数字的自动增量行数给用户直接调用,省的普通用户为这个发愁

[此贴子已经被作者于2012-9-7 10:38:12编辑过]

--  作者:lxhmax
--  发布时间:2012/9/7 15:11:00
--  
我的意思是没有前面字母那一列,将字母直接在代码中添加进去!因为这两个字母是固定的~
--  作者:狐狸爸爸
--  发布时间:2012/9/7 15:55:00
--  

如果这样,很简单,用表达式列就行:

 

http://www.foxtable.com/help/topics/1443.htm

 


--  作者:lxhmax
--  发布时间:2012/9/7 15:58:00
--  

这个列我是要作为关联列的,表达式列关联不了~~


--  作者:lin_hailun
--  发布时间:2012/9/7 16:18:00
--  
写成一个内部函数来用吧,毕竟自增编号用到的情况挺多。

Dim dt As DataTable = DataTables(args(0))   \'表名
Dim drName As String = args(1)   \'列名
Dim left As String = args(2)   \'左边
Dim fomart As String = args(3)   \'格式
Dim max As String
Dim idx As Integer
max = dt.Compute("Max(" & drName & ")")
If max > "" Then
    idx = CInt(max.SubString(left.Length, fomart.Length)) + 1
Else
    idx = 1
End If
Return left &  Format(idx, fomart)

然后,调用函数。

Dim idx As String = Functions.Execute("函数名", "表名", "列名", "WT", "000000")
MessageBox.Show(idx)

--  作者:狐狸爸爸
--  发布时间:2012/9/7 16:23:00
--  
以下是引用lxhmax在2012-9-7 15:58:00的发言:

这个列我是要作为关联列的,表达式列关联不了~~

 

你用"_Identify"建立关联就行,你加这个WT只是美观而已,需要显示WT的地方,都用表达式列,实际的数据还是用整数型列。


--  作者:lxhmax
--  发布时间:2012/9/7 17:20:00
--  

请问下~这怎么个用法,小弟新手不会呢~谢谢啦!


--  作者:jspta
--  发布时间:2012/9/7 17:43:00
--  
以下是引用lxhmax在2012-9-7 17:20:00的发言:

请问下~这怎么个用法,小弟新手不会呢~谢谢啦!

根据8楼的代码,放到内部函数中,命名“自动编号”

然后在表事件,DataRowAdded 中

e.DataRow("序号列名") = Functions.Execute("自动编号", e.DataTable.Name, "序号列名", "WT", "000000")


--  作者:lxhmax
--  发布时间:2012/9/8 9:07:00
--  

可以啦~太感谢你们了~