收录日期:2018/08/15 02:07:08 时间:2016/05/22 08:22:26 标签:VB基础类
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset

Private Sub DataGrid1_Click()
Text1.Text = rs!员工编号
End Sub

Private Sub Form_Load()
Set conn = New ADODB.Connection
With conn
    .Provider = "MSDASQL"
    .ConnectionString = "DSN=TS;"
    .Open
End With
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
SQL = "select UserID as 员工编号 from PersonInformation"
rs.Open Trim(SQL), conn, adOpenKeyset, adLockOptimistic

Set DataGrid1.DataSource = rs
End Sub


运行后当我点击datagrid边缘三角时text1中的数据就会变成我所点击行的记录

但当我不点击边缘三角,而点击行里面的内容时,text1中的数据不会显示所点记录的值
需要再次点击才能显示,为什么?有什么办法吗?

程序运行的图片 http://sxhv998.y365.com/1.jpg
http://sxhv998.y365.com/2.jpg
http://sxhv998.y365.com/3.jpg
http://sxhv998.y365.com/4.jpg
http://sxhv998.y365.com/5.jpg
源代码 http://sxhv998.y365.com/DataGrid.jar
Private Sub DataGrid1_Click()
rs.bookmark=datagrid1.bookmark
Text1.Text = rs!员工编号
End Sub

其实是定义为双击事件更有效
方法1:DataGrid1.RecordSelectors = False去掉三角
方法2:去掉DataGrid1的Click事件将你的代码移动到DataGrid1的RowColChange事件中
方法3:去掉DataGrid1的Click事件,在Set DataGrid1.DataSource = rs后加入一下代码
       Set Text1.DataSource = rs
       Text1.DataField = "员工编号"
       Text1.Locked = True
改用mousedown或mouseup事件
Click事件会被单元格抢先吸收。