你可以在服务器端程序里启用一个定时器,每隔一段时间对ADODB.RecordSet进行Requery一次,必要时对DataGrid进行Refresh一次或者Rebind一次即可达到目的。

解决方案 »

  1.   

    上面的老兄的意见我赞成,另外还有一个更耗资源的办法。用动态游标,他保证是最新纪录集,否则就只有引用前,adoRecSet.Requery
      

  2.   

    使用事件触发呢?当客户端的程序发出数据信息、修改了SERVER端SQL中的数据的时候,直接对控件进行操作,使控件增加或删除一行
      

  3.   

    楼上,SQL触发器如何自动刷新VB的DATAGRID?
    我孤陋寡闻,不知道触发器有此一用。
    能详细解析吗?
      

  4.   

    定时是个好方法,服务器端游标也是个好方法,  如果 将数据更新和定时refresh datagrid结合,我想也不失是个方法。:)
    也就是说,做个数据更新的过程: 就是在update的时候,你在同步做个refresh,把定时的功能直接做到update事件之后。
    这样,相对与定时和server游标要节省资源一些。
    蠢方法,见笑见笑。
      

  5.   

    你的数据库是sql server 里的我帮你解决这个问题,:)
    '我帮你编的小程序可以监测数据添加
    '比如你的sql server 的表的名字学生档案在学生档案里添加一个触发器
    '把下面内容考入其中你愿意的话可以在这里加入判断身分的语句,如果用户名是"zsy_good" 就抱一个消息,通过VB来捕捉这个错误
    CREATE TRIGGER addstudent ON dbo.学生档案 
    FOR INSERT
    AS
            
    raiserror ('数据正在添加',16,1)
    '在VB里面添加一个command1  
    private Con As New ADODB.Connection    '定义一个数据库连接
    private Rs  As New ADODB.Recordset    '定义一个记录集private sub  opendb (strsql as string )  
      Con.Open "学校管理" '学校管理是我的数据源,你可以改为你的字符串,或数据源
      Rs.Open SqlStr, Con, adOpenKeyset, adLockOptimistic
    end sub Private Sub Command1_Click()
    On Error GoTo insert_err
    OpenDb "insert 学生档案 (姓名) values('路漫漫其修远兮,吾将上下而索')"
    insert_err:
          If InStr(1, Err.Description, "数据正在添加") Then
            '这个用你那个刷新记录的过程来进行刷新
          End If
    End Sub
    '这样可以搞定了吧 
      

  6.   

    一个比较土的办法是向服务端发socket包,hoho