Access - Insertar recordet en tabla

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar recordet en tabla

Publicado por Miguel (56 intervenciones) el 27/05/2015 19:40:21
Hola a todos, tengo un par de dudas que ojala me puedan ayudar.
Tengo un form principal con dos subformularios. cada uno tiene su propia tabla y relacionados por campo en comun. Si pretendo hacer una modificación de un registro y luego cancelo o deshago el cambio, los cambios se deshacen en form principal pero en los dos subform no se deshacen los cambios.

He probado los siguiente: cuando doy opción para modificar registro, crear un recorset del registro actual de cada uno de los dos subform, luego si deseo grabar los cambios no hago nada pero si eligio cancelar o deshacer cambios, he pensado en borrar el registro actual de cada subformulario y luego insertar los que previamente habia guardado digamos como respaldo.
Me parece algo sencillo sin embargo ... no funciona. :-(

Adjunto parte de mi codigo:


1
2
3
4
5
6
7
Option Compare Database
Option Explicit
Dim DbsCurrent As Database, Rst01 As Recordset, Rst02 As Recordset, opcmod As Integer
 
..
..
..


Luego cuando activo el boton de modificar entra en esta breve rutina:

1
2
3
4
5
6
7
8
' Rst01 va a guardar el registro actual de la tabla: Descargas por Estaciones
' Rst02 va a guardar el registro actual de la tabla: Inyección de Gas
'  me.fechaproceso es el campo principal clave que esta en el formulario principal y por el cual se vinculan los subform
 
Set DbsCurrent = CurrentDb
Set Rst01 = DbsCurrent.OpenRecordset("SELECT * FROM [Descargas] WHERE FECHA = #" & me.fechaproceso & "#")
Set Rst02 = DbsCurrent.OpenRecordset("SELECT * FROM [Inyección] WHERE FECHA = #" & me.fechaproceso & "#")
' fin de rutina


Luego cuando he seleccionado el boton cancelar tengo este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
 
 
DoCmd.SetWarnings False
'DoCmd.RunSQL "DELETE * FROM [Descargas] WHERE [Descargas].FECHA = #" & me.fechaproceso & "#"
DoCmd.RunSQL ("INSERT INTO [Descargas por Estaciones] SELECT * FROM Rst01")
 
 
DoCmd.RunSQL "DELETE * FROM [Inyección] WHERE [Inyección].Fecha= #" & me.fechaproceso  & "#"
DoCmd.RunSQL ("INSERT INTO [Inyección de Gas] SELECT * FROM Rst02")
DoCmd.SetWarnings True
 
 
Rst01.Close
Rst02.Close
Set Rst01 = Nothing
Set Rst02 = Nothing
Set DbsCurrent = Nothing




BUeno el error me da en esta linea:
DoCmd.RunSQL ("INSERT INTO [Descargas por Estaciones] SELECT * FROM Rst01")
==> me dice que no reconoce la consulta RST01

Imagino que estoy obviando algo tan sencillo pero la verdad no lo detecto ya que tampoco soy muy experto en el tema con los recordset.
He obviado algunas lineas que no tienen mucha importancia colocar como son verificacion si entre o no por agregar o modificar, etc.

Mi segunda gran pregunta y si esta creo es una tonteria. En pantalla la fecha se me muestar como dd/mm/yyyy pero cuando hago la consulta por código, las fechas se cambian a mm/dd/yyy. Deseo saber la instrucción para poner las fechas a comparar como valor de fecha. Se que cada fecha tiene un valor unico interno, cual es la función para hacerlo.

Gracias de antemano por su tiempo y respuesta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de douglas

Insertar recordet en tabla

Publicado por douglas (280 intervenciones) el 28/05/2015 00:35:27
Te recomiendo no hacer esto ya que te genera basura en la base de datos
y es posible que borres información buena si algo sale mal.

Lo que si debes hacer es dos cosas.

1- puedes hacer que el registro este bloqueado y poner un mensaje cuando se quiera modificar un registro en el evento datos no guardados esa es la mas sencilla y creo la que la mayoría usan.

2-Si definitivamente necesitas deshacer los cambios.
Lo que te aconsejo es que clones tu base principal y que el usuario trabaje con una base temporal, cuando le da guardar
Podes anexarla a la base principal y puedes limpiar la temporal con consultas en el modo borrar. o en modo actualizar

Te adjunto ejemplo de lo mas sencillo
trata de modificar algún campo del formulario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

Insertar recordet en tabla

Publicado por Miguel (56 intervenciones) el 12/06/2015 04:31:32
Gracias por tu interés y apoyo.
No es precisamente lo que deseo pero he optado por crear registros duplicados y dependiendo si deseo eliminar borro ya bajo los registros anteriores.

Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar