在使用非绑定的DBGRID时,系统总把最后行数据清除,不能得到更新
编号:QA003798
建立日期: 2001年1月18日 最后修改日期:2001年1月18日
所属类别:
ydb:
操作系统:microsoft
编程工具:Visual Basic
问题:在使用非绑定的DBGRID时,设定属性为不允许新添加。这时,设定行为11,当输入列表数据到第11行时,触发刷新表中数据,系统总把第11行数据清除,不能得到更新,请问如何解决此问题?
水平: 中级
回答:
我的关于非绑定DBGrid的问题已经设法找到解决办法。解决办法如下:
在程序中加入代码判断当Bookmark为0时,修改行是第一行还是最后一行,用Boolean型变量Lastrow表示。根据判断的结果决定把输入值赋给数组的相应单元。具体要在各个事件程序中加的代码如下:
在窗体的声明部分加入以下代码:
Private Lastrow As Boolean ′定义判断是否为最后一行的参数
Private mTotalRows& ′定义DBGird1的最大行数
在DBGrid1的AfterColEdit事件过程中加入以下代码:
If Lastrow Then
DBGrid1.Refresh ′刷新DBGrid1
DBGrid1.Scroll 0, DBGrid1.VisibleRows ′重新滚到能看到最后一行
Lastrow = False ′因为光标已经移到别处,所以把Lastrow设为False
End If
在DBGrid1的Change事件过程中加入以下代码:
Dim i As Integer, j As Integer
i = DBGrid1.Col ′列号
j = DBGrid1.Row ′行号
If DBGrid1.Bookmark = 0 Then
If j > 0 Then ′如果Bookmark为0而且行号大于0,一定是最后一行
Userdata(i, mTotalRows& - 1) = DBGrid1.Text ′把输入值赋给最后一行的相应列
Lastrow = True
Else ′如果不是最后一行
UserData(i, DBGrid1.Bookmark) = DBGrid1.Text ′把输入值赋给第一行的相应列
End If
Else ′如果Bookmark不等于0
UserData(i, DBGrid1.Bookmark) = DBGrid1.Text ′把输入值赋给数组的对应的元素
End If
此问题由ydb回答。
| |
|
|
| |
|
|