我将DataGrid与ADO.Recordset绑定后(不用ADODC控件),同时也让两个文本框显示ADO.Recordset的当前记录值:
T1.Text=Rd.Fields(0)
T2.Text=Rd.Fields(1)
现在只有在单击DataGrid左边有个黑色箭头的地方,文本框里的数据才能和DataGrid里的数据对应。当单击DataGrid里的数据所在的方格时,文本框里的数据比DataGrid里的数据慢一步.也就是这次文本框里数据是你上次点击DataGrid的那行数据。这一小段代码能够运行,各位可以拷贝过去只要改一下数据连接就行了.看能不能帮我解决这个问题。
Dim Cn As ADODB.Connection
Dim Rd As ADODB.Recordset
Dim sqlstr As StringPrivate Sub Form_Load()
Set Cn = New ADODB.Connection
Cn.ConnectionString = "provider=sqloledb;server=user01;uid=sa;database=test"
Cn.Open
Set Rd = New ADODB.Recordset
Rd.CursorLocation = adUseClient
Rd.LockType = adLockOptimistic
sqlstr = "select * from table"
Rd.Open sqlstr, Cn
Set DataGrid1.DataSource = Rd
ViewRd
End SubPrivate Sub DataGrid1Click()
ViewRd
End SubSub ViewRd()
'没有考虑 EOF和BOF的情况,各位不用考虑这个问题
T1.Text = Rd.Fields(1)
T2.Text = Rd.Fields(2)
End Sub

解决方案 »

  1.   

    错了一小点:
    Private Sub DataGrid1_Click()
    ViewRd
    End Sub
      

  2.   

    你可以用DataGrid的click事件来判断移动到哪一条记录上了
      

  3.   

    Private Sub grdDataGrid_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
    With grdDataGrid
     If .Col < 3 Then
      Text1.Text = .Columns(0).Value
     End If
    End With
    End Sub
    写在上面的事件中
      

  4.   

    Private Sub grdDataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
    ViewRd
    End Sub