Crear nuevo registro en un formulario tipo datasheet desde VBA al abrir un formulario.

Estoy tratando de que al abrir un formulario se llenene unos subfrmularios tipo hoja de datos con algunos registros predeterminados

Quiero solamente agregar un registro cualquiera en alguno de estos formulario que quede de la manera que les indico en las imágenes.

1 Respuesta

Respuesta
2

Carlos, vamos a ver si me explico

1º ¿Lo de la esquina superior izquierda es el formulario?

2º ¿El "formulario" y los subformularios están relacionados por algún campo o son independientes?

3º ¿Al abrir el formulario o al Activar registro? Te lo digo fijándome en los dos de abajo, ya que se podría poner, por ejemplo

docmd.runsql"insert into tablaorigensubformderecha....

me.subformderecha.form.requery

Pero claro faltaría relacionar uno con otro

No no, lo de las imágenes son 2 subformularios distintos dentro de un formulario, y claro que estos están relacionados, lo que quiero es poder agregar registros en los subformularios desde VBA, es decir, pasar desde la imagen de la izquierda a la imagen de la derecha.

Al no saber cual es la relación entre el formulario y los subformularios, si tengo el formulario.

Por otro lado tengo otro formulario

Ambos son subformularios de otro llamado Formulario1. Pongo los subformularios verticales por problemas de espacio de la imagen

Ahora, en el evento Al abrir del formulario le pongo

Private Sub Form_Current()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into otra(idloquesea,paganini,donde) select idcliente,nombrecliente,pais from consulta1"
Me.Otra.Form.Requery
End Sub

Entonces cuando abro el formulario1

Estoy tratando de hacerlo así:

DoCmd.RunSQL "insert into tbLocalFreight(Description,Comment) values ('" & Valor & "','" & Valor & "')"

Pero no hace absolutamente nada. No muestra error ni nada. ¿Alguna idea?

Pero si esa instrucción la pones en el evento Al abrir del formulario, no "encuentra" lo que pones de '" & valor & "' ya que eso está en el subformulario. Tendrías que decirle que "busque" en el subformulario, por ejemplo

Private Sub Form_Current()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into otra(idloquesea,paganini) values(" & Me.Clientes.Form!IdCliente & ",'" & Me.Clientes.Form!NombreCliente & "')"
Me.Otra.Form.Requery
End Sub

Además tal como la tienes puesta, te inserta en Descripción y Comment el mismo valor

SI, exactamente eso era lo que quería, la variable Valor tiene asignado "Hola", y quiero colocarla en la tabla donde esta relacionada con el furmalario, pero no hace nada.

Si tengo la tabla Otra vacía, y en el evento Al abrir del formulario le pongo la instrucción que te puse antes, cuando abro el formulario1

Si le cambiara la instrucción por

DoCmd.SetWarnings False
DoCmd.RunSQL "insert into otra(idloquesea,paganini) values(" & Me.Clientes.Form!IdCliente & ","" Show me the money"")"
Me.Otra.Form.Requery

Cuando abriera el formulario

No se porque a mi no me funciona pero para nada, te comparto un ejemplo de lo que quiero hacer, en vez de ingresar el código al abrir el formulario lo coloque en un botón dentro del formulario. Con la misma idea, al hacer click insertar un nuevo registro en el formulario ITemPrice dentro del flormulario...

Ojala puedas ayudarme

La base de datos esta el el siguiente link de descarga

https://wetransfer.com/downloads/b3af8223775b3b2917a04a501bb4740c20190323003104/4bc948de2a2505095d37f18c3ae5873a20190323003104/e0d9f8

Carlos, apenas he entendido lo que querías, pero si tengo el formulario

Y pulso el botón

Lo del cuadro combinado no sé para que sirve.

En el código del botón tenías un pequeño error. El campo Costo es moneda, pero el 10 lo estás tratando como string y por tanto en la variable le estabas diciendo lo mismo.

Private Sub Comando17_Click()
DoCmd.SetWarnings False
Dim Valor As Currency
Valor = 10
DoCmd.RunSQL "insert into tbItemPrice(resumenid,costo) values (" & Me.ResumenId & "," & Valor & ")"
Me.ItemPrice.Form.Requery
End Sub

¡Gracias!  un milloooon, (y) 

¿

Tendrías alguna idea de como agregar en vez de solo uno varios a la vez?

Lo puedes hacer de muchas formas. Por ejemplo, en esa instrucción de arriba puedes ponerla como

Private Sub Comando17_Click()
DoCmd.SetWarnings False
Dim Valor As Currency, i as byte
Valor = 10
for i=1 to 5
DoCmd.RunSQL "insert into tbItemPrice(resumenid,costo) values (" & Me.ResumenId & "," & Valor & ")"
next
Me.ItemPrice.Form.Requery
End Sub

Donde pongo 5 tienes que poner el número de registros que quieres insertar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas