modificar datos sql

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola amigos toy haciendo una miniagenda y guardando datos en sql, pero tengo una duda con el boton guardar editar
--cuando quiero modificar los datos, lo hace pero me crea un nuevo registro, como puedo solucionar esto...yo solo quiero modificarlo al ya creado y no andar borrando luego el existente... este es mi codigo en boton guardar... lo he intentado de varias formas pero siempre me crea un nuevo registro...

gracias
snombre= Input.GetText ("Input_nombre");
sestado= ComboBox.GetText ("ComboBox_estado");
scelular= ComboBox.GetText ("ComboBox_celular");
sciudad= ComboBox.GetText ("ComboBox_ciudad")



if bNewRecord then

    SQLite.Query(db,"insert into Contactos values(NULL, '"..snombre.."','"..sestado.."','"..scelular.."','"..sciudad.."')");
	nLastError = Application.GetLastError();
	
	if nLastError ~= SQLite.OK then
	Dialog.Message("Error"..nLastError, SQLite.GetLastErrorString());
	Dialog.TimedMessage("Informe", "Felicidades se a agreado "..snombre.." con exito", 2000, MB_ICONINFORMATION)
end
else

    SQLite.Query(db,"insert or replace into Contactos values('"..nRecordID.."','"..snombre.."','"..sestado.."','"..scelular.."','"..sciudad.."')");
	
	if nLastError ~= SQLite.OK then
	Dialog.Message("Error"..nLastError, SQLite.GetLastErrorString());
	Dialog.TimedMessage("Informe", "Felicidades se a agreado "..snombre.."' con exito", 2000, MB_ICONINFORMATION)
end
end
HIDE: ON
Hidebb Message Hidden Description



Imagem
Imagen
exelente dripro!!!! muchas gracias a la perfeccion tu ejemplo....
aunque lo probe en mi pagina y no funciona el correctamente el boton guardar y modificar... me parece que esto es sqlite3 y yo uso sqlite... hay una palabra que me da errors Pesquisar() que no se que significa
Hola valetodo78 pues bien verás, de tu código no sé de donde venga la variable bNewRecord pero puedo comprender que debe contener true para que se guarden las modificaciones y false para que agregue una nueva entrada. No está mal tu código, el problema es tu secuencia SQL (Query), esa si está mal.
SQL (por sus siglas en inglés Structured Query Language; en español lenguaje de consulta estructurada) es un lenguaje específico del dominio que da acceso a un sistema de gestión de bases de datos relacionales que permite especificar diversos tipos de operaciones en ellos. En lua, en tu caso específico usas SQL en el plugin SQLite.Query()

Existen cuatro operadores básicos en éste Lenguaje que permite a los usuarios consultar o modificar datos en el gestor de Bases de Datos:
Imagen

Propiedades del operador UPDATE:
Imagen

Pues bien, ahora vamos con un ejemplo

Tenemos una base de datos ficticia de los clientes de X empresa, el nombre de la tabla es Customers.
Imagen

Necesitamos cambiar los datos del cliente Antonio Moreno Taquería pues ha cambiado de recidencia mudando de páis. Lo que necesitamos es modificar los datos de las columnas Address, City, PostalCode y Country por 53122 Cra. 77d, Medellín Antioquia, 050015, Colombia respectivamente pues bien, ahora con los datos que tenemos ejecutaremos nuestra secuencia SQL.

Código: Seleccionar todo

