以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 编号自动判断的问题(最后一楼的问题望解释!) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11898) |
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 10:26:00 -- 编号自动判断的问题(最后一楼的问题望解释!) 项目如下
目前我通过事件编程把闲置的编号存放在 删除备份表里 引用狐狸爸爸的一段代码 For Each v As String In DataTables("删除备份").GetUniqueValues("", "编号")
目前还有2个小问题没解决
第一个是 编号与车系之间有一定关系 瑞风 编号是 A开头 ; 瑞鹰是 Y开头 ;同悦是 T开头 ;宾悦是 B开头
项目目前只是实现了增加一行 会在客户档案表 编号列自动引用 删除备份 的编号列的闲置编号
第二个是 编号与车牌号之间的关系
编号 Y0-1 苏K-33360 就代表车牌号尾数为0的 第一个瑞鹰建档客户
由于我想从输入习惯上严格控制数据的精确性
所以我最终的目的是 打个比方
需要录入一个新客户 车牌号是 苏K-3R281的瑞风车 车型号是HC6500A3C7BE3;
1.用加载树选择瑞风 然后选择 HC6500A3C7BE3 录入;
2.输入车牌号苏K-3R281 此时 客户档案的编号列自动会先匹配 删除备份里 A1开头的闲置号码 如果有就自动启用并显示在客户档案表 编号里 如果没有该号码 就自动判别 当前客户档案里A1开头最后一位建档客户 例如:A1-101是当前A1开头的最后一位建档客户,那新号码就是A1-102 并显示在编号里
[此贴子已经被作者于2011-8-17 9:42:54编辑过]
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 10:57:00 -- 由于编号蛮复杂的 搞得现在不知道 从哪里下手~
或者提供其它思路也可以~ [此贴子已经被作者于2011-8-16 10:57:03编辑过]
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 11:55:00 -- 求助中。。。 |
||||
-- 作者:don -- 发布时间:2011/8/16 13:14:00 -- 给你个自动编码的: Select Case e.DataCol.Name Case "车系","车牌号" Dim s1,s2 As String Dim dr,dr1 As DataRow dr = e.DataRow s1 = dr("车牌号") If dr("车系") ="" OrElse s1 = "" Then dr("编号") = Nothing Else dr1=DataTables("编码").Find("车系=\'" & dr("车系") & "\'") If dr1 IsNot Nothing Then s2= dr1("编码") & right(s1,1) & "-" dr1 = DataTables("表A").Find("编号 Like \'" & s2 & "*\'" ) If DataTables("表A").DataRows.count =1 OrElse dr1 Is Nothing Then dr("编号") = s2 & "001" Else Dim n,n1 As Integer n1=Right(DataTables("表A").Compute("Max(编号)","编号 Like \'" & s2 & "*\'"),3) For n = 1 To n1 If DataTables("表A").Find("编号 = \'" & s2 & format(n,"000") & "\'") Is Nothing Then dr("编号") = s2 & format(n,"000") Exit For Else dr("编号") = s2 & format(n1+1,"000") End If Next End If End If End If End Select
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 15:02:00 -- 很好 很强大 我去研究下 |
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 16:06:00 -- 发现有几个问题!
1.能否不用A0-000这个格式 而是用A0-1,A0-12,A0-123这种格式呢?
也就是说 n1=Right(DataTables("客户档案").Compute("Max(编号)","编号 Like \'" & s2 & "*\'"),3) 这段代码
换成 取S2 右边的所有值
如果可以的话 我把原来的代码 For n = 1 To n1
改成 For n = 1 To n1 Exit For End If
对不对?
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 16:21:00 -- 搞好了 用了 substring函数
整个代码如下 帮忙查看下 还有什么问题?
Select Case e.DataCol.Name
[此贴子已经被作者于2011-8-16 16:28:30编辑过]
|
||||
-- 作者:紙上不談兵 -- 发布时间:2011/8/16 20:58:00 -- 7樓的代碼應該是不行的 |
||||
-- 作者:紙上不談兵 -- 发布时间:2011/8/16 22:06:00 -- Select Case e.DataCol.Name Case "车系","车牌号" Dim s1,s2 ,s3 As String Dim dr,dr1 As DataRow Dim n,n1 As Integer Dim dt As DataTable = e.DataTable dr = e.DataRow s1 = dr("车牌号") If dr("车系") ="" OrElse s1 = "" Then dr("编号") = Nothing Else dr1=DataTables("编码").Find("车系=\'" & dr("车系") & "\'") If dr1 IsNot Nothing Then s2= dr1("编码") & right(s1,1) & "-" s3= "编号 Like \'" & s2 & "%\'" dr1 = dt.Find(s3) If dt.DataRows.count =1 OrElse dr1 Is Nothing Then dr("编号") = s2 & "1" Else For Each dr1 In dt.Select(s3) n=dr1("编号").Substring(3) n1=iif(n1<n,n,n1) Next For n = 1 To n1 If dt.Find("编号 = \'" & s2 & n & "\'") Is Nothing Then dr("编号") = s2 & n Exit For Else dr("编号") = s2 & n1+1 End If Next End If End If End If End Select
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/8/16 22:49:00 -- 恩 我研究下你的 看看~ |