TextBox + MsHFlexGrid录入数据退出时无法检测新增尚未保存数据。

feicui999 2009-08-01 12:52:09
TextBox + MsHFlexGrid录入数据退出时无法检测新增尚未保存数据。
代码如下:应该都没问题,我退出时 检测flex1.Rows总为已保存记录数,无法获得新增行后的记录数,而我在增行事件中检测flex1.Rows总记录数的确是每增加一行flex1.Rows就加1.不知道数据传输错在哪里。

请高手帮我分析下,谢谢了!
如我已存数据条目为5条。


'行增加按钮
Private Sub addline_Click()
i = 1
flex1.AddItem i
flex1.Refresh
Call SetRowColor(flex1)
flex1.Row = flex1.Row + 1
flex1.Col = 3
MsgBox "增行代码" & flex1.Rows 这里总是能正确+1
End Sub

'退出时的数据检测部分。
Sub TESTDATA()
MsgBox "进入TESTDATE阶段" & flex1.Rows 这里却永远只能检测到6条数据。
For i = 1 To flex1.Rows - 1
MsgBox i
If flex1.TextMatrix(i, 1) = "" And flex1.TextMatrix(i, 2) = "" Then
MsgBox "1-2都为空。" & i
Select Case MsgBox("数据已修改,是否保存", vbQuestion + vbYesNoCancel, "提示信息")
Case vbYes
add_wxd.saveline = True
Case vbNo
Unload Me
Case vbCancel
End Select
End If
Next i
End Sub

'退出按钮
Private Sub cmdexit_Click()
Unload Me
Call TESTDATA '我是调用的检测代码,应该不影响啊!
End Sub
...全文
59 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feicui999 2009-08-01
  • 打赏
  • 举报
回复
还是不成,问题还是有,我估计问题出现在这里。

'退出时的数据检测部分
Case vbCancel
Exit Sub

因为 我是点击修改后,进入编辑状态了,增加了一行后(尚未保存到数据库),因此直接退出“退出时的数据检测部分”子程序判断“For i = 1 To flex1.Rows - 1” 的 flex1.Rows 应为已+1的值,可实际测试得到的却是没+1的值。
SYSSZ 2009-08-01
  • 打赏
  • 举报
回复
改为
 Case vbNo
Unload Me
Exit Sub'就是增加这句
feicui999 2009-08-01
  • 打赏
  • 举报
回复
楼上大哥,小弟发现新问题。代码如下:请指教。
我先通过修改进入编辑状态,之后增行,然后退出。又报错 下标越界,可这次我没有先Unload Me啊!怎么回事,我检测半天了。谢了。


'退出时的数据检测部分。
Sub TESTDATA()
'MsgBox "进入TESTDATE阶段" & flex1.Rows
For i = 1 To flex1.Rows - 1
' MsgBox i
If flex1.TextMatrix(i, 1) = "" And flex1.TextMatrix(i, 2) = "" Then 下标越界
' MsgBox "1-2都为空。" & i
Select Case MsgBox("数据已修改,是否保存", vbQuestion + vbYesNoCancel, "提示信息")
Case vbYes
add_wxd.saveline = True
Case vbNo
Unload Me
Case vbCancel
Exit Sub
End Select
Else
Unload Me
End If
Next i
End Sub

'退出按钮
Private Sub cmdexit_Click()

If cmdSAVE.Enabled = True Then
' MsgBox flex1.Rows
Call TESTDATA
Else
Unload Me
End If
End Sub

'行增加按钮
Private Sub addline_Click()
i = 1
flex1.AddItem i
flex1.Refresh
Call SetRowColor(flex1)
flex1.Row = flex1.Row + 1
flex1.Col = 3
'MsgBox "增行代码" & flex1.Rows
End Sub
孤独剑_LPZ 2009-08-01
  • 打赏
  • 举报
回复
初学者容易犯这种错误,解决了就好,支持一下
feicui999 2009-08-01
  • 打赏
  • 举报
回复
不劳烦大家了。小弟找到答案了。
'退出按钮
Private Sub cmdexit_Click()
Unload Me
Call TESTDATA '我是调用的检测代码,应该不影响啊!
End Sub
写反了。
应该写成。

'退出按钮
Private Sub cmdexit_Click()
Call TESTDATA '我是调用的检测代码,应该不影响啊!
Unload Me
End Sub
feicui999 2009-08-01
  • 打赏
  • 举报
回复
经小弟逐行检测发现是有问题。哈哈!总是自问自答!
1、保存关闭 直接退出

2、保存开启 检测有数据改动
是 保存
否 退出
取消 无
3、保存开启 检测无数据改动
直接退出
逻辑顺序刚错了。已经修改过来。谢了各位!

Else
Unload Me
End If
Next i
End Sub

应改为:
End Select
End If
Next i
'MsgBox "flex1.TextMatrix(i, 1) <> "" And flex1.TextMatrix(i, 2) <> "" "
Unload Me
End Sub

1,453

社区成员

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

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