Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Recorrer y comparar datos en un tzquery (https://www.clubdelphi.com/foros/showthread.php?t=90777)

jose001 02-09-2016 07:53:36

Recorrer y comparar datos en un tzquery
 
Hola buenas noches basicamente tengo un formulario en el cual tengo 2 Tedit para hacer un alta de un usuario utilizo un query de componentes zeos
y delphi 2010
en mi base de datos ya tengo creada la tabla
"cuentas" con el siguiente formato
Código SQL [-]
usuario
contrasenia
en mi componente query tengo la siguiente consulta

Código SQL [-]
select 
*
FROM
  `cuentas`
 where usuario = :usuario AND contrasenia = :contrasenia

Bien lo unico que quiero hacer ahora es recorrer dicho query y comparar si el edit llamado eUsuario es igual algun registro de la columna usuario si es igual mostrar un mensaje de que ya existe dicho usuario

e probado el siguiente codigo para esto pero no logro solucionar este planteamiento no se la verdad si no estoy recorriendo bien el query o la consulta esta mal echa alguna ayuda ?

Código Delphi [-]
while qCuentas.Eof do 
 if qCuentas.FieldByName('usuario').AsString=eUsuario.Text then
  begin
showmessage('existe');
else
qCuentas.post;
end;
qCuentas.Next;
end;

olbeup 02-09-2016 09:52:07

Hola Jose001,

Has pasado los parametros de ":usuario y :contrasenia"

La consulta que has puesto sólo te devolvera un registro el cual "while y qCuentas.Next" sobran.

El "Post" que has puesto ahí, no hara nada e incluso te puede dar algún error por que no esta en modo de edición.

Utiliza INSERT INTO en vez de "Post", he supuesto que sabes SQL.

Un saludo.

jose001 02-09-2016 21:36:53

Gracias
 
Cita:

Empezado por olbeup (Mensaje 508394)
Hola Jose001,

Has pasado los parametros de ":usuario y :contrasenia"

La consulta que has puesto sólo te devolvera un registro el cual "while y qCuentas.Next" sobran.

El "Post" que has puesto ahí, no hara nada e incluso te puede dar algún error por que no esta en modo de edición.

Utiliza INSERT INTO en vez de "Post", he supuesto que sabes SQL.

Un saludo.

Al query si lo tengo en modo de insert y activado antes del ciclo. las secuencias sql las entiendo lo que no entiendo bien es como recorrer los query y utilizar un if dentro para comparar un dicho campo. Sin necesidad de utilizar una instruccion "sql.add"

ecfisa 02-09-2016 22:54:49

Hola jose001.

Creo que no has entendido lo que te sugirió olbeup...

Comprendo que deseas avisar si el usuario existe o, modo contrario agregarlo. Si interpreté bién, sería algo parecido a esto:
Código Delphi [-]
...
 // Buscar el usuario:
  tuQuery.Close;
  tuQuery.SQL.Clear;
  tuQuery.SQL.Add('SELECT * FROM CUENTAS');
  tuQuery.SQL.Add('WHERE USUARIO = :USER');
  tuQuery.ParamByName('USER').AsString := eUsuario.Text;
  tuQuery.Open;

  if not tuQuery.IsEmpty then  
    ShowMessageFmt('El usuario %s ya existe',[eusuario.Text])  // el usuario existe, mostrar mensaje
  else                                                         // el usuario no existe, agregarlo
  begin
    tuQuery.Close;
    tuQuery.SQL.Clear;
    tuQuery.SQL.Add('INSERT INTO CUENTAS(USUARIO, CONTRASENIA)');
    tuQuery.SQL.Add('VALUES(:USER, :CONT)');
    tuQuery.ParamByName('USER').AsString := eUsuario.Text;
    tuQuery.ParamByname('CONT').AsString := eContrasenia.Text;
    tuQuery.ExecSQL;
  end;
...

Saludos :)


La franja horaria es GMT +2. Ahora son las 10:02:50.

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