Agregar valores con coma a un campo access 2003

Estoy haciendo unos cálculos para agregar el IVA a unos productos... Cuando agrego el registro no me toma las comas... Ej: Un producto tiene valor 10 y cuando le agrego el 10,5%, en vez de 11,05 me lo muestra como 11... Y el 21 % en vez de 12,1 me muestra 12...

El Tipo de Datos de los campos Precio, IVA_Incluido, Precio total es Número y el tamaño de los campos es: Doble. El formato: Moneda... Lugares decimales: automático... Por si sirve el dato...

Este es el código que uso para el 10,5 y el 21 %:

                            Dim Cant_Producto As Integer

                            Dim Cod_Producto As Long

                            Dim Desc_Producto As String

                            Dim IVA_Incluido As Long

                            Dim Precio_Producto As Long

                            Cod_Producto = Trim(TxtProductos(0).Text)

                            Desc_Producto = TxtProductos(1).Text

                            Cant_Producto = Val(TxtProductos(2).Text)

                            Precio_Producto = CDbl(TxtProductos(3).Text)

                                If OptIVA(0).Value = True Then 'IVA 10,5

                                    IVA_Incluido = Precio_Producto + CDbl(TxtProductos(3).Text * 0.105)

                                   Set RstProductos = New ADODB.Recordset

                                    StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Unitario,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & "," & CDbl(Precio_Producto) & "," & CDbl(IVA_Incluido) & ")"

                                    RstProductos.Open StrNuevoProducto, Base, adOpenStatic, adLockOptimistic

                                    MsgBox "El Producto " & frmCompras.TxtProductos(1).Text & " Se ha incorporado al STOCK. ", vbInformation, "ALTA DE PRODUCTOS."

                                    TxtProductos(0).Text = ""

                                    TxtProductos(1).Text = ""

                                    TxtProductos(2).Text = ""

                                    TxtProductos(3).Text = ""

                                    TxtProductos(0).SetFocus

                        End If

                                If OptIVA(1).Value = True Then 'IVA 21%

                                    IVA_Incluido = CDbl(TxtProductos(3)) + CDbl(TxtProductos(3).Text * 0.21)

                                    Set RstProductos = New ADODB.Recordset

                                    StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Unitario,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & "," & CDbl(Precio_Producto) & "," & IVA_Incluido & ")"

                                    RstProductos.Open StrNuevoProducto, Base, adOpenStatic, adLockOptimistic

                                    MsgBox "El Producto " & frmCompras.TxtProductos(1).Text & " Se ha incorporado al STOCK. ", vbInformation, "ALTA DE PRODUCTOS."

                                    TxtProductos(0).Text = ""

                                    TxtProductos(1).Text = ""

                                    TxtProductos(2).Text = ""

                                    TxtProductos(3).Text = ""

                                    TxtProductos(0).SetFocus

MUCHAS GRACIAS! Nuevamente.

1 respuesta

Respuesta
2

Puedes convertir en número a texto usando Str() en vez de CDbl(), o bien, usar Replace() para cambiar las comas por puntos.

Opción 1:

           StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Unitario,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & "," & Str(Precio_Producto) & "," & IVA_Incluido & ")"

Opcion 2:

           StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Unitario,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & "," & Replace(Precio_Producto,",",".") & "," & IVA_Incluido & ")"

No me funcionó... Además traté de diferentes formas...  

Si me puedes ayudar. Gracias!!! Sino, gracias también!!!

Disculpa, porque te di una solución incompleta: tienes que usar cualquiera de las dos funciones en cada uno de los valores que puedan contener decimales, y no solamente en el cuadro de texto precio_producto como te indicaba antes.

Hola Amigo!!! Me funcionó... Si bien el código así como está no me está agregando el registro... Que ahora voy a hacer la consulta... Así como está, me muestra que el valor ahora lo toma con coma... 

