窗体上放两个Adodc控件,怎么让Adodc2的当前记录跟Adodc1的当前记录同步?
其中DataGrid1是绑定Adodc1的,
也就是说改变DataGrid1的行会改变Adodc1的当前记录和Adodc2的当前记录??

解决方案 »

  1.   

    Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    在这个事件中定位另一个AODDC的记录集的位置
    推荐不用Adodc控件
      

  2.   

    不太懂你的意思,是否想这样:窗体上放置两个DataGrid控件、两个Adodc控件、一个CommandButton控件,初始时候DataGrid1显示mTable1,当按下CommandButton的时候,把Adodc1的Recordset赋值Adodc2的Recordset,并显示在DataGrid2上。Private Sub Command1_Click()    Set Adodc2.Recordset = Adodc1.Recordset
        Set DataGrid2.DataSource = Adodc2
        
    End SubPrivate Sub Form_Load()    Adodc1.Visible = False
        Adodc2.Visible = False
        
        Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
        Adodc1.CursorLocation = adUseClient
        Adodc1.LockType = adLockOptimistic
        Adodc1.CursorType = adOpenKeyset    Adodc1.RecordSource = "Select * From mTable1"
        Set DataGrid1.DataSource = Adodc1
        
    End Sub
      

  3.   

    现在整个工程都用了Adodc控件了,要改变可能帮点难度
    Adodc1_MoveComplete好像先于Form_Load事件吧?这样也不行
      

  4.   

    Adodc控件不是有事件的吗?
    就是在MoveComplete事件中写代码同步啊
      

  5.   

    1、 Form_Load 处理 在Adodc1_MoveComplete之前
    2、可以在MoveComplete中做些判断标志,决定同步与否,在开始装载窗体的时候是要会引发事件的
      

  6.   

    是我的点DataGrid的一条记录,那么Adodc1和Adodc2同时指向那条记录
    现在由于 我的DataGrid绑定的是Adodc1控件 ,
    所以改变DataGrid的行只能改变Adodc1的记录。
    我是想怎么让Adodc2跟Adodc1同步,谢谢
      

  7.   

    Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
     
     Adodc2.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePositionEnd Sub部是说对象变量With块没设置
    可能是还没有加载Adodc2控件的原因吧
    但我在Form_load里面已经设置了代码了
    Private Sub Form_Load()
     Adodc1.RecordSource = "select 部门编号 as 编号,部门名称 as 部门 from 部门信息"
     Adodc1.Refresh
     Adodc1.ConnectionString = Conn
     Adodc1.CommandType = adCmdText Adodc2.ConnectionString = Conn
     Adodc2.CommandType = adCmdText
     Adodc2.RecordSource = "select * from 部门信息"
     Adodc2.RefreshEnd Sub
      

  8.   

    把: Adodc2.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePosition 改成:If Not Adodc2.Recordset Is Nothing Then Adodc2.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePosition
      

  9.   

    Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
     
    If Not Adodc2.Recordset Is Nothing Then Adodc2.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePositionEnd Sub为什么我在datagrid1表格里要点两下才会改变Adodc2的指针?
      

  10.   

    /*
    为什么我在datagrid1表格里要点两下才会改变Adodc2的指针?
    */
    不太理解楼主的意图?
      

  11.   

    就是一般datagrid表格换行时,对应的数据库指针会改变
    我的datagrid表是绑定到Adodc1的,现在只是Adodc1的指针改变了,怎么让Adodc2的指针同时改变指向同一条记录??
      

  12.   

    可以啊,这段是我用来测试过的,能实现你想要的效果。Private Sub Form_Load()    Adodc1.Visible = False
        Adodc2.Visible = False
        
        Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
        Adodc1.CursorLocation = adUseClient
        Adodc1.LockType = adLockOptimistic
        Adodc1.CursorType = adOpenKeyset    Adodc1.RecordSource = "Select mFieldA From mTable"
        Set DataGrid1.DataSource = Adodc1
        
        Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
        Adodc2.CursorLocation = adUseClient
        Adodc2.LockType = adLockOptimistic
        Adodc2.CursorType = adOpenKeyset
        
        Adodc2.RecordSource = "Select mFieldB,mFieldC,mFieldD,mFieldE From mTable"
        Set DataGrid2.DataSource = Adodc2
        
    End SubPrivate Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)    If Not Adodc2.Recordset Is Nothing Then Adodc2.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePosition
        
    End Sub