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
代码如下:应该都没问题,我退出时 检测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
'退出按钮
Private Sub cmdexit_Click()
Unload Me
Call TESTDATA '我是调用的检测代码,应该不影响啊!
End Sub
写反了。
应该写成。'退出按钮
Private Sub cmdexit_Click()
Call TESTDATA '我是调用的检测代码,应该不影响啊!
Unload Me
End Sub
我先通过修改进入编辑状态,之后增行,然后退出。又报错 下标越界,可这次我没有先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
Case vbNo
Unload Me
Exit Sub'就是增加这句
Case vbCancel
Exit Sub
因为 我是点击修改后,进入编辑状态了,增加了一行后(尚未保存到数据库),因此直接退出“退出时的数据检测部分”子程序判断“For i = 1 To flex1.Rows - 1” 的 flex1.Rows 应为已+1的值,可实际测试得到的却是没+1的值。
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