PDA

Ver la Versión Completa : Alta de Nuevo usuario ayuda


cristian22
12-06-2016, 23:14:34
Hola buenas tardes estube desarrollando una aplicacion de delphi la cual necesito dar de alta a un nuevo usuario. la aplicacion la desarrolle usando delphi 2010 y componentes query de Zeos para la conexion y consulta a la base de datos de mysql
Bien tengo creado el formulario en el cual dare de alta a los usuarios me funciona bien pero surge un prolema. Quiero restringuir que cuando se de alta a un nuevo usuario si el nombre del mismo esta en uso diga un mensaje que ya es existente para eso utilizo una consulta con un count para que me traiga la cantidad de usuarios existentes y comparar si en dicha cantidad hubo coencidencia, dejo el codigo que desarrolle.



begin
fModulo.qCuentasAux.close;
fModulo.qCuentasAux.SQL.clear;
fModulo.qCuentasAux.SQL.Text:= 'select count(*) as Cantidad from cuentas where cuentas.usuario ='+quotedstr(eUsuario.Text);

fmodulo.qCuentasAux.Prepare;
fModulo.qCuentasAux.Open;
if not fmodulo.qCuentasAux.IsEmpty then
begin
if fmodulo.qCuentasAux.FieldByName('Cantidad').AsInteger=0 then
begin
fModulo.qCuentas.ParamByName('usuario').Value:= eUsuario.Text;
fModulo.qCuentas.ParamByName('contrasenia').Value:= eContrasenia.Text;
fmodulo.qCuentas.Post;
fmodulo.qCuentas.Close;
end;
end
else
showmessage('Usuario Existente');
end;
end;

desde ya muchas gracias

Neftali [Germán.Estévez]
13-06-2016, 10:02:23
Hola y bienvenido a los foros.

Antes de nada, comentar que no dices nada del problema o error que tienes. Has explicado lo que necesitas, has puesto el código, pero te falta la pregunta.

Estás comprobando cosas por duplicado, ya que si el nombre del usuario es clave y no se puede repetir, el IsEmpty y preguntar si ha encontrado alguno (Cantidad > 0) son redundantes, De todas formas, eso no te debería hacer fallar nada.

Por otro lado, si no existe el usuario, a la hora de insretarlo, estás utilizando código que mezcla, inserción normal, con inserción SQL.
No veo que SQL tienes en fModulo.qCuentas.

Si es algo como esto...


INSERT INTO USUARIOS (usuario, contrasenia) VALUES (':usuario, :contrasenia')


En lugar del Post, prueba a realizar un Exec o ExecSQL (o similar dependiendo delos componentes que uses).


if vfmodulo.qCuentasAux.FieldByName('Cantidad').AsInteger=0 then begin
fModulo.qCuentas.ParamByName('usuario').Value:= eUsuario.Text;
fModulo.qCuentas.ParamByName('contrasenia').Value:= eContrasenia.Text;

fModulo.qCuentas.Exec;
o
fModulo.qCuentas.ExecSQL;

fmodulo.qCuentas.Close;
end;