UPDATE Customers SET Address = '53122 Cra. 77d', City = 'Medellín Antioquia', PostalCode = '050015', Country = 'Colombia' WHERE CustomerID = 3;
Pues bien con esa explicación espero que hayas comprendido tu error, sino pues coméntalo y seguiré intentando sacarte de dudas, de igual manera te recomiendo investigar y aprender un poco mas sobre las secuencias SQL puesto es que un mundo muy amplio de posibilidades las que nos provee.
hola dowsher
ehhh entonces saco Replace y pongo update??
SQLite.Query(db, "INSERT or REPLACE INTO Contactos values('"
Como te dije, no sé como obtienes bNewRecord, si de donde lo obtienes le das el valor false entonces si tienes que cambiar SQLite.Query(db, "INSERT or REPLACE INTO Contactos values('" por UPDATE pero si es true entonces debes cambiar SQLite.Query(db,"insert into Contactos values(" lo que debes cambair.
este codigo lo tengo en project ... action
bNewRecord = true;
Pero para que la usas? Si siempre es true entonces no encuentro motivo para tenerla... Y si siempre vale true entonces debes cambairla en SQLite.Query(db,"insert into Contactos values("
valetodo78 escribió:
04 Ene 2018 06:10
este codigo lo tengo en project ... action
bNewRecord = true;
Evidentemente bNewRecord se usa para identificar si lo que estamos haciendo es agregar o modificar un registro, en ese orden de ideas:
if bNewRecord then
       SQLite.Query(db, 'INSERT INTO Contactos...'
else
      SQLite.Query(db, 'UPDATE Contactos...'
end
En el botón de modificar va la asignación:
bNewRecord = false
Entonces quedaria algo asi??? y saco el bNewRecord de action

BOTON NUEVA ENTRADA
bNewRecord = true;

Input.SetText("Input_nombre","" );
ComboBox.SetText("ComboBox_estado","" );
ComboBox.SetText("ComboBox_celular","" );
ComboBox.SetText("ComboBox_ciudad","" )
BOTON GUARDAR
bNewRecord = true;

snombre= Input.GetText ("Input_nombre");
sestado= ComboBox.GetText ("ComboBox_estado");
scelular= ComboBox.GetText ("ComboBox_celular");
sciudad= ComboBox.GetText ("ComboBox_ciudad")



if bNewRecord then

    SQLite.Query(db,"insert into Contactos values(NULL, '"..snombre.."','"..sestado.."','"..scelular.."','"..sciudad.."')");
	nLastError = Application.GetLastError();
	
	if nLastError ~= SQLite.OK then
	Dialog.Message("Error"..nLastError, SQLite.GetLastErrorString());
	Dialog.TimedMessage("Informe", "Felicidades se a agreado "..snombre.." con exito", 2000, MB_ICONINFORMATION)
end
else

    SQLite.Query(db,"update into Contactos values('"..nRecordID.."','"..snombre.."','"..sestado.."','"..scelular.."','"..sciudad.."')");
	
	if nLastError ~= SQLite.OK then
	Dialog.Message("Error"..nLastError, SQLite.GetLastErrorString());
	Dialog.TimedMessage("Informe", "Felicidades se a agreado "..snombre.."' con exito", 2000, MB_ICONINFORMATION)
end
end
BOTON MODIFICAR
bNewRecord = false;

snombre= Input.GetText ("Input_nombre");
sestado= ComboBox.GetText ("ComboBox_estado");
scelular= ComboBox.GetText ("ComboBox_celular");
sciudad= ComboBox.GetText ("ComboBox_ciudad")



if bNewRecord then

    SQLite.Query(db,"insert into Contactos values(NULL, '"..snombre.."','"..sestado.."','"..scelular.."','"..sciudad.."')");
	nLastError = Application.GetLastError();
	
	if nLastError ~= SQLite.OK then
	Dialog.Message("Error"..nLastError, SQLite.GetLastErrorString());
	Dialog.TimedMessage("Informe", "Felicidades se a agreado "..snombre.." con exito", 2000, MB_ICONINFORMATION)
end
else

    SQLite.Query(db,"update into Contactos values('"..nRecordID.."','"..snombre.."','"..sestado.."','"..scelular.."','"..sciudad.."')");
	
	if nLastError ~= SQLite.OK then
	Dialog.Message("Error"..nLastError, SQLite.GetLastErrorString());
	Dialog.TimedMessage("Informe", "Felicidades se a agreado "..snombre.."' con exito", 2000, MB_ICONINFORMATION)
end
end
En el botón de guardar debes poner lo que pusiste en el de modificar.

A menos que el botón de modificar sea para guardar y modificar, de lo contrario te basta con un botón.

Sube el apz y te lo corrijo
gracias Thedary ya he solucionado esto, gracias a todos... le busque la vuelta hasta que andubo y ahora entendi un par de cosas
De nada, te recomiendo usar luasql que es más actual y más completo un saludo.

Código: Seleccionar todo

http://keplerproject.github.io/luasql/
:pc: ...
tnks m8
thnkssssssssssssssss