activar registro desde formulario |
Responder |
Autor | |
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Tema: activar registro desde formulario Enviado: 22/Noviembre/2020 a las 07:40 |
A ver si me podéis ayudar con esta,
tengo un formulario cultivos con 2 campos idcultivo y cultivo este formulario tiene botones para agregar y modificar registros, en este formulario tengo un subformulario con todos los cultivos, mi pregunta ¿como puedo seleccionar un registro en el subformulario y me cambie el que tengo activo en el formulario?, por ejemplo para modificarlo. gracias.
|
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 22/Noviembre/2020 a las 23:13 |
Si no quieres complicarte mucho, usando un formulario dividido eso es automático No lo he probado, pero otra opción es colocar en el evento "Al activar registro" del subformulario algo como Me.Parent.Bookmark = Me.Bookmark Si eso no funciona, (ya que creo que los Bookmark debían crearse en base al mismo recodset en el que uno se quiere desplazar) En ese caso deberás crear un Recordsetclone del formulario principal, buscar el registro que tengas en el subformulario y luego igualar el Bookmark del formulario principal con el del recordset |
|
El saber no ocupa lugar, sólo tiempo
|
|
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Enviado: 23/Noviembre/2020 a las 14:36 |
he probado con esto pero no funciona, donde puede estar el error. Private Sub Form_Current() Dim rs As Object Set rs = Forms![forcultivos].Recordset.Clone, rs.FindFirst "[idcultivo] = '" & Me.idcultivo & "'" Me.Bookmark = rs.Bookmark End Sub gracias
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 23/Noviembre/2020 a las 17:47 |
En que te has dejado el Parent
|
|
Parche
Habitual Unido: 03/Julio/2018 Localización: Alicante Estado: Sin conexión Puntos: 170 |
Enviado: 23/Noviembre/2020 a las 17:49 |
Buenas tardes:
A vote pronto: - Parent - quitar coma final en la primera línea y frmCultivos supongo que será. Saludos.
|
|
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Enviado: 23/Noviembre/2020 a las 20:30 |
Con esto me funciona, como lo veis.
Private Sub Form_Current() Dim rs As Recordset Set rs = Forms!forcultivos.RecordsetClone rs.FindFirst "[idcultivo] = '" & Me.idcultivo & "'" Forms!forcultivos.Bookmark = rs.Bookmark End Sub Gracias.
|
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 23/Noviembre/2020 a las 20:37 |
Yo veo varias cosas. 1. Probaste simplemente aquello de Me.Parent.Bookmark = Me.Bookmark ? No te funciono? Sobre tu código: 1. No sé si .Recordset.Clone es lo mismo que .RecodSetClone, prueba a cambiarlo por si acaso 2. Si usas .FindFirst , yo usaría también .NoMatch, no sea que la búsqueda no comience desde el principio del recordset, o en su defecto, antes del .FindFirst, pondría un rs.MoveFirst 2. Si [IdCultivo] es un campo autonumérico (o numérico) te sobrarían los apostrofes rs.FindFirst "[idcultivo] = " & Me.idcultivo (Si es un campo de texto está bien ) 3. Como dice xavi, te comiste el Parent: Me.Parent.Bookmark = rs.Bookmark prueba y nos cuentas |
|
El saber no ocupa lugar, sólo tiempo
|
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 23/Noviembre/2020 a las 20:40 |
Funciona porque accedes al Bookmark del formulario principal directamente sin usar la propiedad .Parent del subformulario En realidad es lo mismo, pero de modo más directo ;)
Editado por Dabellaso - 23/Noviembre/2020 a las 20:40 |
|
El saber no ocupa lugar, sólo tiempo
|
|
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Enviado: 23/Noviembre/2020 a las 21:48 |
1. probado Me.Parent.Bookmark = Me.Bookmark funciona también.
2. .NoMatchn y rs.MoveFirst no me funciona 3. idcultivo es texto el problema viene ahora tengo un cuadro búsqueda en el formulario principal que filtra los datos del subformulario con el siguiente código; Private Sub txtbuscar_Change() Dim sql As String sql = "select * from cultivos where cultivo like'*" & Me.txtbuscar.Text & "*'order by cultivo" Me.forsubcultivos2.Form.RecordSource = sql End Sub crea conflicto, el cuadro búsqueda no funciona correctamente. el formulario principal es forcultivos y el subformulario forsubcultivos2. |
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 24/Noviembre/2020 a las 20:04 |
Realmente no estas filtrando el subformulario, le estas cambiando el origen de datos por otro Despues de hacer eso, no creo que te sigua funcionando aquello de Forms!forcultivos.Bookmark = rs.Bookmark cuando dices que el cuadro de búsqueda crea conflicto, que no funciona, a que te refieres? No filtra, filtra mal, da error...? o después de haber "filtrado", en el formulario principal no se muestra el registro de subformulario? ayúdame a ayudarte |
|
El saber no ocupa lugar, sólo tiempo
|
|
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Enviado: 26/Noviembre/2020 a las 19:51 |
Ante todo perdonar por mi ignorancia en el tema de base de datos, a lo mejor me meto en cosa mas complicada de las que debo.
Dicho esto, el seleccionar registro sí me funciona incluso con los datos filtrados, lo que no va bien es el cuadro de búsqueda que hay veces que me deja escribir varios caracteres y otra veces solo uno, pero filtrar sí filtra. muchas gracias
|
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 26/Noviembre/2020 a las 20:11 |
No te disculpes por no saber algo, para aprender hay que preguntar Puedes poner el cogido que tienes para cuando filtras? Filtras tras cada letra puesta en el textbox? o esperas a escribir todo y luego pulsas intro o un botón? Se me ocurre que quizás, después de cada letra a buscar, el formulario se actualiza y se borra el contenido que había en el textbox., Pero vendría bien tener más información No lo he comprobado, quizás al desplazarte a otro registro con aquello del bookmark se actualice el formu y pierdas lo escrito, Funcionaba bien antes de sincronizar el formulario principal con el subformulario?
Editado por Dabellaso - 26/Noviembre/2020 a las 20:13 |
|
El saber no ocupa lugar, sólo tiempo
|
|
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Enviado: 26/Noviembre/2020 a las 20:43 |
Efectivamente llevas razón he probado el código este;
Private Sub txtbuscar_Click() Dim sql As String sql = "select * from cultivos where cultivo like'*" & Me.txtbuscar.Text & "*'order by cultivo" Me.forsubcultivos.Form.RecordSource = sql End Sub que es el mismo pero en vez de al cambiar en el cuadro texto, que me va buscando según voy escribiendo, por hacer click en el cuadro texto después de escribir la palabra que quiero buscar, aunque lo suyo seria de ir buscando según voy escribiendo, pero si hay mas remedio me tendré que adaptar. otra cosa que estoy probando es este código de un modulo que tengo pero me dice que no encuentra el formulario forsubcultivos2. Private Sub txtbuscar_Change() Forms!forsubcultivos2![cultivo].RowSource = "Select IDCultivo, cultivo From concultivos Where cultivo Like '*" & sintildes.Buscaacent(txtbuscar.Text) & "*' ORDER BY cultivo;" End Sub gracias.
|
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 26/Noviembre/2020 a las 21:17 |
El problema lo tendrás siempre que el formulario principal se actualice, de igual el modo de hacerlo. Usa cosa es filtrar un subformulario, y otra es filtrar un subformulario, y el propio formulario desde donde escribes la búsqueda. Se te va a complicar una barbaridad, pero puedes inventar un modo para: 1.- Escribir la primera letra y guardarla en una variable publica, o una Static 2.- Justo después de que el formulario principal se actualice, recuperar el texto que tenias y volver a colocarlo en el TextBox de búsqueda 3.-Situar el cursor en la ultima posición del TextBox 4.- ahora estarás listo para filtrar con una nueva letra manteniendo la anterior 5.- Cuando la búsqueda termine (Habitualmente al salir del TextBox , borrar el contenido de la variable para que la siguiente búsqueda no use el texto almacenado de la búsqueda anterior Por otro lado .RowSource es propio de combobox y controles de listBox, no es válido para formularios. si logras encontrar el formulario que accces te dice no encontrar, te generará otro error. Es mas fácil usar el intellisense. Forms.("TuFormulario).LaPropiedad = El valor Forms.("TuFormulario).Controls("TuControl").LaPropiedad = El valor Forms.("TuFormulario).Controls("TuCONTROLSUBFORMULARIO").FORM.LaPropiedadDELSUBFORMULARIO = El valor Editado por Dabellaso - 26/Noviembre/2020 a las 21:26 |
|
El saber no ocupa lugar, sólo tiempo
|
|
simpatico3333
Habitual Unido: 26/Abril/2008 Localización: españa Estado: Sin conexión Puntos: 120 |
Enviado: 29/Noviembre/2020 a las 13:57 |
No lo consigo lo dejo por imposible, cierro el tema.
Muchas gracias.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |