** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - buscar registro en un subformulario desde un formu
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradobuscar registro en un subformulario desde un formu

 Responder Responder
Autor
Mensaje
tonijim Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 04/Diciembre/2006
Localización: España
Estado: Sin conexión
Puntos: 8
Enlace directo a este mensaje Tema: buscar registro en un subformulario desde un formu
    Enviado: 27/Noviembre/2015 a las 00:21
estoy intentando por codigo con un comando buscar un registro determinado en un subformulario desde un formulario,y anuque consiguo que el enfoque vaya al subformulario solo obtengo un mensaje que dice: "Microsoft Acces termino la busqueda del refgistro,no se encontro el elemento que se buscaba"
¿Que estoy haciendo mal?
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 27/Noviembre/2015 a las 00:36
Buenas a todos,
busca en "Mis funciones favoritas" que VIMIPAS tiene ejemplos muy esclarecedores con buscadores en subformularios, listas etc.


Suerte
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 27/Noviembre/2015 a las 03:33
¿Por qué no expones lo que has intentado?
Es la forma mas rápida de saber 'por donde van los tiros' y poder aconsejar opciones para que funcione de forma correcta o para proponer alternativas.
Arriba
tonijim Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 04/Diciembre/2006
Localización: España
Estado: Sin conexión
Puntos: 8
Enlace directo a este mensaje Enviado: 27/Noviembre/2015 a las 10:12
Me expilcare:
Tengo un formulario principal llamado "Ubicaciones"y en el tyengo un subformulario llamado "secundario5",en el cual hay un campo numerico llamado "troquel"
Bien , lo que necesito es que desde un control situado en el formulario principal pueda buscar en los registros del campo "troquel"
El codigo que utilizo es el siguiente:

Me.secundario5!troquel.setfocus
DoCmd.RunCommand acCmdFind

el resultado es el comentado anteriormente,osea no busca donde le pido
Gracias de antemano
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: en línea
Puntos: 5374
Enlace directo a este mensaje Enviado: 27/Noviembre/2015 a las 14:14
Hola!

Inténtalo así:

DoCmd.GoToControl "secundario5!troquel"
DoCmd.RunCommand acCmdFind
Un Saludo.
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 27/Noviembre/2015 a las 15:44
La forma correcta de enviar el foco a un objeto de un subformulario consiste en hacerlo en dos pasos

.- Paso uno ==> foco al subformulario (como objeto del principal)
.- Paso dos ==> foco al objeto (si, el objeto del subformulario que es el actual objeto activo con el foco)

Pero hay alternativas a ese método, efectuar la búsqueda en el origen de datos de ese formulario (en su 'RecordsetClone').
Arriba
tonijim Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 04/Diciembre/2006
Localización: España
Estado: Sin conexión
Puntos: 8
Enlace directo a este mensaje Enviado: 30/Noviembre/2015 a las 18:53
hola buena tardes
lo de llevar el foco al subformulario y luego al control ya ñla habia intentado y no he conseguido ningun resultado.
En cuanto a utilizar "recordsetclone" he visto algunos ejemplos en internet y esto es lo que he puesto en el comando buscar al hacer click:

Set rst = Me.Secundario5.Form.RecordsetClone
rst.FindFirst "troquel=" & txttroquel

If rst.NoMatch Then
MsgBox "RECORD NOT FOUND"

Else
Me.Secundario5.Form.Bookmark = rst.Bookmark
End If
    rst.Clone

el resultado es otro error:
error 3077
"error de sintasis (falta Operador) en la expresion"
Mis conocimientos no van mas lejos , ayuda plus



























































Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 30/Noviembre/2015 a las 19:27
Ese tipo de respuesta (por parte de Access) suele provocarla el no indicar adecuadamente el tipo de dato o simplemente no pasarle dato alguno, en cualquiera de los casos es que 'le falta algo' o no tiene el formato adecuado.

Lo primero seria asegurarse de que se están utilizando los nombres reales de los objetos (el 'Clone' utiliza el nombre de los campos de/en la tabla, no los alias que pudieran crearse en el formulario).

Lo segundo seria indicale con veracidad el dato a localizar y su tipo, en lo que has aplicado el supuesto tipo (txttroquel en la expresión) parece ser un numero por la forma de utilizarlo y se tiene que ser consecuente con la 'ubicación espacial' del código.

Lo de 'la ubicación espacial' es con referencia a donde esta ubicado el foco activo, con respecto al cdigo en ejecución, ejemplos aquí utilizados.

Antes:
Se parte de que el código esta en el formulario principal y es en ese punto donde comienza a procesarse, como evento de un objeto ubicado en el formulario principal.
Como el elemento a localizar se ubica en el subformulario, se ha de desplazar el foco al subformulario y en el al objeto que supuestamente tiene el valor a localizar (exigencias de 'acCmdFind', la búsqueda se efectúa en el objeto activo).

Después:
Se utiliza una búsqueda diferente, la cual NO exige que se focalice el objeto como anteriormente, es transparente toda la acción y como el referente a localizar se supone que esta en el principal (que es donde esta el código que se ejecuta) se referencia con 'Me.'
Ademas, sobra la creación de una copia del recordset, el 'Clone' (su nombre lo indica: RecordsetClone)es un objeto recordset, se podrá localizar registros, modificarlos, borrarlos e incluso ... crear nuevos.

Si el valor de/en 'txttroquel' es alfanumérico, lo correcto seria algo asi:

With Me.Secundario5.Form.RecordsetClone
.FindFirst "Troquel ='" & Me.txttroquel & "'"
If Not .NoMatch Then Me.Secundario5.Form.Bookmark = .Bookmark
End With


Si el dato es numérico seria cuestión de verificar que esta en la variable o cuadro de texto 'txttroquel '

No he utilizado mensajes de que no se localiza el dato, porque implica una ventana emergente que hay que cerrar ... etc. lo adecuado seria iniciar la creación de un nuevo registro (en base a ese dato) o acción que no implique reiteraciones que suelen causar tedio (los mensajes son bonitos, pero enlentecen el trabajo, al menos es mi personal punto de vista)

Editado por E. Feijoo - 30/Noviembre/2015 a las 19:27
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: en línea
Puntos: 5374
Enlace directo a este mensaje Enviado: 30/Noviembre/2015 a las 19:45
Hola!

Lo de llevar el foco al subformulario y posteriormente al control con lo que te puse se consigue sin problema, tan solo que el control que tienes dentro del subformulario ha de ser el primero en la tabulación y con esto se consigue mandar el foco al subformulario y al control a la vez.


Edito: Es mucho mejor conseguir lo que te propone el maestro E.Feijoo!!

Editado por mounir - 30/Noviembre/2015 a las 19:51
Un Saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable