Porque accces me pone registros en chino
Tengo un formulario que usa un botón de guardar compra pero los registro que ya están anteriormente se va poniendo en chino cada campo
El código que utilizo es este
Private Sub btnGuardarCompra_Click()
On Error GoTo Err_Handler
Dim IDCompra As Long
Dim Descripcion As String
Dim FechaCompra As Date
Dim TotalNeto As Currency
Dim CuentaGasto As String, CuentaPago As String
Dim IDCuentaGasto As Long, IDCuentaPago As Long
Dim FormaPago As String, Observaciones As String
Dim aplicarPago As Boolean
Dim cuentaProveedor As String, IDCuentaProveedor As Long, NombreProveedor As String
Dim esSinProveedor As Boolean
' === VALIDACIONES ===
If Me.Procesado = False Then
MsgBox "Debe marcar la compra como procesada.", vbExclamation
Exit Sub
End If
If Nz(DLookup("[Imp]", "Compras", "ID_Compra = " & Me.ID_Compra), 0) = 1 Then
MsgBox "Esta compra ya fue procesada anteriormente.", vbExclamation
Exit Sub
End If
If Nz(Me.TotalNeto, 0) = 0 Then
MsgBox "Debe ingresar el monto total de la compra.", vbExclamation
Exit Sub
End If
' === DATOS ===
IDCompra = Me.ID_Compra
FechaCompra = Me.Fecha
TotalNeto = Nz(Me.TotalNeto, 0)
CuentaGasto = LimpiarTextoSQL(Nz(Me.CuentaCont, ""))
CuentaPago = LimpiarTextoSQL(Nz(Me.CuentaPago, ""))
FormaPago = LimpiarTextoSQL(Nz(Me.FormaPago, ""))
Observaciones = LimpiarTextoSQL(Nz(Me.Observaciones, ""))
aplicarPago = Me.chkAplicarPago
esSinProveedor = (Nz(Me.CodigoProv, "") = "" Or Me.CodigoProv = "80000" Or Me.CodigoProv = "80001")
' === VALIDAR COMBOS ===
If CuentaGasto = "" Or InStr(CuentaGasto, "?") > 0 Then
MsgBox "Debe seleccionar una cuenta contable válida.", vbExclamation
Exit Sub
End If
If esSinProveedor And (CuentaPago = "" Or InStr(CuentaPago, "?") > 0) Then
MsgBox "Debe seleccionar una cuenta de pago válida para compras sin proveedor.", vbExclamation
Exit Sub
End If
IDCuentaGasto = Nz(DLookup("ID_Cuenta", "CuentasContables", "CodigoCuenta = '" & CuentaGasto & "'"), 0)
If CuentaPago <> "" Then
IDCuentaPago = Nz(DLookup("ID_Cuenta", "CuentasContables", "CodigoCuenta = '" & CuentaPago & "'"), 0)
End If
If Not IsNull(Me.ID_Proveedor) Then
cuentaProveedor = LimpiarTextoSQL("2-" & Me.CodigoProv)
NombreProveedor = LimpiarTextoSQL(Nz(Me.NombreProv, ""))
IDCuentaProveedor = Nz(DLookup("ID_Cuenta", "CuentasContables", "CodigoCuenta = '" & cuentaProveedor & "'"), 0)
End If
' === DESCRIPCIÓN ===
Descripcion = "COMPRA/SERVICIO FACT-" & Nz(Me.NumeroFactura, "S/N")
If esSinProveedor Then
Descripcion = Descripcion & " - " & Observaciones
Else
Descripcion = Descripcion & " PROVEEDOR - " & NombreProveedor
End If
Descripcion = LimpiarTextoSQL(Descripcion)
' === ASIENTO ENCABEZADO ===
CurrentDb.Execute "INSERT INTO Asientos (Fecha, TipoAsiento, ID_Documento, Descripcion) VALUES (" & _
"#" & Format(FechaCompra, "yyyy-mm-dd") & "#, 'COMPRA', " & IDCompra & ", '" & Descripcion & "')"
Dim IDAsiento As Long
IDAsiento = DMax("ID_Asiento", "Asientos")
' === DEBE: GASTO ===
CurrentDb.Execute "INSERT INTO DetalleAsiento (ID_Asiento, ID_Cuenta, Cuenta, Debe, Haber, Descripcion, NombreCuenta) VALUES (" & _
IDAsiento & ", " & IDCuentaGasto & ", '" & CuentaGasto & "', " & TotalNeto & ", 0, '" & Descripcion & "', '" & _
LimpiarTextoSQL(Nz(DLookup("NombreCuenta", "CuentasContables", "CodigoCuenta = '" & CuentaGasto & "'"), "")) & "')"
' === ESCENARIOS ===
If esSinProveedor Then
CurrentDb.Execute "INSERT INTO DetalleAsiento (ID_Asiento, ID_Cuenta, Cuenta, Debe, Haber, Descripcion, NombreCuenta) VALUES (" & _
IDAsiento & ", " & IDCuentaPago & ", '" & CuentaPago & "', 0, " & TotalNeto & ", '" & Descripcion & "', '" & _
LimpiarTextoSQL(Nz(DLookup("NombreCuenta", "CuentasContables", "CodigoCuenta = '" & CuentaPago & "'"), "")) & "')"
ElseIf aplicarPago Then
CurrentDb.Execute "INSERT INTO DetalleAsiento (ID_Asiento, ID_Cuenta, Cuenta, Debe, Haber, Descripcion, NombreCuenta) VALUES (" & _
IDAsiento & ", " & IDCuentaProveedor & ", '" & cuentaProveedor & "', 0, " & TotalNeto & ", '" & Descripcion & "', '" & NombreProveedor & "')"
CurrentDb.Execute "INSERT INTO DetalleAsiento (ID_Asiento, ID_Cuenta, Cuenta, Debe, Haber, Descripcion, NombreCuenta) VALUES (" & _
IDAsiento & ", " & IDCuentaProveedor & ", '" & cuentaProveedor & "', " & TotalNeto & ", 0, '" & Descripcion & "', '" & NombreProveedor & "')"
CurrentDb.Execute "INSERT INTO DetalleAsiento (ID_Asiento, ID_Cuenta, Cuenta, Debe, Haber, Descripcion, NombreCuenta) VALUES (" & _
IDAsiento & ", " & IDCuentaPago & ", '" & CuentaPago & "', 0, " & TotalNeto & ", '" & Descripcion & "', '" & _
LimpiarTextoSQL(Nz(DLookup("NombreCuenta", "CuentasContables", "CodigoCuenta = '" & CuentaPago & "'"), "")) & "')"
Else
CurrentDb.Execute "INSERT INTO DetalleAsiento (ID_Asiento, ID_Cuenta, Cuenta, Debe, Haber, Descripcion, NombreCuenta) VALUES (" & _
IDAsiento & ", " & IDCuentaProveedor & ", '" & cuentaProveedor & "', 0, " & TotalNeto & ", '" & Descripcion & "', '" & NombreProveedor & "')"
End If
' === REGISTRAR PAGO SI SE APLICA ===
If aplicarPago And Not esSinProveedor Then
CurrentDb.Execute "INSERT INTO PagosCXP (ID_Compra, FechaPago, MontoPagado, FormaPago, Observaciones, CuentaPago, tipo, DesdeCompras) VALUES (" & _
IDCompra & ", #" & Format(FechaCompra, "yyyy-mm-dd") & "#, " & TotalNeto & ", '" & FormaPago & "', '" & Observaciones & "', '" & CuentaPago & "', 'AUTOMATICO', True)"
ElseIf Not aplicarPago And Me.Condicion = "CONTADO" Then
Me.Condicion = "CREDITO"
CurrentDb.Execute "UPDATE Compras SET Condicion = 'CREDITO' WHERE ID_Compra = " & IDCompra
End If
CurrentDb.Execute "UPDATE Compras SET [Imp] = 1 WHERE ID_Compra = " & IDCompra
MsgBox "Compra guardada correctamente.", vbInformation
Me.Requery
Exit Sub
Err_Handler:
MsgBox "Error al guardar la compra: " & Err.Description, vbCritical
End Sub