Desde un formulario como buscar registros de otro

Desde un formulario Access que no permite modificar el contenido de los registros, ¿cómo puedo poner un botón de comando que me localice el registro que tengo abierto en otro formulario que sí permite hacer modificaciones?

1 respuesta

Respuesta
1
Dado que dices que el otro formulario lo tienes abierto, puedes utilizar un Recordset para buscar el registro y posicionarte en el. Se supone que tienes un campo que identifica inequívocamente al registro (IdRegistro)
En el evento click del botón de comando
Dim strCriterio As String
strCriterio = "IdRegistro =" & Me!IdRegistro
Dim rst As DAO.Recordset
Set rst = Forms("elotroformulario").RecordsetClone
rst.FindFirst strCriteria
If rst.NoMatch Then
  MsgBox "Curioso... no lo he encontrado."
 Else
  Forms("elotroformulario").Bookmark = rst.BookMark
End If
rst.Close
Set rst = Nothing
Ahora bien, otra alternativa es abrir el otro formulario ya filtrado a ese registro... pero no es lo que tu pedías.
PD: Escrito al vuelo...
Gracias, experto Xavi. Voy a probar si funciona.
El segundo formulario no está abierto. El evento, por tanto, debería de abrir en primer lugar el nuevo formulario. Además, en este momento, no hay ningún IdRegistro (entiendo que se refiere a clave principal), luego el comando debiera de situarse en un campo del formulario para capturar la referencia del expediente (es un campo sin duplicados pero sin indexar) y después abrir el nuevo formulario y posicionarme en el registro que tiene el mismo numero de referencia.
Como verás no tengo mucha idea y no sé siquiera si me he explicado bien.
Gracias
Ups, cierto, cierto; lo leí mal e interpreté que el formulario donde puedes editar ya esta abierto.
En cuanto a lo de IdRegistro, lo puedes sustituir por el nombre que quieras. En realidad me refería a un campo que identificara inequívocamente al registro. Si hubiera hablado de una tabla de personas a lo mejor hubiera utilizado el campo DNI, por ejemplo, puesto que se trata de un campo que, en principio, no debería duplicarse en una tabla de personas.
Dicho esto, yo me decantaría por abrir el formulario filtrado al registro en cuestión.
Para ello debes utilizar el argumento WhereCondition de la acción OpenForm del comando DoCmd para indicar el criterio. Como me supongo que el campo Expediente sera un campo de tipo texto habrá que crear el criterio con las comillas.
Algo así:
DoCmd.OpenForm "ElOtroFormulario", , , "Expediente='" & Me!Expediente & "'"
Me parece que he puesto bien la cantidad de comas. Verifica que la igualdad la pones en el argumento WhereCdt.
Prueba y cuentas.
Xavi
Eres una máquina.
Te cuento lo que he hecho y funciona:
Dim stDocName as String
Dim stLinkCriteria as String
stDocName= "elotroformulario"
stLinkCriteria = [Referencia]=" & " ' " & Me![Referencia] & " ' "
DoCmd.OpenForm stDocName,,, stLinkCriteria
Exit_Comando99999_Click
Exit Sub
Ahora, para redondear la cosa, me gustaría que me dijeras que tengo que poner en esta ristra de ordenes, para que me cierre el formulario.
Gracias de nuevo
Supongo que quieres cerrar el formulario donde no puedes editar...
Pues, una vez abierto el otro formulario (la linea del OpenForm), cierras el actual:
DoCmd. Close acForm, Me. Name

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas