代码如下:
Public conn As ADODB.Connection
Public Function dbc()
Set conn = New Connection
conn.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\data.mdb;"
conn.CursorLocation = adUseClient
End FunctionPrivate Sub Form_Load()
Call dbc
Dim rs As ADODB.Recordset
Set rs = New Recordset
Dim sql As String
sql = "select * from province"
rs.Open sql, conn, adOpenKeyset, adLockOptimistic, adCmdText
Set DataGrid1.DataSource = rs
End SubPrivate Sub DataGrid1_Click()
DataGrid1.SetFocus
Text1.Text = DataGrid1.Columns(1)
Text2.Text = DataGrid1.Columns(0)
Text3.Text = DataGrid1.Columns(2)
Text4.Text = DataGrid1.Columns(3)
End Sub为什么要点二次才能读出正确的值???请问高手怎么点一次就OK??顺便问一下:
Set DataGrid1.DataSource = rs如果我想将这里的rs转到文本中怎么写?
me.text=cstr(rs) ???(这样不行)请高手解答一下。本人刚学很多不懂!谢谢!

解决方案 »

  1.   

    把 DataGrid1_Click()的代码写在 DataGrid1_DBClick()里
      

  2.   

    如果我想将这里的rs转到文本中怎么写?
    me.text1.Text=cstr(rs(0)) 或 me.text1.Text=cstr(rs("某个字段名"))
      

  3.   

    回复人 faysky2()
    me.text1.Text=cstr(rs(0))  或  me.text1.Text=cstr(rs(  "某个字段名  "))  
    我的意思是
    Set  DataGrid1.DataSource  =  rs 
    这里的ddbgrid与rs是绑定的。
    我用me.text1.text=??(rs)的目的是想看一下这个rs的字符串内容是什么?把  DataGrid1_Click()的代码写在  DataGrid1_DBClick()里试过,如果焦点开始是dbgrid的么一行的话。要选其它行的话要点三次。第一次可能是给这个行获得焦点(我刚学我猜想的)以后二次才能传递值。。不知道是不是这样的。
      

  4.   

    目的是想看一下这个rs的字符串内容是什么?
    ------------------------------------
    rs不是一个字符串,它是一个记录集对象,它包含的内容就是显示在DataGrid的内容用rs(0),rs(1),rs(2)......可以获得当前记录的各个字段值要选其它行的话要点三次。第一次可能是给这个行获得焦点(我刚学我猜想的)以后二次才能传递值。。
    ----------------------------------------------------------
    可以用下面的方法解决,代码还是写在DataGrid1_Click()里,在DataGrid1_RowColChange()里调用一下DataGrid1_Click就好了
    Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        DataGrid1_Click
    End Sub