Access - Nuevo registro con códigos VBA

 
Vista:

Nuevo registro con códigos VBA

Publicado por Miguel (1 intervención) el 06/12/2021 15:29:13
Buenos días a todos, por favor necesito vuestras luces con este problema que tengo:
Vereis, tengo una DB sumamente sencilla
Codigo Detalle Debe Haber

Con un formulario independiente introduzco movimientos en ella, hago los cálculos y tengo:

52112 Prueba de integración 2.780,-

corro el código
Private Sub Comando9_Click()

Dim calculo As Double

calculo = Debe.Value * 1.5
Haber.Value = calculo

End Sub


obtengo:
52112 Prueba de integración 2.780,- 4.170,-

Quiero tener con códigos VBA,
52112 Prueba de integración 2.780,-
52112 Prueba de integración 4.170,-
En síntesis:
No se como registrar un nuevo registro o nueva entrada o poner una nueva línea con códigos VBA, os ruego me ayudeis.
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 Jose A.

Nuevo registro con códigos VBA

Publicado por Jose A. (2 intervenciones) el 06/12/2021 18:51:12
Me encantaría ayudarte pero, no comprendo el código de aquí, el obtenido, y lo que pretendes, para añadir un nuevo registro se hace a traves de un recordset y tu_recordset.addnew, asignas los valores a los campos y actualizas el registro con tu_recordset.update
Un poco mas de explicación y código.
Saludos
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

Nuevo registro con códigos VBA

Publicado por Anonimo (3316 intervenciones) el 06/12/2021 20:05:52
Si el formulario es independiente (no tiene origen de datos) solo puede admitir el equivalente a un registro y en cuadros de texto.

El calculo se esta complicando mas de lo necesario, no se necesita una variable intermedia

1
2
3
4
5
6
7
8
Private Sub Comando9_Click()
 
Dim calculo As Double
 
calculo = Debe.Value * 1.5
Haber.Value = calculo
 
End Sub


Lo mismo en un solo paso:

1
2
3
Private Sub Comando9_Click()
Haber = Debe * 1.5
End Sub

Si lo generamos de fa forma correcta:

1
2
3
Private Sub Comando9_Click()
Me.Haber = Me.Debe * 1.5
End Sub


Pero si se desea crear un nuevo registro .... mejor con una SQL (que se puede crear con el asistente grafico):

La SQL:
"Insert Into [aqui la tabla] (Codigo, Detalle, Debe, Haber) Values (" & Me.Codigo & " ,'" & Me.Detalle & ", 0, " & Me.Debe *1.5 & ")"

Ejecutando la SQL (hay que garantizar la existencia de los datos, los valores NULL son indigestos)

1
2
3
Private Sub Comando9_Click()
DoCdm.RunSQL "Insert Into [aqui la tabla] (Codigo, Detalle, Haber) Values (" & Me.Codigo & " ,'" & Me.Detalle & "', " &  Me.Debe *1.5 & ")"
End Sub

NOTA: Si la tabla no admite duplicados en el campo 'Código' no dejara insertar el registro.

Es curiosa esa contabilidad (si es una contabilidad por eso del Debe <-> Haber).
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
Imágen de perfil de Eduardo

Nuevo registro con códigos VBA

Publicado por Eduardo (317 intervenciones) el 06/12/2021 21:06:39
Si es un formulario independiente puede actualizar con DAO o SQL. Es más practico por SQL.

FORMULARIO

contabilidad_01

Observe que el control Haber tiene como origen de datos [debe]*1.5

FORMULARIO CON LOS DATOS

contabilidad_02

Hago clic en el botón Registrar y obtengo:

contabilidad_03

CODIGO DEL BOTÓN REGISTRAR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub btnRegistrar_Click()
 
 On Error GoTo hay_error
 
   CurrentDb.Execute "INSERT INTO tblmovtos(codigo,detalle,debe,haber) VALUES(" & "'" & Me.ctlcodigo & _
   "','" & Me.ctldetalle & "'," & Me.debe & "," & Me.haber & ")"
 
  If Err.Number = 0 Then
     MsgBox "Registro adicionado OK", vbInformation, "Le informo"
  End If
 
 
hay_error_exit:
   Exit Sub
 
 
hay_error:
     MsgBox Err.Description, vbCritical, "Error..."
     Resume hay_error_exit
 
End Sub

CODIGO DEL BOTON LIMPIAR

1
2
3
4
5
6
7
8
Private Sub btnLimpiar_Click()
 
  Me.ctlcodigo = Null
  Me.ctldetalle = Null
  Me.debe = 0
  Me.ctlcodigo.SetFocus
 
End Sub
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