Autor |
Tema Buscar Opciones del Tema
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Tema: Rellenar campo de un subformulario Enviado: 25/Enero/2021 a las 09:39 |
Buenos días a tod@s Quisiera rellenar un campo en todos los registros que se encuentran en un subformulario cuando se de una condición deerminada. El subformulario es "SubAux" y el campo a rellenar es "SalidaAux" La condición es que el campo "SalidaAux" esté vacío y cuando no lo esté, que adquiera el valor del campo "FechaSalida" que está en el formulario principal que es desde donde hacemos la llamada.
Private Sub Comando452_Click() Dim i As Integer For i = 1 To Me!SubAux.Form![Reg] If (IsNull(Me!SubAux.Form![SalidaAux])) Then Me!SubAux.Form![SalidaAux] = Me.FechaSalida End If Next i End Sub
Con este código rellena el campo "SalidaAux" pero solo lo hace en el que había dejado el foco antes de pulsar el botón y lo que quiero es que lo haga en todos los registros donde se de la condición expuesta. Evidentemente este no es el camino,creo que esto se debería hacer con un RecordSet pero, además de no estar seguro, no lo sabría aplicar. Solicito ayuda Gracias Juan
|
jj
|
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Enviado: 25/Enero/2021 a las 11:06 |
Hola de nuevo Sigo intentando arreglar esto e inspirándome en un hilo reciente de Xavi (recorrer controles en un formulario) He puesto esto:
Private Sub Comando459_Click() Me!SubAux.SetFocus For Each ctl In Me!SubAux.Form![SalidaAux] If (IsNull(Me!SubAux.Form![SalidaAux])) Then Me!SubAux.Form![SalidaAux] = Me.FechaSalida
End If Next End Sub
Pero me sale error 438 "el objeto no admite esta propieda o método" Y se colorea aquí: For Each ctl In Me!SubAux.Form![SalidaAux]
|
jj
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
Enviado: 25/Enero/2021 a las 11:10 |
Hola!
No me queda claro que es lo que quieres hacer. Lo que entiendo de tu mensaje es que quieres rellenar el campo "Me!SubAux.Form![SalidaAux]" por el valor de "Me.FechaSalida", pero la duda es si el campo "Me.FechaSalida" tiene varios valores o único?
Editado por mounir - 25/Enero/2021 a las 11:10
|
Un Saludo.
|
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Enviado: 25/Enero/2021 a las 11:26 |
Hola mounir; gracias una vez más. El campo "Me!SubAux.Form![SalidaAux]" puede estar con o sin valor. Si está con valor; dejarlo como está Si está en blanco (sin valor); poner el valor "FechaSalida" que está en el formulario Ppal Pero esto en todos los registros del subformulario "SubAux"
|
jj
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
Enviado: 25/Enero/2021 a las 11:32 |
Hola!
Supongo que la "FechaSalida" va cambiando según el registro, es así?, en caso afirmativo, habría que crear dos "recordset", uno para seleccionar los nulos del "Me!SubAux.Form![SalidaAux]" y el otro RecordSet para las "FechaSalida".
Editado por mounir - 25/Enero/2021 a las 11:33
|
Un Saludo.
|
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Enviado: 25/Enero/2021 a las 11:58 |
Hola Afirmativo, cada registro del Formulario Ppal (un único formulario) tiene una "FechaSalida" que pueden ser iguales o no. Ahora para pruebas hago la operación desde un botón pero en realidad lo haré desde el propio campo "FechaSalida" en el evento "Después de Actualizar" es decir; cuando cumplimente el valor de "FechaSalida", "después de actualizar" se recorrerán todos los registros del subformulario "SubAux" rellenando el campo "SalidaAux" con la condición señalada. Los registros que hay que recorrer son los del subformulario, por tanto, a mi me parece (con toda humildad) que no es necesario el RecordSet en el formulario Ppal.
|
jj
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
Enviado: 25/Enero/2021 a las 12:06 |
Hola!
Todavía no sé si quieres rellenar todos los nulos del "Me!SubAux.Form![SalidaAux]" por la fecha que hay en "FechaSalida". Si es así, entonces con un RecorSet que recorra el subformulario.
|
Un Saludo.
|
|
emiliove
Administrador
Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
|
Enviado: 25/Enero/2021 a las 14:57 |
Mira mi ejemplo de recorrrer subformulario hay varias formas: http://emilioverastegui.blogspot.com/2015/02/recorrer-subformulario.html
Saludos.
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 25/Enero/2021 a las 15:46 |
Hola. Dando otro enfoque, también cabe la posibilidad ( se puede montar el "SQL" con el asistente para consultas con el formulario abierto) de hacer un "Update" de la tabla en cuestión, eso si con el where adecuado. Espero que ayude a resolver la duda Un saludo a todos
|
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Enviado: 25/Enero/2021 a las 16:12 |
Hola mounir,Emilove y prga Muchas gracias por ayudarme. mounir, afirmativo, si quiero rellenar todos los nulos del "Me!SubAux.Form![SalidaAux]" por la fecha que hay en "FechaSalida". Por favor, indícame el recordset o algo que me pueda orientar en ese camino, pues no estoy ducho, ni mucho menos, en esto. Emilove; he abierto tu página y le dedicaré mi tiempo pero, por ahora, voy a tirar por lo del recordset. prga; lo mismo que lo dicho para Emilove, indagaré con la SQL Gracias a los tres y a cuantos os habéis interesado por resolver este asunto. Juan Juan
|
jj
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
Enviado: 25/Enero/2021 a las 16:59 |
Hola! La duda que tenía era si querías actualizar todos los nulos del subformulario de todos los registros del formulario, me explico, supongamos que tenemos 10 registros en el formulario con sus fechas de salida, y cada registro del formulario tiene 5 registros en el subformulario (3 registros nulos, como ejemplo). Claro está, si lo haces con un "recordset" que recorra el subformulario solo es aplicable para los nuevos registros de "Fecha_salida" pero los registros antiguos se quedan sin rellenar, por eso lo del doble "RecordSet". Es un magnífico ejemplo lo de Emiliove.
|
Un Saludo.
|
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Enviado: 25/Enero/2021 a las 18:36 |
Hola Intento con el primer ejemplo de Emilove adaptado a mi caso
Private Sub Ctl1Recordsetclone_Click() Me.SubAux.Visible = True With Me.SubAux.Form.RecordsetClone .MoveFirst Do Until .EOF .Edit If (IsNull(Me!SubAux.Form![SalidaAux])) Then Me!SubAux.Form![SalidaAux] = Me.FechaSalida End If .Update .MoveNext Loop End With End Sub
Solo me rellena el campo donde he puesto el foco previamente, es decir, me situó en un campo nulo del subformulario, a continuación hago click en el botón y se rellena el campo seleccionado pero ninguno más
|
jj
|
|
emiliove
Administrador
Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
|
Enviado: 25/Enero/2021 a las 20:27 |
Yo diría que debe funcionar así:
Me.SubAux.Visible = True
With Me.SubAux.Form.RecordsetClone
.MoveFirst
Do Until .EOF
.Edit
If IsNull(!SalidaAux) Then
!SalidaAux = Me.FechaSalida
End If
.Update
.MoveNext
Loop
End With
End Sub
Pero si pones un punto de interrupción y te vas paso a paso puedes ver que hace y donde esta el error.
Saludos.
Editado por emiliove - 25/Enero/2021 a las 21:48
|
|
Juan
Colaborador
Unido: 26/Mayo/2006
Localización: España
Estado: Sin conexión
Puntos: 1035
|
Enviado: 26/Enero/2021 a las 08:03 |
Buenos días a todos! Pues llevaba horas intentando solucionar esto y nada, aunque es tiempo bien empleado pues siempre se aprende. Emilove, he reproducido y he hecho pruebas con todos tus ejemplos en una BD añadiendo los campos de fecha correspondientes tanto en el Form como en el Sub para hacer pruebas con mi caso concreto que, respecto al de tus ejemplos, difiere en el condicional. Si no fallaba una cosa fallaba otra, hasta que he abierto el Foro para pedir ayuda de nuevo y veo tu mensaje. Lo he probado y ha funcionado a la primera. Muchísimas gracias a todos Juan Por mi parte podéis quitar el hilo
|
jj
|
|