Access - Duda en codigo

 
Vista:

Duda en codigo

Publicado por Armando Ch. (93 intervenciones) el 16/09/2004 16:29:03
Hola a todos:
La duda que tengo es la siguiente yo tengo 2 forms para capturar y ambos dependen de la misma tabla y quiero asegurarme que al capturar se guarden solamente en el id que corresponda que no te deje guardar el valor del id diferentes entonces hice un condicional que compara los 2 id de los 2 forms que si es verdadero guarde el registro y muestre un mensaje de datos guardados si no que no te guarde nada pero como el usuario para esto ya tecleo algo cuando me salgo o me voy a vista diseño esos valores si me los guarda
Como le puedo hacer para que al comparar que los id son diferentes que ignoree lo que se acaba de capturar para que no se guarden estos valores ya que esto no es lo correcto.
Ojala puedan ayudarme gracias
Atte.
Armando
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 Alejandro

Duda en codigo

Publicado por Alejandro (4142 intervenciones) el 11/05/2023 19:23:50
Para asegurarte de que los registros se guarden solo en el ID correspondiente y evitar que se guarden valores incorrectos en la tabla, puedes utilizar una transacción en tu código VBA. Una transacción te permite agrupar varias operaciones de base de datos en una sola unidad lógica, lo que significa que todas las operaciones se completarán o se desharán en conjunto.

Aquí tienes un ejemplo de cómo puedes implementar una transacción en tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim db As DAO.Database
Dim rsForm1 As DAO.Recordset
Dim rsForm2 As DAO.Recordset
 
Set db = CurrentDb
Set rsForm1 = Me.RecordsetClone
Set rsForm2 = Forms("NombreDelSegundoFormulario").RecordsetClone
 
db.BeginTrans ' Inicia la transacción
 
' Compara los ID de los formularios
If rsForm1!ID = rsForm2!ID Then
    ' Realiza las operaciones de guardar los registros en la tabla correspondiente
    rsForm1.Edit
    rsForm1.Update
    rsForm2.Edit
    rsForm2.Update
 
    db.CommitTrans ' Confirma la transacción
    MsgBox "Datos guardados."
Else
    db.Rollback ' Deshace la transacción
    MsgBox "Los IDs no coinciden. No se guardaron los datos."
End If
 
' Cierra los recordsets y la base de datos
rsForm1.Close
rsForm2.Close
Set rsForm1 = Nothing
Set rsForm2 = Nothing
Set db = Nothing

En el ejemplo anterior, debes reemplazar "NombreDelSegundoFormulario" con el nombre real del segundo formulario en tu base de datos.

La transacción se inicia con `db.BeginTrans` y se confirma con `db.CommitTrans` si los IDs coinciden y los registros se guardan correctamente. Si los IDs no coinciden, se deshace la transacción con `db.Rollback`, lo que implica que no se guardará ninguno de los registros.

Recuerda que este es solo un ejemplo básico y puedes ajustarlo según tus necesidades específicas.
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