Spanish [AHORA SI SOLUCIONADO] otra vez Sqlite

Gustavo

Member
Licensed User
Longtime User
Alquien me puede decier que es este erro
siendo que todas las columnas conicende con el tipo de datos que intento gurarda.-

android.database.sqlite.SQLiteException: near "JUGO": syntax error (code 1): , while compiling: INSERT INTO pedidos (nropedido,codcliente,codarticulo,cantidad,precio,total,detalle) VALUES (5,6027,9238 ,30.013309999999999999,0.03992999999999999,12/16/2014,ACCION JUGO TAN 1X1)

y este es el codigo que uso

For loko = 0 To 18
If Main.ma_pedido(loko).totali > 0 Then
hora = DateTime.Time(DateTime.Now)
fecha =DateTime.Date(DateTime.Now)
fcanti0 = NumberFormat2(Main.ma_pedido(loko).cantiped,0,2,2,True)
fincanti = fcanti0.Trim.Length
fcanti = Espacios(10-fincanti) & fcanti0
fprecio0 = NumberFormat2(Main.ma_pedido(loko).precio,0,2,2,True)
finprecio = fprecio0.Trim.Length
fprecio = Espacios(10-finprecio) & fprecio0
farticulo = Main.ma_pedido(loko).detalle.Replace(","," ")


fdcto0 = NumberFormat2(Main.ma_pedido(loko).dcto,0,2,2,True)
findcto = fdcto0.Trim.Length
fdcto = Espacios(10-findcto) & fdcto0
cquery3 = "UPDATE articulos SET Stock= stock-"&Main.ma_pedido(loko).cantiped&" where codigo = "&Main.ma_pedido(loko).codigoa.Trim
Main.SQL1.ExecNonQuery(cquery3)
cquery7 = "INSERT INTO pedidos (nropedido,codcliente,codarticulo,cantidad,precio,total,detalle) VALUES ("&nropedido&","&fcliente&","&Main.ma_pedido(loko).codigoa&","&Main.ma_pedido(loko).cantiped& _
Main.ma_pedido(loko).precio&","&Main.ma_pedido(loko).totali&","&fecha&","&Main.ma_pedido(loko).detalle.Trim&")"
Main.sql1.ExecNonQuery(cquery7) ## en esta linea me da el error y es cuando agrego la columna detalle de db
End If
Next
desde ya gracias
 

IdasI4A

Active Member
Licensed User
Longtime User
Si construyes tu el INSERT tienes que tener en cuenta que los 'columnas' tipo string tienen que ir entre comillas, osea
B4X:
SQLstr="INSERT INTO Tabla (Codigo, Nombre) VALUES (1,'Nombre uno')"
' o bien
Dim Codigo As Int
Dim Nombre As String
codigo=1
nombre="Nombre uno"
SQLstr="INSERT INTO Tabla (Codigo,Nombre) VALUES (" & codigo & ",'" & nombre & "')"

'pero mejor estaría
SQLstr="INSERT INTO Tabla (Codigo,Nombre) VALUES (?,?)"
Main.SQL1.ExecNonQuery2(SQlstr,Array As Object(codigo, nombre))
 

Gustavo

Member
Licensed User
Longtime User
otra ves yo
disculpen por mi ignorancia que pero esoty aprendiendo recien lo de sqlite
tengo este problema ahora

Sub carga_ventaruta()
Dim mtoventaruta As Double
Dim cqueryvta As String
Dim curvtaruta As Cursor
Dim yacliente As String
Dim loto, jopito,movisitado As Int

ma_clientevisitado.Initialize
ma_clientevisitado.Clear
fechabusco = DateTime.Date(DateTime.Now)
cqueryvta= "SELECT total,codcliente FROM pedidos where fecha = "&fechabusco 'si hago esto no me encuentra nada, siendo que fecha esta definido como texto'
'cqueryvta= "SELECT * FROM pedidos ORDER BY fecha,codcliente" ' query sin ifltro
curvtaruta = Main.SQL1.ExecQuery(cqueryvta)
mtoventaruta = 0
movisitado = 0
For loto = 0 To curvtaruta.RowCount-1
curvtaruta.Position = loto
If curvtaruta.GetString("fecha") = fechabusco Then &&& pero aqui si me encuentra cuando pido el query sin el filtro
yacliente = curvtaruta.Getstring("codcliente")
mtoventaruta = mtoventaruta+curvtaruta.GetDouble("total")
movisitado = 0
jopito = 0
Do While jopito <= ma_clientevisitado.Size-1
If ma_clientevisitado.Get(jopito) = yacliente.Trim Then
movisitado = 1
Exit
End If
jopito = jopito +1
Loop
If movisitado = 0 Then
ma_clientevisitado.Add(yacliente.Trim)
End If
End If
Next
curvtaruta.Close
lventaru.Clear
lventaru.AddSingleLine("Total Venta en La Ruta $ "&NumberFormat(mtoventaruta,1,2))
lventaru.AddSingleLine("Total De Clientes Visitado "&NumberFormat(ma_clientevisitado.Size,3,0))


no se si se entiende, en el query con no me toma nada, y sin filtro y comparando el campo fecha con fecha busco si
gracias de antemano
 

inakigarm

Well-Known Member
Licensed User
Longtime User
Primero has de revisar que la Query sea correcta según la sintaxis de SQLite (https://www.sqlite.org/lang.html)

Yo lo que hago para ver si la query está construida correctamente (muchas veces el problema está en la Query, no en el código) es "logear" la Query y copiar el texto en un gestor de BD para hacer la consulta directamente y ver si funciona

Hay muchos gestores de BD SQlite, tanto en Android como en Windows; uno que me gusta especialmente es una extensión de Mozilla Firefox, SQLite Manager

PD: Mira de utilizar en el editor del post los tags code para formatear el código y se entienda mejor (está en el menú del editor del Post, el q parece una página)
 

Gustavo

Member
Licensed User
Longtime User
si gracias por responder, si yo tembien utilizo el gestor de mozilla, y lo probe alli con la sitaxis correcta y alli si me filtra los datos, por eso me resulta raro, pero bueno ya seguire investigando, gracias por tu aporte, y tendre en cuenta el tag para poder mejorar la lectura del codigo
 

Gustavo

Member
Licensed User
Longtime User
si efectivamente inaki, era solo problema de sintaxsis. pero creo que siempre se apendre algo. gracias
 
Top