StrProductoExistente = "SELECT Cod_Producto FROM PRODUCTOS where Cod_Producto =" & TxtProductos(0).Text
Set RstProductoExistente = New ADODB.Recordset
RstProductoExistente.Open StrProductoExistente, Base, adOpenStatic, adLockOptimistic
With RstProductoExistente
If .BOF = False Or .EOF = False Then
MsgBox "El Código: " & !Cod_Producto & " ya existe. Ingrese un nuevo código ", vbInformation, "ALTA PRODUCTOS."
TxtProductos(0).Text = ""
TxtProductos(0).SetFocus
'txtModAfiliado(0).SetFocus
Exit Sub
Else
If ChkIVA(0).Value Then
Cod_Producto = Trim(TxtProductos(0).Text)
Desc_Producto = TxtProductos(1).Text
Cant_Producto = Val(TxtProductos(2).Text)
Precio_Producto = CDbl(TxtProductos(3).Text)
IVA_Incluido = CDbl(Precio_Producto) + CDbl(Precio_Producto) * 0.105
MsgBox IVA_Incluido
Set RstProductos = New ADODB.Recordset
StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Unitario,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & "," & CDbl(Precio_Producto) & "," & CDbl(IVA_Incluido) & ")"
MsgBox StrNuevoProducto
RstProductos.Open StrNuevoProducto, Base, adOpenStatic, adLockOptimistic
MsgBox RstProductos
MsgBox "El Producto " & frmCompras.TxtProductos(1).Text & " Se ha incorporado al STOCK. ", vbInformation, "ALTA DE PRODUCTOS."
TxtProductos(0).Text = ""
TxtProductos(1).Text = ""
TxtProductos(2).Text = ""
TxtProductos(3).Text = ""
TxtProductos(0).SetFocus
Set RstMaxProducto = New ADODB.Recordset
StrMaxProducto = "Select Max(Cod_Producto) As Maximo From PRODUCTOS"
RstMaxProducto.Open StrMaxProducto, Base, adOpenStatic, adLockBatchOptimistic
End If
If ChkIVA(1).Value Then
Cod_Producto = Trim(TxtProductos(0).Text)
Desc_Producto = TxtProductos(1).Text
Cant_Producto = Val(TxtProductos(2).Text)
Precio_Producto = CDbl(TxtProductos(3).Text)
IVA_Incluido = CDbl(Precio_Producto) + CDbl(Precio_Producto) * 0.21
MsgBox IVA_Incluido ' LO USO PARA VER EL VALOR DEL IVA... Y me está mostrando el valor correcto.
Set RstProductos = New ADODB.Recordset
StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Unitario,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & "," & CDbl(Precio_Producto) & "," & CDbl(IVA_Incluido) & ")"
MsgBox StrNuevoProducto
RstProductos.Open StrNuevoProducto, Base, adOpenStatic, adLockOptimistic
MsgBox RstProductos
MsgBox "El Producto " & frmCompras.TxtProductos(1).Text & " Se ha incorporado al STOCK. ", vbInformation, "ALTA DE PRODUCTOS."
TxtProductos(0).Text = ""
TxtProductos(1).Text = ""
TxtProductos(2).Text = ""
TxtProductos(3).Text = ""
TxtProductos(0).SetFocus
Set RstMaxProducto = New ADODB.Recordset
StrMaxProducto = "Select Max(Cod_Producto) As Maximo From PRODUCTOS"
RstMaxProducto.Open StrMaxProducto, Base, adOpenStatic, adLockBatchOptimistic
End If
End If
If RstMaxProducto.State = adStateOpen Then RstMaxProducto.Close
Set RstMaxProducto = Nothing
End With

En este código que pones ahora, no estás aplicando ninguna de las soluciones que te di (o Str() o Replace()) al crear la SQL, por eso el MsgBox te los muestra con comas

¡Gracias de nuevo!! Lo seguí probando como lo había resuelto y me tiró error... Luego de probar varias cosas... Le hice la modificación con str y, ahora me funcionó... La función replace no me la reconoce VB 6... 

Pego el código del INSERT. Gracias nuevamente!!!! Saludos!!!

StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Parcial,IVA_Incluido) VALUES ('" & Cod_Producto & "','" & Desc_Producto & "'," & Cant_Producto & ",'" & Str(Precio_Producto) & "'," & Str(IVA_Incluido) & ")"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas