Hola a todos, tengo el siguiente problema ,si alguien me da una mano se lo agradezco de ante mano, tengo la siguiente cdigo para actualizar una base de datos en un bebelbutton en action y no hace ningun cambio, que estoy haciendo mal? estoy trabado en esto!
Dim sql As String
sql = "UPDATE lista SET rubro=comborubro.text WHERE id=2
sql = "UPDATE lista SET rubro='"+comborubro.text+"' WHERE id=2"
Hola Jose, probe y tampoco funciona…
Que tipo de objeto es: comborubro ?
No te devuelve ningún error de runtime ?
Falta código para ejecutar la sentencia… los estas obviando ? (mejor pon todo el código que tienes en el action del botón)
Activa el log de errores de la base de datos para que sepas que sentencia es la que esta
ejecutando el motor de la DB.
Creo que puede ser slo los apstrofes en el cdigo …
sql = "UPDATE lista SET rubro = " + comborubro.text + " where id = 2"
comborubro es un bevelbutton, no me devuelve ningun error de runtime, con respecto que falta codigo para ejecutar la sentencia, el codigo lo tengo en action y tengo lo siguiente:
Dim sql As String
sql = “UPDATE lista SET rubro=” + comborubro.text + " WHERE id=2"
mDB.SQLExecute(sql)
Busque algun ejemplo que trae xojo para aprender y guiarme, y no encontre nada sobre update…
Tengo sentencia SQL similar y funciona sin problema.
Si la variable comborubro es un objeto bevelbutton, ese no tiene la propiedad text,
http://documentation.xojo.com/index.php/BevelButton
por lo tanto ni siquiera te dejara compilar, es importante que pongas el cdigo tal y como lo usas para
poderte ayudar.
Deber indicar en la sentencia SQL los apostrofes que inclu en la primera respuesta,
pues estas ingresando un valor TEXTO, por lo tanto es imprescindible que tenga los
apostrofes si usas MySQL.
Si usas MSSQL prueba con:
sql = 'UPDATE lista SET rubro="'+comborubro.text+'" WHERE id=2'
Por ultimo, te recomiendo que leas la ayuda en linea donde se incluye codigo para probar:
http://documentation.xojo.com/index.php/Database.SQLExecute
en este link se muestra la forma de saber si tu sentencia SQL esta correcta y se logro ejecutar.
Jose perdn me exprese mal, la sentencia del bevelbutton esta en action , pero comborubro.text es un combobox, lo prob tambin con un textfield, pero no tuve ningn resultado…
¿Qué tipo de error te refieres? ¿Una Excepción? ¿O el valor que te devuelve la clase DB?
If mDb.Error Then
MsgBox("Error: " + Str(mdb.ErrorCode) + " - " + mdb.ErrorMessage)
End If
Que pasa si añades esto?
Disculpen la tardanza en contestar, no tenia internet, el codigo que tengo es el siguiente
Dim sql As String
sql = “UPDATE lista SET rubro=” + comborubro.text + " WHERE Id=2"
mDB.SQLExecute(sql)
If IsConnected Then
mDB.SQLExecute(sql)
If mDB.Error Then
Adddatastatuslabel.Text = "DB Error: " + mDB.ErrorMessage
Return
End If
Adddatastatuslabel.Text = "successfully."
Else
MsgBox(“Connect to the database first.”)
End If
Por alguna razon solo me acepta el cambio si es numerico, donde pongo alguna palabra como por ejemplo casa me dice el siguiente error"DB Error unknown column casa
in field list", pero si inserto un dato nuevo no tengo problemas, solo me pasa con UPDATE, que puede ser?
Hola,
come ya te a dicho Jos Luis Sosa Guerrero ,
si el valor es un texto tienes que poner el text entre ‘’
sql = “UPDATE lista SET rubro=’”+comborubro.text+"’ WHERE id=2"
asi que, poniendo que el text sea casa, el comando sql sea:
UPDATE lista SET rubro= ‘casa’ WHERE id=2
como lo estas haciendo tu, el comando es:
UPDATE lista SET rubro = casa WHERE id=2
que te da error, porque el db cree que quires poner en el campo rubro el valor de otro campo que se llama casa, que no existe.
no te da el error con numeros porque poner un valor numerico sin ‘’ es aceptado
UPDATE lista SET rubro = 12345 WHERE id=2
funciona
Giulio
Giulio Muchas gracias! Funciono de maravilla!
Otra consulta, si tengo un codigo largo como hago para que continue en el siguiente renglon, ejemplo sql = “UPDATE lista SET rubro=’” + comborubro.text + “’,codigo=’” + campocodigo.text + “’,codigo_barras=’” + campobarras.text + y sigo agregando en xojo como continuo en el siguiente renglon? gracias a todos por el aporte, estoy aprendiendo mucho gracias a ustedes.
no te entiendo en lo que es renglon, soy italiano
si entiendes come puedes andar a otra riga con un codigo muy largo en xojo puedes usare _ y andar a linea siguiente,
sql = “UPDATE lista SET rubro=’” + comborubro.text _
- “’,codigo=’” + campocodigo.text _
- “’,codigo_barras=’” + campobarras.text
u puedes anadir texto a la variable en distintas lineas asi:
sql = “UPDATE lista SET rubro=’” + comborubro.text
sql = sql + “’,codigo=’” + campocodigo.text
sql = sql + …
De todas formas,
en vez de crear un codigo muy largo que puede dar errores,
te aconsejo de usar edit - update
con esta forma puedes editar directamente un recordset, sin crear el codigo mysql…
y en esta forma no tiene que preocuparte del escape de caracters especiales como el ', si tienes que inserir un texto que contine ', como por ejempli ca’sa, como lo estas aciendo ahora te va a dar error…
Usar un ORM es lo idneo en Xojo. Si no, como bien dice @GiulioMastrosanti tiendes a crear cdigo spaghetti infumable.
Te evitas complicaciones de estas… Bob Keeney tiene ActiveRecord que funciona muy bien.
De nada, como Italiano el cdigo spaghetti es my especialidad…
Giulio probe las dos formas que me comentaste y me dio error de sintaxis mysql…que podra ser, le falta algo al ejemplo que me enviaste? gracias
El mismo metodo tengo con insert
sql = “INSERT INTO lista (”
sql = sql + “rubro, codigo,codigo_fabrica,codigo_barras,modelo,descripcion,unidades,marca,stock,dolares,pesos,descuento,iva,total,fecha”
sql = sql + “) VALUES (”
sql = sql + “’” + (comborubro.Text) + "’, "
sql = sql + “’” + (campocodigo.Text) + "’, "
sql = sql + “’” + (campocodfab.Text) + "’, "
pero con update me da error de sintaxis