以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教老师for ....Next 代码。。(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5564)

--  作者:菜鸟foxtable
--  发布时间:2009/12/19 22:39:00
--  请教老师for ....Next 代码。。(已解决)
某按钮代码,红色部分到底应该放哪才不会乱新增行?意思是在判断完成后发现信息不全时不会新增行,只有窗口录入信息完全才会新增一行?

Tables("医嘱编辑_Table1").AddNew()

Dim Multi As String = "期效|开始时间|开嘱医生|组号|医嘱内容|用法|频率|单量|总量"
Dim Values() as String
Values = Multi.split("|")
For Index As Integer = 0 To Values.Length - 1
    if e.Form.Controls(Values(Index)).Value = nothing
        MessageBox.Show("对不起,您输入的信息不全,请录入<" & Values(Index) & ">后再继续!", "提示")
        e.Form.Controls(Values(Index)).Select()
        Return
    else
        Tables("医嘱编辑_Table1").Current(Values(Index)) = e.Form.Controls(Values(Index)).Value
    end if
Next
[此贴子已经被作者于2009-12-20 0:13:24编辑过]

--  作者:czy
--  发布时间:2009/12/19 23:09:00
--  
放在Else下面
--  作者:菜鸟foxtable
--  发布时间:2009/12/19 23:25:00
--  
以下是引用czy在2009-12-19 23:09:00的发言:
放在Else下面

图片点击可在新窗口打开查看C版,您再看看清楚。假如前三个控件有内容,则会新增加3行咯。。。。


--  作者:程兴刚
--  发布时间:2009/12/19 23:56:00
--  
放在next下面一行,放在循环外,每次为下次添加新行,数据不全不继续增加!否则,要添加N行,形成阶梯式数据录入。

如果不愿意提前添加行,可以这样,增加一行代码:

Tables("医嘱编辑_Table1").AddNew()
Dim Multi As String = "期效|开始时间|开嘱医生|组号|医嘱内容|用法|频率|单量|总量"
Dim Values() as String
Values = Multi.split("|")
For Index As Integer = 0 To Values.Length - 1
    if e.Form.Controls(Values(Index)).Value = nothing
        Tables("医嘱编辑_Table1").Current.Delete()
        MessageBox.Show("对不起,您输入的信息不全,请录入<" & Values(Index) & ">后再继续!", "提示")
        e.Form.Controls(Values(Index)).Select()
        Return
    else
        Tables("医嘱编辑_Table1").Current(Values(Index)) = e.Form.Controls(Values(Index)).Value
    end if
Next

--  作者:菜鸟foxtable
--  发布时间:2009/12/20 0:06:00
--  
以下是引用程兴刚在2009-12-19 23:56:00的发言:
放在next下面一行,放在循环外,每次为下次添加新行,数据不全不继续增加!否则,要添加N行,形成阶梯式数据录入。

如果不愿意提前添加行,可以这样,增加一行代码:

Tables("医嘱编辑_Table1").AddNew()
Dim Multi As String = "期效|开始时间|开嘱医生|组号|医嘱内容|用法|频率|单量|总量"
Dim Values() as String
Values = Multi.split("|")
For Index As Integer = 0 To Values.Length - 1
    if e.Form.Controls(Values(Index)).Value = nothing
        Tables("医嘱编辑_Table1").Current.Delete()
        MessageBox.Show("对不起,您输入的信息不全,请录入<" & Values(Index) & ">后再继续!", "提示")
        e.Form.Controls(Values(Index)).Select()
        Return
    else
        Tables("医嘱编辑_Table1").Current(Values(Index)) = e.Form.Controls(Values(Index)).Value
    end if
Next

这样子也不行吧?不但把新增的行删除了,还会继续删除前面的行的。。。。

最大的问题是循环了。。。。有别的好办法吗?

[此贴子已经被作者于2009-12-20 0:08:27编辑过]

--  作者:czy
--  发布时间:2009/12/20 0:08:00
--  
Dim Multi As String = "期效|开始时间|开嘱医生|组号|医嘱内容|用法|频率|单量|总量"
Dim Values() as String
Values = Multi.split("|")
For Index As Integer = 0 To Values.Length - 1
    if e.Form.Controls(Values(Index)).Value = nothing
        MessageBox.Show("对不起,您输入的信息不全,请录入<" & Values(Index) & ">后再继续!", "提示")
        e.Form.Controls(Values(Index)).Select()
        Return
    end if
Next
Tables("医嘱编辑_Table1").AddNew()
For Index As Integer = 0 To Values.Length - 1
    Tables("医嘱编辑_Table1").Current(Values(Index)) = e.Form.Controls(Values(Index)).Value
Next

--  作者:菜鸟foxtable
--  发布时间:2009/12/20 0:10:00
--  
图片点击可在新窗口打开查看试试看


谢谢C版,没想到这么简单。。。图片点击可在新窗口打开查看
[此贴子已经被作者于2009-12-20 0:12:25编辑过]

--  作者:程兴刚
--  发布时间:2009/12/20 0:31:00
--  
哈哈,我居然也忘了循环问题!
--  作者:程兴刚
--  发布时间:2009/12/20 0:35:00
--  
其实这样应该也可以:
Tables("医嘱编辑_Table1").AddNew()
Dim Multi As String = "期效|开始时间|开嘱医生|组号|医嘱内容|用法|频率|单量|总量"
Dim Values() as String
Values = Multi.split("|")
For Index As Integer = 0 To Values.Length - 1
    if e.Form.Controls(Values(Index)).Value = nothing
        Tables("医嘱编辑_Table1").Current.Delete()
        MessageBox.Show("对不起,您输入的信息不全,请录入<" & Values(Index) & ">后再继续!", "提示")
        e.Form.Controls(Values(Index)).Select()
        Exit For
        Return
    else
        Tables("医嘱编辑_Table1").Current(Values(Index)) = e.Form.Controls(Values(Index)).Value
    end if
Next

原以为有Return就没有继续了,直接退出循环应该可以。
--  作者:菜鸟foxtable
--  发布时间:2009/12/20 9:08:00
--  
以下是引用程兴刚在2009-12-20 0:35:00的发言:
其实这样应该也可以:
Tables("医嘱编辑_Table1").AddNew()
Dim Multi As String = "期效|开始时间|开嘱医生|组号|医嘱内容|用法|频率|单量|总量"
Dim Values() as String
Values = Multi.split("|")
For Index As Integer = 0 To Values.Length - 1
    if e.Form.Controls(Values(Index)).Value = nothing
        Tables("医嘱编辑_Table1").Current.Delete()
        MessageBox.Show("对不起,您输入的信息不全,请录入<" & Values(Index) & ">后再继续!", "提示")
        e.Form.Controls(Values(Index)).Select()
        Exit For
        Return
    else
        Tables("医嘱编辑_Table1").Current(Values(Index)) = e.Form.Controls(Values(Index)).Value
    end if
Next

原以为有Return就没有继续了,直接退出循环应该可以。

图片点击可在新窗口打开查看又学到一招。