以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]控件输入内容控制  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40401)

--  作者:ywz801
--  发布时间:2013/9/18 6:54:00
--  [求助]控件输入内容控制
图片点击可在新窗口打开查看我想在点击确定按钮时,如果其它所有控件内容不为空就新增一条记录,否则就不增加。而且账号控件只能输入数字字符,余额只能输入数字,如何解决,请指教。

Dim chk As WinForm.ComboBox
chk = Forms("账户管理").Controls("是否内部账号")
If chk.Value = "是" Then
    Dim kjmc() As String \'控件名称
    Dim kjmcjh As String = "所属机构,机构编码,所属部门,部门编码,账户类别,账类编码,账户名称,余额方向,余额" \'控件名称集合
    kjmc = kjmcjh.split(",")
    For i As Integer = 0 To kjmc.Length - 1
        If e.Form.Controls(kjmc(i)).text = "" Then
            MessageBox.Show("内容不能为空")
            e.Form.Controls(kjmc(i)).Select()
            Exit For
        End If
    Next
    If e.Form.controls("余额").text <> "" Then
        Tables("账户管理表").AddNew()
        Dim dr As DataRow
        dr = Tables("账户管理表").Current.DataRow
        dr("是否内部账号") = True
        dr("所属机构") = e.Form.Controls("所属机构").text
        dr("机构编码") = e.Form.Controls("机构编码").text
        dr("所属部门") = e.Form.Controls("所属部门").text
        dr("部门编码") = e.Form.Controls("部门编码").text
        dr("账户类别") = e.Form.Controls("账户类别").text
        dr("账类编码") = e.Form.Controls("账类编码").text
        e.Form.Controls("账号").text = dr("账号")
 dr("账户名称") = e.Form.Controls("账户名称").text
    dr("余额方向") = e.Form.Controls("余额方向").text
    dr("余额") = e.Form.Controls("余额").text
    dr("开立日期") = e.Form.Controls("开立日期").text
    End If
ElseIf chk.Value = "否"
    Dim kjmc() As String \'控件名称
    Dim kjmcjh As String = "账户名称,账号,余额方向,余额" \'控件名称集合
    kjmc = kjmcjh.split(",")
    For i As Integer = 0 To kjmc.Length - 1
        If e.Form.Controls(kjmc(i)).text = "" Then
            MessageBox.Show("内容不能为空")
            e.Form.Controls(kjmc(i)).Select()
            Exit For
        End If
    Next
    If e.Form.controls("余额").text <> "" Then
        Tables("账户管理表").AddNew()
        Dim dr As DataRow
        dr("是否内部账号") = False
        dr("账号") = e.Form.Controls("账号").text
dr("账户名称") = e.Form.Controls("账户名称").text
    dr("余额方向") = e.Form.Controls("余额方向").text
    dr("余额") = e.Form.Controls("余额").text
    dr("开立日期") = e.Form.Controls("开立日期").text
    End If
  End If

代码中提示不能用“<>”,请老师指点。
图片点击可在新窗口打开查看此主题相关图片如下:新增账户.jpg
图片点击可在新窗口打开查看

--  作者:lsy
--  发布时间:2013/9/18 8:11:00
--  

有例子测试的话,马上就能得到错误提示,大致判断出问题所在。

不需要一条条看代码。

能快的方法,楼主却不用。


--  作者:ywz801
--  发布时间:2013/9/21 8:53:00
--  
我将代码改为:总提示出错“字符串转换成LONG无效”,出错位置在红色位置,它们都是字符型,不知为何出错,如何改,请老师指教!!
Dim chk As WinForm.ComboBox
chk = Forms("账户管理").Controls("是否内部账号")
If chk.Value = "是" Then
    Dim kjmc() As String \'控件名称
    Dim kjmcjh As String = "所属机构,机构编码,所属部门,部门编码,账户类别,账类编码,账户名称,余额方向,余额" \'控件名称集合
    kjmc = kjmcjh.split(",")
    For i As Integer = 0 To kjmc.Length - 1
        If e.Form.Controls(kjmc(i)).text = "" Then
            MessageBox.Show("内容不能为空")
            e.Form.Controls(kjmc(i)).Select()
            Exit For
        End If
    Next
 If  e.Form.controls("所属机构").text And e.Form.controls("机构编码").text And e.Form.controls("所属部门").text And e.Form.controls("部门编码").text And e.Form.controls("账户类别").text And e.Form.controls("账类编码").text And e.Form.controls("账户名称").text And   e.Form.controls("余额方向").text And e.Form.controls("余额").text <> "" Then
           
        
        Tables("账户管理表").AddNew()
        Dim dr As DataRow
        dr = Tables("账户管理表").Current.DataRow
        dr("是否内部账号") = True
        dr("所属机构") = e.Form.Controls("所属机构").text
        dr("机构编码") = e.Form.Controls("机构编码").text
        dr("所属部门") = e.Form.Controls("所属部门").text
        dr("部门编码") = e.Form.Controls("部门编码").text
        dr("账户类别") = e.Form.Controls("账户类别").text
        dr("账类编码") = e.Form.Controls("账类编码").text
        e.Form.Controls("账号").text = dr("账号")
        dr("账户名称") = e.Form.Controls("账户名称").text
        dr("余额方向") = e.Form.Controls("余额方向").text
        dr("余额") = e.Form.Controls("余额").text
        dr("开立日期") = e.Form.Controls("开立日期").text
   End If 
