Copiar de un formulario el Id a un subformulario al abrirlo.

De nuevo a todos:

Tengo un formulario con subformulario y lo que quisiera saber es si es posible y como que al abrirlo se copiara el id del formulario al id del subformulario automáticamente.

1 Respuesta

Respuesta
1

Carlos: Según el texto, al final parece que te has decidido por insertar el SubFormulario en el principal.

Para que tome el mismo Id que el Formulario, si lo insertas con el asistente normalmente detecta y te sugiere >> Vincular Campos primarios y secundarios. Mis saludos >> Jacinto

Hola jacinto así es pero como es normal en mi me da problemas también.

esto es y ni por esas.

Gracias de nuevo Jacinto.

Carlos: Es bueno tener la voluntad que traduces por tus escritos.

Los conocimientos se van adquiriendo. Es posible, que eso que te ocurre tenga su raiz en la relación de las Tablas. Debe ser de uno a varios.

El "Varios" debe estar en la Tabla Origen de datos de EntregaGastosEdita y el "Uno" en la Tabla que sirve de Origen del Formulario Principal.

En ésta última tabla, el IdImpuestos no se puede repetir, independientemente de que sea o no Clave.

En la Tabla que si se pueden y se deben repetir es en la que sirve de Fuente a EntregaGastoEdita.

Prueba a relacionarla con Integridad referencial y si tienes alguna anomália te protestará.

Ya me contarás >> Mis saludos >> Jacinto

¿Que falla?

Saludos.

Carlos: Lo ue no acabo de ver es el uso que haces de la consulta que representas en tu segunda figura.

El Sub Formulario EntregaGastosEdita debe tener como Origen de datos la Tabla entregaGastos sin más. La relación está bien pero la has de establecer en Herramientas >> Relaciones

Mis saludos >> Jacinto

¿Supongo que es esto?

Ya se actualiza en parte.

y le puse en Entregas este código.

Private Sub Texto6_Change()
If Me.Texto6 = Me.Total Then
Me.Pagado = True
End If
End Sub

el texto6 es las Entregas.

¿Por que?

Gracias.

Se me olvido la instrucción esta en cuadro entregas opción al cambiar

Carlos: En mi opinión has de ir paso a paso, ya que si vas incorporando elementos nuevos, sin tener resuelto lo anterior, se hace más dificil la solución.

Partiendo de la figura que te adjunto:

Lo primero de todo es asegurar que puedes hacer varios apuntes en el SubFormulario >> EntregaGastosEdita. La relación es la adecuada y su fuente de Datos debe ser la Tabla EntregaGastos.

A partir de ahí "todo" el Código VBA que desencadena "todos" los acontecimientos debe estar en el SubFormulario EntregaGastosEdita, en el Evento AfterUpdate del Conrol >> ImEntregas.

Suponiendo que ya has insertado el cuadro de texto en el Subformulario, que puedes introducir varias entregas y que la suma es correcta.

Private Sub ImEntregas_AfterUpdate()
Me.Parent.SubTEntregas = Me.SumImEntregas
Me.Parent.Refresh
If Me.Parent.SubTEntregas = Me.Parent.ImporteGasto Then
     Me.Parent.ChkPagado = True
Else
     Me.Parent.ChkPagado = False
End If
End Sub

Y ahí se acaba todo, aunque eso tiene un peligro, y es que si el ImporteGasto son 100 y tienes 3 pagos de 33,33 Nunca se va a Cumplir la condición de :

If Me.Parent.SubTEntregas = Me.Parent.ImporteGasto.

Y volviendo al principio, mi sugerencia vuelve a ser que vayas construyendo sobre cimientos adecuados. Mis saludos >> Jacinto

Hola de nuevo Jacinto, te agradezco tu paciencia con migo.

Tienes razón en lo que comentas si pregunto algo en el foro esperando la contestación voy haciendo las pruebas que se me ocurren y hay veces que ya no se por donde estoy.

mira esta es como lo tenia en principio y funciona bien

como veras en el apartado entregas solo podía hacer tres lo cual me pareció no correcto ya que hay gastos que tengo que realizar mas de tres.

esto es la modificación que pretendo hacer.

