Eso sucede por que la grilla posiblemente no esté abriendo la tabla diréctamente sino que usas opción SQL u otro modo; entonces al moverte dentro de la grilla el cursor no se mueve en la tabla... para que eso sucede debería verse algo así la propiedad de la grilla...
Sin embargo de otro modo de hacerlo podría ser con el comando LOCATE o SEEK que se mueva a la posición del registro seleccionado, y luego lees el reporte:
Prueba lo siguiente:
Usando SEEK
Supongamos que tienes un INDEX sobre el campo socio y que el indice también se llama Socio.
** Primero debes leer el dato que necesitas buscar diréctamente de la grilla.
** No lo copies literal ya que es ejemplo debido a que no se como definiste
** los nombres tanto de grilla como de columnas...
m.cSocio = thisform.grid1.column1.text1.value && esto te leerá el numero de socio.
Select Planilla
Set order to Socio
Seek m.cSocio
If found()
**Aqui va el comando REPORT FORM... tal y como te envié el último ejemplo
Endif
Usando LOCATE
** Primero debes leer el dato que necesitas buscar diréctamente de la grilla.
** No lo copies literal ya que es ejemplo debido a que no se como definiste
** los nombres tanto de grilla como de columnas...
m.cSocio = thisform.grid1.column1.text1.value && esto te leerá el numero de socio.
Select Planilla
Locate for m.cSocio=Planilla.Socio
If found()
**Aqui va el comando REPORT FORM... tal y como te envié el último ejemplo
Endif
Esto podrías ponerlo al inicio del método clic de los botones de crear Reporte...
Lo que haría cualquiera de los 2 es primero buscar dentro de la tabla planilla el dato buscado y se posiciona en la tabla Planilla sobre el registro correspondiente y luego haces el reporte.
Si en cambio decides cambiar la propiedad RecordSourceType de la grilla el sistema solo se posaría sobre el dato correspondiente cuando haces clic en la grilla.
Por otro lado, si no vas a hacer cambios en los datos usando la grilla, cambia la propiedad de la misma grilla AllowCellSelection=.F.