Como poder eliminar datos de subformularios sin que este afecte las tablas

Como puedo borrar los datos de dos subformulario, sin que esto me borre los dato del formulario cabecera
Y los datos de lass tablas correspondientes

Aclaración.
Los subform en la orejeta datos RENGLÓN "permitir eliminación" necesito de ser posible que este en NO
Para que los usuarios no me lo borre

La eliminación de los datos de los subformulario tendría que ser cada quince días

Aclaración.

El formulario cabeza y los dos subformulario están hermanados por una id

1 respuesta

Respuesta
1

Lo que estás pidiendo no tiene ningún sentido: si los formularios están basados en una tabla, y borras registros, los borras de la tabla y punto. En ese punto no hay milagros.

Sin ver cómo lo tienes montado es imposible darte una solución directa, pero lo que sí puedes hacer es lo que se denomina un borrado lógico. Para hacer un borrado lógico y adaptarlo a tu sistema lo que necesitarás es:

- Tener un campo sí/no en las tablas: si el campo está marcado (es verdadero) quiere decir que el registro está borrado "lógicamente".

- Tener un campo fecha que te indique la fecha de los registros del subformulario

- Los subformularios no deberían estar basados en una tabla, sino en una consulta sobre la tabla, filtrando por el campo sí/no que te comentaba, de manera que sólo te muestre aquellos cuyo valor sea False

- Tener un procedimiento, por ejemplo en el formulario que se te abre al iniciar la aplicación (siempre y cuando no sea el mismo que tiene los subformularios), que chequee la fecha de las tablas origen de los subformularios y que, si detecta registros con más de quince días de antigüedad según el campo fecha que te comentaba antes, te actualice el campo sí/no y te lo marque como verdadero.

Como ves, un poco de trabajillo.

Me parece que no me he expresado correctamente.

Lo explico nuevamente,

Tengo un formulario cabecera donde están los datos de una persona.

En el primer subformulario le cargo las horas de trabajo.

Y en el segundo subformulario le cargo los motivos de horas especiales.

Ahora bien cuando termina una quincena, necesito que esos dos subformularios queden sin datos para poder cargar nuevamente la próxima quincena.

Por eso hablo de limpiar los dos subformularios. Y es ahí es cuando los borro a mano me borra todo.

Perdón si soy reiterativo con el tema

Mi respuesta es la misma de la de antes.

¡Gracias! Por responder, pero sigo con mi problema, si podes te mando mi base no soy muy ducho trato de armar aplicaciones con la ayuda que me brindan.

Nuevamente gracias, si podes te mando mi base en algún mail que me envíes

Ahí tienes un ejemplo con borrado lógico manual: https://www.mediafire.com/?s5v3syou88zir3a 

¡Gracias! ok mil gracias por el ejemplo lo trato de adaptar a mis necesidades, gracias nuevamente

Disculpa las molestias, podrías verme la modificación al código , yo le agregue otro subformulario , pero lo que logro con la modificación es que me borre la tabla nueva y no la otra, 

Option Compare Database
Option Explicit

Private Sub cmdBorroDatosSubform_Click()
Dim miSql As String
Dim miId As Long
miId = Me.Id.Value
miSql = "UPDATE TDetalles SET Borrado=True WHERE Borrado=False and IdCli=" & miId
miSql = "UPDATE TDedos SET Borrado=True WHERE Borrado=False and IdCli=" & miId
CurrentDb.Execute (miSql)
Me.subFrmCDetalles.Requery
Me.subFrmCDedos.Requery
'-------------------------------------------------------------------------------------------------------------
'Esta parte de código es para que veas que, a la vista, parece que se han borrado, pero continúan en la tabla
'-------------------------------------------------------------------------------------------------------------
Dim resp As Integer
resp = MsgBox("¿Quieres abrir la tabla para ver los datos?", vbQuestion + vbYesNo, "ABRE TABLA")
If resp = vbYes Then
DoCmd.OpenTable "TDetalles"
DoCmd.OpenTable "TDedos"
MsgBox "Como ves, los datos no se han borrado de la tabla, pero no se ven en el formulario"
End If
End Sub

Private Sub cmdBorroDatosSubform_Click()
Dim miSql As String, miSql2 as string
Dim miId As Long
miId = Me.Id.Value
miSql = "UPDATE TDetalles SET Borrado=True WHERE Borrado=False and IdCli=" & miId
miSql2 = "UPDATE TDedos SET Borrado=True WHERE Borrado=False and IdCli=" & miId
CurrentDb. Execute (miSql)
Currendb.execute(miSql2)
Me. SubFrmCDetalles. Requery
Me. SubFrmCDedos. Requery

---

¡Gracias! ok mil gracias nuevamente

disculpa, nuevamente, 

borra los datos, pero no me limpia el segundo subformulario como hace con  el primero

Si funciona con el primero, debería funcionar con el segundo. Eso significa que has hecho algo mal en el proceso de creación de tu segundo formulario. Y, lógicamente, como no veo lo que has hecho no puedo decirte lo que está mal.

El proceso en abstracto es:

- Tienes tu tabla

- Sobre la tabla creas la consulta y le añades el filtro

- Sobre la consulta creas el formulario continuo (varios elementos), que será tu subformulario

- Añades al form principal ese subformulario, teniendo en cuenta que NO debe haber ninguna relación entre el form principal y subformulario.

Revisa los nombres que has utilizado, y revisa el nombre del subformulario como control, no como formulario.

¡Gracias! Si tenias razón tenia en la ventanas datos tomando el formulario de otra consulta, ahora si funciona todo, nuevamente gracias por la ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas