Decimales en SQLite y VB .NET

Entrada corta🙂

Estoy haciendo un sistema de inventario para una empresa. Algo simple (no tiene muchas prestaciones que digamos), y por lo mismo decidí usar SQLite para almacenar la info.

Entre otras cosas, tengo una tabla con valores decimales (REAL) en SQLite.

-- Describe INGRESOS
CREATE TABLE ingresos (
    "ingresos_pk" INTEGER PRIMARY KEY AUTOINCREMENT,
    "ingresos_producto" INTEGER,
    "ingresos_fecha" TEXT,
    "ingresos_precio_un" INTEGER,
    "ingresos_cantidad" INTEGER,
    "ingresos_pm" REAL,
    "ingresos_factura" INTEGER
)

Como ven, ingresos_pm es un REAL que tiene decimales. Hasta ahora todo bien.

Cuando quería ingresar la info desde vb .net , lo hice con un Double. Algo así

Dim saldo As Integer = reader.GetInt32(1) + Integer.Parse(j.Item("Unidades").ToString)
Dim entrada As Integer = reader.GetInt32(0) + Integer.Parse(j.Item("Total").ToString)
Dim pmp As Double = entrada / saldo
Dim sentencia As String = "INSERT INTO ingresos (ingresos_producto, ingresos_fecha, " & _
    "ingresos_precio_un, ingresos_cantidad, ingresos_pm, " ingresos_factura) VALUES(" & _    
    j.Item("Producto").ToString & ", '" & Me.fecha.Text & "', " & j.Item("Precio").ToString  & _
    & ", " & j.Item("Unidades").ToString & ", " & pmp & ", " & pk_factura & ")"
cm = cn.CreateCommand
cm.CommandText = sentencia
cm.ExecuteNonQuery()
cm.Dispose() 

como cualquier persona noob lo haría…

Pero cada vez que lo ejecutaba, me levantaba una exception de que mi ingreso solo tenía 6 columnas, pero yo le enviaba 7 … Extraño😯

Resulta que el Double iba con una coma “,” y por eso no me dejaba guardarlo🙂

La solución ?? Usar parámetros

La sentencia SQL cambió a esto:

Dim sentencia As String = "INSERT INTO ingresos (ingresos_producto, ingresos_fecha, ingresos_precio_un, ingresos_cantidad, ingresos_pm, " & _
    "ingresos_factura) VALUES(" & j.Item("Producto").ToString & ", '" & Me.fecha.Text & "',  " & _
    " & j.Item("Precio").ToString & ", " & j.Item("Unidades").ToString & ", @pmp, " & _
    pk_factura & ")"
cm = cn.CreateCommand
cm.CommandText = sentencia
cm.Parameters.AddWithValue("@pmp", pmp)
cm.ExecuteNonQuery()
cm.Dispose() 

Notan el cambio ? en vez de concatenar tal cual el valor, lo dejé como una referencia (@pmp) y luego lo agregué como parámetro

Y eso fue todo🙂

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Aplicación, SQLite, Tips, VB. Guarda el enlace permanente.

Una respuesta a Decimales en SQLite y VB .NET

  1. J P Herce dijo:

    Me parece que esta entrada me va a ser de mucha ayuda. Pero no especificas cómo te conectatse a sqlite. es decir, no distingo ninguna instrucción donde te conectes a la tabla de sqlite. Mis preguntas son porque estoy haciendo un control desde el vba de excel.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s