Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   modificar registros query (https://www.clubdelphi.com/foros/showthread.php?t=53798)

Buelos 01-03-2008 01:49:38

modificar registros query
 
hola a todos les agradezco me puedan brindar su colaboracion en un tema que ya lleva tiempo que no puedo solucionar y eh tratado de buscar por todos lados documentacion acerca del tema pero no me ah servido de mucho, sucede que tengo en mi aplicacion una tabla estudiantes que tiene login y contraseña y deseo que el usuario pueda cambiar el login asociado, para esto utilizo la clausula update de sql para modificar el login del usuario, el codigo que utilizo es el siguiente.

procedure modificardatos();

begin

//form4.Query2.Open;
form4.Query2.RequestLive:=true;
form4.Query2.ExecSQL;
form4.Query2.ParamByName('login1').AsString:= form4.Edit6.Text;
form4.Query2.ParamByName('nuevo').AsString:= form4.Edit3.Text


end;

y la consulta sql en el query 2 es la siguiente


UPDATE ESTUDIANTES
SET LOGIN = nuevo
WHERE LOGIN = : login1

aun asi al ejecutar el procedimiento me dice siempre que hay un error en login1 por favor les agradezco infinitamente su colaboracion ya que esto metiene barado hace dias.

Buelos 01-03-2008 01:56:08

Error
 
se me olvidaron los dos puntos en una linea
en realidad la tengo asi
UPDATE ESTUDIANTES
SET LOGIN = : nuevo
WHERE LOGIN = : login1

Caral 01-03-2008 03:30:42

Hola
Código Delphi [-]
form4.Query2.RequestLive:=true;
form4.Query2.ParamByName('login1').AsString:= form4.Edit6.Text;
form4.Query2.ParamByName('nuevo').AsString:= form4.Edit3.Text;
form4.Query2.ExecSQL;
Saludos

Delphius 01-03-2008 03:33:16

Hola Buelos,
Veo por ahora dos errores:

1. Los parámetros se identifican por dos puntos y sin espacios. Es decir:

Código SQL [-]
Update ESTUDIANTES
set Login = :nuevo
where Login = :login1

Pero esto posiblemente deje una inconsistencia (¿Que pasa si dos usuarios tienen el mismo Login?), lo más habitual, y lógico, es filtrar por el identificador del usuario:

Código SQL [-]
where Login = :login1 and id = :id_usuario

2. La asignación de los parámetros deben ir antes de la orden ExeqSQL.

Por otro lado te pediría que por favor emplearas las etiquetas DELPHI y SQl según sea el caso.

Y disculpa que te pregunte, pero... ¿que es Login? ¿El campo de la contraseña? Esto te lo pregunto porque tu dices esto:

Cita:

sucede que tengo en mi aplicacion una tabla estudiantes que tiene login y contraseña y deseo que el usuario pueda cambiar el login asociado
:confused: Hay algo de ese texto que no logro entender.

Por ahora veo eso.
Espero que nos comentes tus novedades.

Saludos,

keyboy 01-03-2008 08:49:58

Yo ceo que por "login" se refiere a lo que tú llamas id_usuario. Vamos que Delphius es tu login como keyboy es el mio y Buelos el de él. Y claro, no puede haber dos "login" iguales, así que Buelos debe tener eso en cuenta porque ese UPDATE puede generar un problema de llave si alguien quiere usar un login ya exstente.

Por otra parte, ese RequestLive está de más, sólo se usa para consultas SELECT, no para consultas que modifican datos.

Bye

Buelos 02-03-2008 00:25:26

nada todavia
 
Muchas gracias a todos por su ayuda, keyboy tiene razon cuando explica a que me refiero con login es como el id del usuario y si este no puede ser el mismo para dos usuarios, resulta que eh echo lo que uds me recomiendan pero al poner la clausula
form4.Query2.ExecSQL;
al final del procedimiento me arroja un error de 'misin operator o semicolon'. Les agradezco infinitamente su ayuda.

Buelos 02-03-2008 00:48:48

ahora si.
 
no, que pena con uds
pero era un error de un procedure mas arriba pero ya lo arregle y todo quedo perfecto, en serio muchichisisisismas gracias, a todos por su colaboracion me servio demasiado mil gracias chao

Buelos 02-03-2008 00:50:16

el error
 
el error era la posicion de la clausula execsql y lo de los dos puntos gracias por todo les debo como 100.:D

Caral 02-03-2008 00:52:00

Hola
Lo que no entiendo es para que hacer un update si se puede hacer con un simple edit, ya que se trata de un solo registro.
Código Delphi [-]
form4.Query2.Sql.Text:= 'Select * From Estudiantes where login = :Log';
form4.Query2.Parameters[0].Value:= form4.Edit6.Text;
form4.Query2.Open;
form4.Query2.Edit;
form4.Query2.FileByName('login').Value:= form4.Edit3.Text
form4.Query2.Post;
Saludos


La franja horaria es GMT +2. Ahora son las 10:09:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi