奇怪的现象:使用CommonDialog控件后,用Msgbox居然要判断2次?----请大家试试看。

yongchen 2007-10-24 04:12:32
我试过不执行CommonDialog控件的showOpen方法,就正确。但只要执行过一次CommonDialog控件的showOpen方法后,以后都不正确,即msgbox要回答2次,程序部分原码如下:
Private Function CheckData() As Boolean
'检查数据的合法性
Dim rst As ADODB.Recordset
Dim msgt As String
CommonDialog1.Filter = "Microsoft Excel(*.xls)|*.xl*"
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.ShowOpen

msgt = ""
If Len(Text1.Text) < 6 Then
msgt = "年月位数应为6位数,如200105!"
Else
If SubStr(Text1.Text, 5, 2) < "01" Or SubStr(Text1.Text, 5, 2) > "12" Then
msgt = " 月份应为01--12月!"
Else
If Text1.Text <= "199101" Or Text1.Text >= "204912" Then
msgt = " 年月超出范围199101--204912!"
End If
End If
End If
If Not msgt = "" Then
MsgBox (msgt) '本语句执行结果要显示2次
Text1.SetFocus
CheckData = False
Exit Function
End If

End Function
请高手指教,谢谢!
...全文
61 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
deallylau 2007-10-30
  • 打赏
  • 举报
回复
Call CheckData
If Not CheckData Then Exit Sub
这个就是调用了2次!!
deallylau 2007-10-30
  • 打赏
  • 举报
回复
Call CheckData
If Not CheckData Then Exit Sub
这个就是调用了2次!!
deallylau 2007-10-30
  • 打赏
  • 举报
回复
Call CheckData
If Not CheckData Then Exit Sub
这个就是调用了2次!!
deallylau 2007-10-30
  • 打赏
  • 举报
回复
Call CheckData
If Not CheckData Then Exit Sub
这个就是调用了2次!!
yongchen 2007-10-24
  • 打赏
  • 举报
回复
不是执行了两次,我把所有代码发给你看一下吧
Option Explicit
Dim rs As ADODB.Recordset
Dim SQL As String
Dim msg As String
Dim Index As Integer
Dim Flag As String
Dim YearMonth As String '导入数据年月变量
Private Sub Text1_KeyPress(KeyAscii As Integer)
'让文本框只能输入数据
If Not (KeyAscii >= vbKey0 And KeyAscii <= vbKey9 Or KeyAscii = vbKeyDelete Or KeyAscii = vbKeyBack) Then
KeyAscii = 0
End If
End Sub

Private Function CheckData() As Boolean
'检查数据的合法性
Dim rst As ADODB.Recordset
Dim msgt As String
msgt = ""
If Len(Text1.Text) < 6 Then
msgt = "年月位数应为6位数,如200105!"
Else
If SubStr(Text1.Text, 5, 2) < "01" Or SubStr(Text1.Text, 5, 2) > "12" Then
msgt = " 月份应为01--12月!"
Else
If Text1.Text <= "199101" Or Text1.Text >= "204912" Then
msgt = " 年月超出范围199101--204912!"
End If
End If
End If
If Not msgt = "" Then
MsgBox (msgt)
Text1.SetFocus
CheckData = False
Exit Function
End If

'检查唯一性
SQL = " select * from 产能原始表 where 年月=" & Text1.Text
Set rst = SelectSQL(SQL, msg)

If rst.RecordCount > 0 Then
MsgBox ("该年月的信息已经存在,重复添加!")
rst.Close
CheckData = False
Exit Function
End If
CheckData = True '合法
End Function

Private Sub CmdExit_Click()
产能分析数据录入.Enabled = True
Unload Me
End Sub

Private Sub CmdInput_Click()
Call CheckData
If Not CheckData Then Exit Sub
CommonDialog1.Filter = "Microsoft Excel(*.xls)|*.xl*"
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.ShowOpen

End Sub

Private Sub Form_Load()
YearMonth = Trim(Str(Month(Now)))
If Len(YearMonth) < 2 Then YearMonth = "0" & YearMonth
YearMonth = Year(Now) & YearMonth
Text1.Text = YearMonth
End Sub

Private Sub Form_Unload(Cancel As Integer)
产能分析数据录入.Enabled = True
Unload Me
End Sub
of123 2007-10-24
  • 打赏
  • 举报
回复
应该是函数被调用了两次。你是在什么事件中调用该函数?你的 CommonDialog1.ShowOpen 与 msgt 有什么关系?

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