ElseIf chk.Value = "否"
    Dim kjmc() As String \'控件名称
    Dim kjmcjh As String = "账户名称,账号,余额方向,余额" \'控件名称集合
    kjmc = kjmcjh.split(",")
    For i As Integer = 0 To kjmc.Length - 1
        If e.Form.Controls(kjmc(i)).text = "" Then
            MessageBox.Show("内容不能为空")
            e.Form.Controls(kjmc(i)).Select()
            Exit For
        End If
    Next
    If  e.Form.controls("账户名称").text And  e.Form.controls("账号").text And e.Form.controls("余额方向").text And e.Form.controls("余额").text <> "" Then
        
        Tables("账户管理表").AddNew()
        Dim dr As DataRow
        dr = Tables("账户管理表").Current.DataRow
        dr("是否内部账号") = False
        
        dr("账户名称") = e.Form.Controls("账户名称").text
        dr("账号") = e.Form.Controls("账号").text
        dr("余额方向") = e.Form.Controls("余额方向").text
        dr("余额") = e.Form.Controls("余额").text
        dr("开立日期") = e.Form.Controls("开立日期").text
    End If
End If

--  作者:mosquito1003
--  发布时间:2013/9/21 9:09:00
--  
修改如下:
 If  e.Form.controls("所属机构").text <> "" And e.Form.controls("机构编码").text <> "" And e.Form.controls("所属部门").text <> "" And e.Form.controls("部门编码").text <> "" And e.Form.controls("账户类别").text <> "" And e.Form.controls("账类编码").text <> "" And e.Form.controls("账户名称").text <> "" And   e.Form.controls("余额方向").text <> "" And e.Form.controls("余额").text <> "" Then
把每个都增加一个<>""或者是<> nothing 就行了.

--  作者:lsy
--  发布时间:2013/9/21 9:21:00
--  
上个例子,就那么难?也许看了例子,代码就那么简单的几行,而不是多到看不过来。
--  作者:ywz801
--  发布时间:2013/9/21 23:48:00
--  

mosquito1003

感谢mosquito1003,问题已解决,只是觉得本人代码太啰嗦,请高人精减。
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:账务管理系统.table


--  作者:lsy
--  发布时间:2013/9/22 9:05:00
--  

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:账务管理系统.table

[此贴子已经被作者于2013-9-22 9:36:40编辑过]

--  作者:ywz801
--  发布时间:2013/9/22 19:11:00
--  
谢谢lsy老师,代码精减了很多,但现在有一个问题,不管控件值是否为空,点击确认就会增加一条记录,不是非空才增加,另外,我想设汁账号只能输 数字字符,余额只能是带小数点的数字,如何解决,请指导!
--  作者:有点甜
--  发布时间:2013/9/22 19:56:00
--  
 如果不管控件值是否为空,都增加一条记录,就删除你为空的判断。

 至于账号和余额的判断,参考下面代码

Dim zh As String = "AAA19908789"
Dim ye As String = "1883"

Dim temp As object
If Integer.TryParse(zh, temp) = False Then
    msgbox("账号只能是数字")
End If

If Double.TryParse(ye, temp) = False OrElse ye.IndexOf(".") = -1 Then
    msgbox("余额只能是小数")
End If

--  作者:ywz801
--  发布时间:2013/9/22 22:04:00
--  
我要的是控件值不为空的情况下才能增加记录,有空值则不增加,请老师指点!