Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2005
Jeswon Jeswon is offline
Registrado
 
Registrado: oct 2005
Posts: 4
Poder: 0
Jeswon Va por buen camino
Smile Crear Inicio de Sesion Propio.

Hola amigos.

La verdad es que soy un novato en esto de la programación he hecho algunos programillas de hoby, pero nada de aplicacion real, ahora quiero inentar crear una aplicación en la cual me pida un nombre de usuario y contraseña para acceder al pograma.

Lo he heho en Delphi 5 de la siguiente manera:

1.- Cree una Tabla con el DataBase Desktop llamada Acceso.dbf (basada en DBase IV, esta Incluye 3 campos, el primero se llama IDACCESO el cual defini como Char y 10 caracteres de longitud, lo puse como indexado unico y el mismo tag del index. El segundo Campo se llama Usuario es de tipo char y 15 de longitud, y el tercero se llama Contraseña y tiene los mismos atributos que "Usuario" y los 2 estan indexados con su mismo nombre de campo y solo Maintenance.

2.- En mi formulario principal (el de Login) coloque 2 Labels etiquetados como usuario y contraseña, 2 Edit (uno para User y otro para password), 2 Botones uno para aceptar y el cancel, coloque un componente Table y un Data Source.

3.- Apunte el Table al Alias que cree para la Base de Datos el cual llame pruebas y seleccione la tabla que se llama acceso.dbf, el Data Source lo apunte al Table.

4.- En el Botón de Aceptar le coloque el siguiente Codigo para realizar la validación de el User y el Password, la validación la realice localizando en la base de datos el texto escrito en los edit realizando la busqueda en el campo correspondiente, para una mejor idea aqui les pongo el codigo:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   If Table1.Locate('Usuario',Edit1.Text,[]) And
     Table1.Locate('Contraseña',Edit2.Text,[]) Then
   Begin
     Form2.Show;
   End
   Else
     Edit1.SetFocus;
   Edit2.Text:='';
   Edit1.Text:='';
 end;
 
 end.
Esto lo que hace es que el texto escrito en el edit1 lo localiza en el campo usuario de la base de datos y el texto del edit2 lo localiza en el campo contraseña de la misma base de datos, si encuentra los 2 datos me muestra el siguiente formulario pero si no encuentra los 2 datos borra los 2 edit y me coloca el cursor en el edit1 para intentar de nuevo aunque encuentre uno no muestra el siguiente form, hasta aqui voy bien pero el problema es que aunque el usuario y la contraseña no esten relacionados entre si mientras estos se encuentren en los campos especificados cumple la funcion de mostrar el siguiente formulario.

Mi pregunta es como puedo hacer para que me relacione el usuario con la contraseña especificos, diciendolo de otra manera como hago para que me relacione el usuario del primer registro con la contraseña del primer registro y asi sucesivamente para tener una lista amplia de usuarios para mi aplicacion.

Se que para esto existen otras soluciones como realizar esa funcion de login con InterBase o SQL pero me gustaria realmente hacerlo a mi manera por 2 razones: falta de conocimiento en estas 2 soluciones y la otra por comodidad de realizar mis propios logueos sin necesidad de un intermediario si no hacerlo de forma directa de mi aplicacion. Digamos pues que es un deseo mio de sufrir un poco para la adquisicion de nuevos conocimientos ya he leido el foro y ahi si encontre de como hacerlo con SQL e InterBase. Pero pues no Tiene mucho significado para mi si no se como se lleva a cabo esta funcion de una manera basica.

Última edición por dec fecha: 13-10-2005 a las 21:15:43. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 13-10-2005
Johnny Q Johnny Q is offline
Miembro
 
Registrado: may 2005
Ubicación: Colombia
Posts: 172
Poder: 19
Johnny Q Va por buen camino
Hola

Se me ocurre que depronto puedes utilizar un locate que encuentra una combinacion de campos, el siguiente codigo podria servirte:
Código:
 Table1.Locate('campo1;campo2', VarArrayOf([Edit1.Text, Edit2.Text]), [])
Saludos
Responder Con Cita
  #3  
Antiguo 14-10-2005
Jeswon Jeswon is offline
Registrado
 
Registrado: oct 2005
Posts: 4
Poder: 0
Jeswon Va por buen camino
Gracias.

Johnny Q Muchas Gracias, por la ayuda pondre en practica el codigo y haber que sale espero me sirva de mucho.
Responder Con Cita
  #4  
Antiguo 14-10-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto....

Para que te relacione el password con el usuario, solo tienes que agregar una tabla dentro de tu base de datos donde contenga los 2, yo uso la siguiente estructura, CVEUSUARIO, NOMBREUSUARIO, PASSWORD al buscarlo con un locate al usuario sólo asignas el password que tiene, te recomiendo usar los querys de ibx, fibplus ó bde, son más rápidos que un locate....

Saludos....
Responder Con Cita
  #5  
Antiguo 14-10-2005
Jeswon Jeswon is offline
Registrado
 
Registrado: oct 2005
Posts: 4
Poder: 0
Jeswon Va por buen camino
Thumbs up Si Sirvio Mil Gracias.

Utilice el Codigo que me escribiste Johnny Q y si me sirvio como yo lo queria, y diras que soy encajoso pero me gustaria que asi como tengo el codigo ahora, cuando yo escriba el usuario no importe si lo pongo en mayusculas o minusculas el programa me lo acepte pero no suceda lo mismo con la contraseña. Bueno el codigo quedo de esta manera con la ayuda que me diste:

Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
 If Table1.Locate('Usuario;Contraseña',VarArrayOf([Edit1.Text, Edit2.Text]),[])Then
   Begin
	Form1.DestroyWindowHandle;
	Form2.Show;
   End
 Else
  Edit1.Clear;
  Edit2.Clear;
  Edit1.SetFocus;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
Gracias por tu ayuda.
Responder Con Cita
  #6  
Antiguo 14-10-2005
Jeswon Jeswon is offline
Registrado
 
Registrado: oct 2005
Posts: 4
Poder: 0
Jeswon Va por buen camino
Smile Vere como hacerlo Gracias.

Cita:
Empezado por AGAG4
Para que te relacione el password con el usuario, solo tienes que agregar una tabla dentro de tu base de datos donde contenga los 2, yo uso la siguiente estructura, CVEUSUARIO, NOMBREUSUARIO, PASSWORD al buscarlo con un locate al usuario sólo asignas el password que tiene, te recomiendo usar los querys de ibx, fibplus ó bde, son más rápidos que un locate....

Saludos....
Gracias vere la manera de hacerlo asi y vere cual de las 2 formas me conviene mas Muchas Gracias.
Responder Con Cita
  #7  
Antiguo 14-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
If Table1.Locate('Usuario;Contraseña',
                  VarArrayOf([Edit1.Text, Edit2.Text]),
                  [locaseinsensitive])Then
....

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 05-01-2007
gama_blind gama_blind is offline
Registrado
 
Registrado: ene 2007
Posts: 8
Poder: 0
gama_blind Va por buen camino
Red face

El ejemplo me funciona ala perfeccion... pero que sucede cuando existen tipos de usuarios (administrador,usuario) he intentado de la siguiente forma...

if Table1.Locate('USUARIO;PASSWORD;T_USUARIO',VarArrayOf([Edit1.Text, SuiEdit2.Text,1]),[])then


donde 1 es el tipo de usuario (administrador) ,,, espero y me haya explicado,,, o si tienen un ejemplo de inicio de sesion con privilegios que me pueda ayudar
Responder Con Cita
  #9  
Antiguo 05-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿para qué necesitas localizar los 3 campos a la vez?

Deberías buscar solo 2 (nombre usuario y contraseña) que realmente son los importantes. De hecho, ¿por qué necesitas conocer los privilegios de antemano si todavía no has localizado al usuario en la tabla?

Si encuentra el registro, ya se encuentra posicionado en él, así que puedes leer el campo T_Usuario para conocer los privilegios que tiene.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:08:39.


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
Copyright 1996-2007 Club Delphi