Foxtable(狐表)用户栏目专家坐堂 → 编号自动判断的问题(最后一楼的问题望解释!)


  共有11372人关注过本帖树形打印复制链接

主题:编号自动判断的问题(最后一楼的问题望解释!)

帅哥哟,离线,有人找我吗?
gaoyong30000
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
编号自动判断的问题(最后一楼的问题望解释!)  发帖心情 Post By:2011/8/16 10:26:00 [只看该作者]

项目如下

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:内控系统1.rar

 

目前我通过事件编程把闲置的编号存放在 删除备份表里 

引用狐狸爸爸的一段代码

For Each v As String In DataTables("删除备份").GetUniqueValues("", "编号")
    If DataTables("表A").Find("编号 = '" & v & "'") Is Nothing Then
        e.DataRow("编号") = v
        Exit For
    End If
Next

 

 

目前还有2个小问题没解决

 

第一个是 编号与车系之间有一定关系    瑞风 编号是  A开头   ; 瑞鹰是 Y开头   ;同悦是 T开头 ;宾悦是 B开头

 

           项目目前只是实现了增加一行 会在客户档案表 编号列自动引用 删除备份 的编号列的闲置编号

 

第二个是 编号与车牌号之间的关系
           编号 A0-3   苏K-S6530 就代表车牌号尾数为0的 第三个瑞风建档客户
           编号 A1-3   苏K-L5661 就代表车牌号尾数为1的 第三个瑞风建档客户

 

           编号 Y0-1   苏K-33360 就代表车牌号尾数为0的 第一个瑞鹰建档客户
           编号 Y1-1   苏K-35051 就代表车牌号尾数为1的 第一个瑞鹰建档客户

 

 

 

由于我想从输入习惯上严格控制数据的精确性 

 

所以我最终的目的是  打个比方

 

需要录入一个新客户 车牌号是 苏K-3R281的瑞风车 车型号是HC6500A3C7BE3;

 

1.用加载树选择瑞风 然后选择 HC6500A3C7BE3  录入;

 

2.输入车牌号苏K-3R281  此时 客户档案的编号列自动会先匹配 删除备份里 A1开头的闲置号码

         如果有就自动启用并显示在客户档案表 编号里 

         如果没有该号码 就自动判别 当前客户档案里A1开头最后一位建档客户 例如:A1-101是当前A1开头的最后一位建档客户,那新号码就是A1-102 并显示在编号里

 

 

 

 

[此贴子已经被作者于2011-8-17 9:42:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/8/16 10:57:00 [只看该作者]

由于编号蛮复杂的 搞得现在不知道 从哪里下手~

 

或者提供其它思路也可以~

[此贴子已经被作者于2011-8-16 10:57:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/8/16 11:55:00 [只看该作者]

求助中。。。


 回到顶部
帅哥哟,离线,有人找我吗?
don
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:扬州华泰内控系统.table


 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/8/16 15:02:00 [只看该作者]

很好 很强大 我去研究下


 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By: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
            If DataTables("客户档案").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

 

改成

 For n  = 1 To n1
            If DataTables("客户档案").Find("编号 = '" & s2 & n & "'") Is Nothing Then
            dr("编号") = s2 & n

               Exit For
          Else
             dr("编号") = s2 & N1+1

          End If
 Next

 

对不对?


 


 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/8/16 16:21:00 [只看该作者]

搞好了  用了 substring函数

 

整个代码如下  帮忙查看下 还有什么问题?

 

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("客户档案").Find("编号 Like '" & s2 & "*'" )
                If DataTables("客户档案").DataRows.count =1  OrElse  dr1 Is Nothing Then
                    dr("编号") = s2 & "1"
                Else
                    Dim n,n1 As Integer
                    n1=dr("编号").SubString(3)
                   
                    For n  = 1 To n1
                        If DataTables("客户档案").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

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:内控系统1.rar

[此贴子已经被作者于2011-8-16 16:28:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/8/16 20:58:00 [只看该作者]

7樓的代碼應該是不行的

 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/8/16 22:49:00 [只看该作者]

恩  我研究下你的 看看~


 回到顶部
总数 17 1 2 下一页