Pues a mi funciono pero lo hago con ADO crea una forma y coloca 2 textbox y el datagird(no modifiques nada en el grid) y pon esto
Dim rstemp As New ADODB.Recordset
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim sentencia as String
Private Sub DataGrid1_KeyUP(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
Text1(0).Text = DataGrid1.Columns(1)
Text1(1).Text = DataGrid1.Columns(2)
End If
End Sub
Private Sub Form_Load()
cn.Open "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=127.0.0.1:C:\INTERBASE\DB.gdb;"
Set rstemp = Nothing
Set rstemp = New ADODB.Recordset
'Solo agrego 3 campos ya tu modificalo para los que ocupes
rstemp.Fields.Append "clave", adSingle
rstemp.Fields.Append "Nombre", adChar, 100
rstemp.Fields.Append "Domicilio", adChar, 100
rstemp.Open
Set DataGrid1.DataSource = rstemp
DataGrid1.Columns(0).Width = 1000
DataGrid1.Columns(0).Locked = False
DataGrid1.Columns(1).Locked = False
DataGrid1.Columns(2).Locked = False
DataGrid1.Columns(1).Width = 5000
DataGrid1.Columns(2).Width = 5000
sentencia = "SELECT idcliente,nomcliente,domcliente from cliente where idcliente>0" 'La modificas
Set rs = cn.Execute(sentencia)
'Modifica de acuerdo a los campos de tu consulta
Do Until rs.EOF
rstemp.AddNew
If IsNull(rs(0)) Then
rstemp(0) = ""
Else
rstemp(0) = rs(0)
End If
If IsNull(rs(1)) Then
rstemp(1) = ""
Else
rstemp(1) = rs(1)
End If
If IsNull(rs(2)) Then
rstemp(2) = ""
Else
rstemp(2) = rs(2)
End If
rstemp.Update
rs.MoveNext
Loop
Text1(0).Text = DataGrid1.Columns(1)
Text1(1).Text = DataGrid1.Columns(2)
End Sub
Private Sub Form_Unload(Cancel As Integer)
cn.Close
End Sub
Espero que me entiendas Saludos