Delphi - Ayuda con Alta de usuario

 
Vista:

Ayuda con Alta de usuario

Publicado por juan (33 intervenciones) el 21/10/2016 23:31:04
Hola buenas tardes tengo un formulario que creo usuarios a los cuales por entendido se le asigna un usuario y contraseña vale la redundancia. al dar el boton aceptar compruebo si ya existe un usuario en la base si es asi le muestro un mensaje al usuario que cargue otro si no doy el alta. utilizo componentes query de zeos al cual lo llamo qCuentas
el codigo que desarrolle es el siguiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
begin
qCuentas.close;
qCuentas.SQL.clear;
qCuentas.SQL.Add('select * from cuentas');
qCuentas.SQL.Add('where usuario= :user');
qCuentas.ParamByName('user').AsString:= eUsuario.text;
qCuentas.Open;
if not qCuentas.IsEmpty then
showmessage('el usuario existe');
end else
begin
qCuentas.ParamByName('usuario').Value:=eUsuario.Text
qCuentas.ParamByName('pass').Value:=ePass.Text
end;
end;

al desarrollar este codigo cuando quiero dar aceptar me dice lo siquiente qCuentas.Parameter "usuario" not found
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con Alta de usuario

Publicado por E.T. (1201 intervenciones) el 23/10/2016 17:20:27
Tu codigo está incompleto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
begin
  qCuentas.close;
  qCuentas.SQL.clear;
  qCuentas.SQL.Add('select * from cuentas');
  qCuentas.SQL.Add('where usuario= :user');
  qCuentas.ParamByName('user').AsString:= eUsuario.text;
  qCuentas.Open;
  if not qCuentas.IsEmpty then
    showmessage('el usuario existe');
  end else begin
    qCuentas.close;
    qCuentas.SQL.clear;
    qCuentas.SQL.Add('insert into cuentas (usuario, password) values(:usuario, :password)');
    //en la linea de arriba, sustituye los campos por los que realmente tiene tu tabla, pues yo puse esos como ejemplo
    qCuentas.ParamByName('usuario').Value:=eUsuario.Text;
    qCuentas.ParamByName('password').Value:=ePass.Text;
    qCuentas.ExecSQL;//<<-----Esta linea no recuerdo si es asi, si no busca una similar (executesql por ejemplo) no se usa el open aqui
  end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias

Publicado por juan (33 intervenciones) el 23/10/2016 18:48:46
una pregunta mas el codigo anda perfecto gracias. para terminar de refinarlo en el mismo formulario tengo un dblookupComboBox el cual en sus propiedades tiene
datasource: dsCuentas
datafield: idempleado
keyfield idempleado
listfield apellido
listsource: dsCuentasAux
lo que hago con esto es al abrir el formulario de alta de usuario listo en ese componente todos los empleados que no tienen cuenta creadas
con el codigo que me diste creo todo perfecto pero como podria hacer que tambien se me cargue el id guardado en el dblookupCombobox en la tabla cuentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias

Publicado por E.T. (1201 intervenciones) el 23/10/2016 20:57:06
Dando un refresh al query de tu combobox cuando guardes una nueva cuenta.
Query.Refresh;
si no te funciona deberas cerrar y abrir
Query.Close;
Query.Open;
Repito, eso lo debes hacer con el query que alimenta a tu combobox, pero no recuerdo cual ya que son dos, el listsource y el datasource, prueba con uno, si no con el otro y si no, con ambos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias por responder

Publicado por juan (33 intervenciones) el 23/10/2016 21:07:34
no esto no soluciono ese problema me carga datos y en el idempleado queda en null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran
Val: 18
Ha aumentado 1 puesto en Delphi (en relación al último mes)
Gráfica de Delphi

gracias por responder

Publicado por fran (10 intervenciones) el 24/10/2016 01:10:30
Si en el dblookupcmbobox cargas los empleados que no tienen cuenta, entonces al actualizar el dataset asociado al listsource
no te aparecerá el id del nuevo empleado con cuenta...hagas lo que hagas te asignará null al no localizarlo..

<lo que hago con esto es al abrir el formulario de alta de usuario listo en ese componente todos los empleados que no tienen cuenta creadas
con el codigo que me diste creo todo perfecto pero como podria hacer que tambien se me cargue el id guardado en el dblookupCombobox en la tabla cuentas>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias por responder

Publicado por juan (33 intervenciones) el 24/10/2016 01:59:22
y como puedo hacer para que me lo asigne ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran
Val: 18
Ha aumentado 1 puesto en Delphi (en relación al último mes)
Gráfica de Delphi

gracias por responder

Publicado por fran (10 intervenciones) el 24/10/2016 16:34:35
Si quieres que aparezca el id en el dblookupcombobox del usuario recien insertado, además de tener correctamente config. el dblookupcbb
tienes que hacer lo que te comento el otro forista pero cambiando la sql del list source x que sino la query no te va a traer el id del empleado recien insertado, solo los que no tienen cuenta.

Salud
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias por responder

Publicado por juan (33 intervenciones) el 24/10/2016 17:20:08
no creo que me entendiste mal o yo interprete mal tu respuesta. No quiero mostrar el id en el dblookupcombobox lo que quiero es insertar ese id en la tabla usuario que es la clave foranea que une la tabla empleados con la tabla cuenta.Cuyo id esta guardado en el dblookup con la configuracion de sus propiedades
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar