某按钮代码,红色部分到底应该放哪才不会乱新增行?意思是在判断完成后发现信息不全时不会新增行,只有窗口录入信息完全才会新增一行?
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下面
C版,您再看看清楚。假如前三个控件有内容,则会新增加3行咯。。。。
放在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-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编辑过]
试试看
谢谢C版,没想到这么简单。。。
[此贴子已经被作者于2009-12-20 0:12:25编辑过]
其实这样应该也可以:
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就没有继续了,直接退出循环应该可以。
以下是引用程兴刚在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就没有继续了,直接退出循环应该可以。
又学到一招。