como ves e insertado el subformulario el cual se van creando tantos registros como necesito, también tengo la suma tanto dentro del sub como en el formulario realiza las suma bien, el problema que encuentro es que en el formulario hay una casilla de verificación de Pagado Si/No en el primero si la cantidad entregada es igual al importe se actualizaba automáticamente y en virtud de esto cambia si esta pagado o pendiente del cuadro verde cosa que con la modificación no ocurre, en el primero tengo esta intruccion en el campo 1ª entrega al perder enfoque.

Private Sub ImportePagado_LostFocus()
If Me.TotImporteGasto = 0 Then
Me.Pagado = False
Me.txt.BackColor = 11053224 'gris
Me.txt.ForeColor = 11053224 'gris
Me.Texto110.BackColor = 11053224 'gris
Me.Texto110.ForeColor = 11053224 'gris
End If

If Me.Pendiente > 0 Then
Me.Pagado = False
Me.txt.Caption = "Pendiente"
Me.txt.BackColor = 255 'rojo
Me.txt.ForeColor = 16775408 ' blanco
Me.Texto110.BackColor = 255 'rojo
Me.Texto110.ForeColor = 16775408 ' blanco
End If

If Me.Total = Me.TotImporteGasto Then
Me.Pagado = True
Me.txt.Caption = "Pagado"
Me.txt.BackColor = 35653 'verde
Me.txt.ForeColor = 0 'negro
Me.Texto110.BackColor = 11053224 'gris
Me.Texto110.ForeColor = 11053224 'gris
End If

If Me.Total > Me.TotImporteGasto Then
Me.Pagado = True
Me.txt.Caption = "Sobrante"
Me.txt.BackColor = 55295 'amarillo
Me.txt.ForeColor = 0 'negro
Me.Texto110.BackColor = 55295 'amarillo
Me.Texto110.ForeColor = 0 'negro
End If
End Sub

si pongo la misma en el campo Entrega del segundo no funciona.

¿Hay solución?

espero hacerme explicado bien

Carlos: Tanto a ti como a mi nos va a costar mucho menos tiempo y esfuerzo si me mandas tu BD con algunos datos inventados, porque se puede alargar mucho el Texto y no conseguir resultados.

La idea base de lo que quieres hacer creo tenerla clara.

Creo que tenias mi eMail y si no lo localizas, me comentas. Mis saludos >> Jacinto

Te la mande.

Carlos: Justo ahora la he recibido. Esta tarde te la devuelvo. Mis saludos >> Jacinto

Hola Jacinto:

Te comento algunas cosas que no entiendo.

1ª  Si  Tot.Importe = Tot.Entregas aparece Sobrante cuando debería aparecer Pagado.

Porque aparece o para que aparece el formulario Pagos

cuando se pierde el enfoque en entrega.

3ª si se elimina una entrega no se actualiza el Tot.Entregas

¿Tiene que ser así?

Saludos y de nuevo gracias por las molestias que te estas tomando.

Carlos: Sobre:

1.- El que visualmente sean iguales, no quiere decir que realmente lo sean. Seguro que es por una cuestión de redondeo en algún cálculo. Aunque haya diferencia en las milésimas o diezmilisimas..., provocará que no sean iguales. Solución >> Controlarlo por VBA en el cálculo del Recargo, por ejemplo.

2.- Ignoro de donde sale ese Formulario. Acabo de probarlo y no se me produce esa anomalía.

3.- Cuando eliminas un registro, debes refrescar el SubFormulario y el Formulario. No ocurre nada si no lo haces, porque al hacer alguna acción lo hará solo.

Mis saludos >> Jacinto

El Formulario Pagos aparece si te mueves de un registro a otro con la tecla Enter, si es con Tabulador no.

¿Es correcto?

Saludos.

Carlos: Ciertamente así es y laverdad es que no veo programado ningún evento de la tecla Enter.

Lo miro y te comento lo que vea. Mis saludos >> Jacinto

Carlos: Según la Figura >>

En vista de diseño del Formulario, marcas ese botón que te señalo. Vas a sus Propiedades>> Pestaña Otras >> Predeterminado, que lo verás como "Si", le has de poner "No. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas