Foxtable(狐表)用户栏目专家坐堂 → 多分支条件问题,求解


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

主题:多分支条件问题,求解

美女呀,离线,留言给我吧!
youkacard
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:1847 威望:0 精华:0 注册:2014/11/9 21:57:00
多分支条件问题,求解  发帖心情 Post By:2015/5/29 10:53:00 [只看该作者]

Dim Result As String '储存生成结果
Dim Start As String = e.Form.Controls("TextBox1").Value '起始号码
Dim Number As String = e.Form.Controls("TextBox2").Value '生成数量
Dim nEnd As Integer = CInt(Start) + CInt(Number) - 1 '结束号码
Dim fmt As String = "".PadLeft(Start.Length,"0") '获取起始字符占位
Dim tj() As String = e.Form.Controls("TextBox5").Value.Split(",") '条件输入
Dim gds As String = e.Form.Controls("TextBox3").Value '获取固定首位字符
Dim gdw As String = e.Form.Controls("TextBox3").Value '获取固定尾部字符
For i As Integer = Start To nEnd
    If e.Form.Controls("CheckBox1").Checked And tj.Length > 0 Then '尾数跳过条件成立
        If Array.LastIndexOf(tj,CStr(i Mod 10)) = -1 Then
            Result &= Format(i,fmt) & vbcrlf
        End If
    Else If e.Form.Controls("CheckBox2").Checked And tj.Length > 0 Then '全部跳过条件成立
        Dim b As Boolean = True
        For s As Integer = 0 To tj.Length - 1
            If CStr(i).Contains(tj(s)) Or Format(i,fmt).Contains(tj(s)) Then
                b = False
            End If
        Next
        If b Then
            Result &= Format(i,fmt) & vbcrlf
        End If
    Else If e.Form.Controls("CheckBox3").Checked And tj.Length > 0 Then '重复条件成立
        For x As Integer = 1 To tj(0)
            Result &= Format(i,fmt) & vbcrlf
        Next
    Else
        Result &= Format(i,fmt) & vbcrlf
    End If
Next

Dim save As New SaveFileDialog
save.Filter = "文本文件|*.txt"
save.Title = "保存数据"
save.OverwritePrompt = True
If save.ShowDialog = DialogResult.OK Then
    FileSys.WriteAllText(save.FileName,Result,False,Encoding.Unicode)
End If
-----------------------------------------------------------------------分割线---------------------------------------------------------------------------
红色标注的那句代码,按照正常情况下,应该是前面三个条件不成立的情况下,执行这一局才对,可是执行的时候为什么报错呢?
报错情况如下:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150529105233.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/29 10:56:00 [只看该作者]

 加入msgbox调试一下

 

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

 


 回到顶部
美女呀,离线,留言给我吧!
youkacard
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:1847 威望:0 精华:0 注册:2014/11/9 21:57:00
  发帖心情 Post By:2015/5/29 11:05:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:号码生成器.rar

版主,能帮我看下吗?,刚才调试了下,还是没找出来
现在就是想三个条件不成立的情况下,正常生成流水号

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/29 11:20:00 [只看该作者]

Dim Result As String '储存生成结果
Dim Start As String = e.Form.Controls("TextBox1").Value '起始号码
Dim Number As String = e.Form.Controls("TextBox2").Value '生成数量
Dim nEnd As Integer = CInt(Start) + CInt(Number) - 1 '结束号码
Dim fmt As String = "".PadLeft(Start.Length,"0") '获取起始字符占位
Dim tj() As String
Dim t5 As String = e.Form.Controls("TextBox5").Text
If t5 <> Nothing Then
    tj =  t5.Split(",") '条件输入
End If
Dim gds As String = e.Form.Controls("TextBox3").Value '获取固定首位字符
Dim gdw As String = e.Form.Controls("TextBox3").Value '获取固定尾部字符

For i As Integer = Start To nEnd
    If e.Form.Controls("CheckBox1").Checked And t5 <> Nothing  Then '尾数跳过条件成立
        If Array.LastIndexOf(tj,CStr(i Mod 10)) = -1 Then
            Result &= Format(i,fmt) & vbcrlf
        End If
    Else If e.Form.Controls("CheckBox2").Checked And t5 <> Nothing Then '全部跳过条件成立
        Dim b As Boolean = True
        For s As Integer = 0 To tj.Length - 1
            If CStr(i).Contains(tj(s)) Or Format(i,fmt).Contains(tj(s)) Then
                b = False
            End If
        Next
        If b Then
            Result &= Format(i,fmt) & vbcrlf
        End If
    Else If e.Form.Controls("CheckBox3").Checked And t5 <> Nothing  Then '重复条件成立
        For x As Integer = 1 To tj(0)
            Result &= Format(i,fmt) & vbcrlf
        Next
    Else
        Result &= Format(i,fmt) & vbcrlf
    End If
Next

Dim save As New SaveFileDialog
save.Filter = "文本文件|*.txt"
save.Title = "保存数据"
save.OverwritePrompt = True
If save.ShowDialog = DialogResult.OK Then
    FileSys.WriteAllText(save.FileName,Result,False,Encoding.Unicode)
End If


 回到顶部
美女呀,离线,留言给我吧!
youkacard
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:269 积分:1847 威望:0 精华:0 注册:2014/11/9 21:57:00
  发帖心情 Post By:2015/5/29 15:28:00 [只看该作者]

谢谢版主,再问个问题,按照代码,跳过指定号码之后,总数就不够了,有什么办法能让循环够数量,例如:
Dim qs As Integer = 1
Dim js As Integer = 10
Dim s As Integer '统计跳过的次数
For i As Integer = qs To js + s
If CStr(i).Contains("4") Then
s = s + 1
Else
Output.Show(i & vbcrlf)
End If
Next

这样写好像不起作用

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/29 15:36:00 [只看该作者]

Dim qs As Integer = 1
Dim js As Integer = 10
Dim s As Integer = 0
Dim i As Integer = qs
Do While s <= js - qs
    If CStr(i).Contains("4") = False Then
        s += 1
        Output.Show(i & vbcrlf)
    End If
    i = i + 1
Loop

 回到顶部