Como saber si ingresaron registros en un SubFormulario ?

A ver si me explico bien...

Tengo un Formulario (Pedido) con los datos del cliente, con su SubFormulario (Subformulario Detalle Pedido)con los productos del Pedido, al crear un registro en el formulario principal (que trabaja con la Tabla Pedido), me crea automáticamente su registro correspondiente en el subformulario (que trabaja con la Tabla Detalle Pedido)

Lo que me ocurre es que aveces, anician el formulario, cargan el cliente, pero no le cargan los productos y queda el formulario "vacio" solo con los datos del cliente pero sin productos. En definitiva es un pedido nulo.

Lo que necesito es que al salir, me compruebe que haya productos cargados en el subformulario de lo contrario que borre el Pedido.

Las tablas son: Pedido y Detalle Pedido (relacionadas por NPedidoF(Id de Pedido) y IdPedido (Id de Detalle de Pedido).

Los formularios son: Pedido (formulario principal) y Subformulario Detalle Pedido (Sub Formulario)

1 Respuesta

Respuesta
2

La primera forma que se me ocurre:

En el evento "al cerrar" del formulario Pedido, pones este código (ojo, que no me quedan claro los nombres de tus campos que intervienen en la relación e igual no acierto con ellos)

If DCount("*","[Detalle de Pedido]","IdPedido=" & Me.NPedidoF)=0 Then
   CurrentDb.Execute "DELETE * FROM [Detalle de Pedido] WHERE IdPedido=" & Me.NPedidoF
End If

He supuesto que el campo del subformulario (y tabla) relacionado con el formulario principal es IdPedido, y que el campo clave del formulario (y tabla) principal es NPedidoF, y que ambos son campos numéricos.

Y ¡Ojo!: Haz la prueba en una copia de la BD, por si borras algún registro que no debes...

Pequeño detalle que se me pasó.... son campos de texto,  porque le agrego una letra al Pedido para identificar de donde es..... pero voy a probar, creo que lo único que debo hacer es sacar "&" y correr las comillas al final, si no me equivoco. Por ahora mil gracias, siempre tan atentos...

Parece que no fue tan sencillo, ¿me da error... me podrías dar el código con los campos en formato texto?

En ese caso:

If DCount("*","[Detalle de Pedido]","IdPedido='" & Me.NPedidoF & "'")=0 Then
   CurrentDb.Execute "DELETE * FROM [Detalle de Pedido] WHERE IdPedido='" & Me.NPedidoF & "'"
End If

¡Gracias! Ahora si... Funcionó !!!!

Una pequeña inquietud... este código no me funciono, no da error, pero tampoco borra el registro.

CurrentDb.Execute "DELETE * FROM [Detalle de Pedido] WHERE IdPedido='" & Me.NPedidoF & "'"

lo reemplace por este otro, y funcionó

DoCmd.RunCommand acCmdDeleteRecord

Bien.... ya encontré el error , tu código ESTA PERFECTO, el error era que debía borrar el registro de la tabla [Pedido]  no de [Detalle de Pedido]

CurrentDb.Execute "DELETE * FROM [Pedido] WHERE NPedidoF='" & Me.NPedidoF & "'"

Al final me lié con los nombres de las tablas y no de los campos... sorry...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas