热情软件屋

 

在使用非绑定的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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio