Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
Lightbulb

Porque no les gusta usar parametros como debe ser, jejejejeje.

ahi te va:

En tu ADOQUERY pon esta sentencia SQL:
Código SQL [-]
select ID FROM DBA_USERS where username = :NombreUsuario or password = :ClaveUsuario
Me imagino que manejas un campo ID o identificador.
Código Delphi [-]
form2.dbedit1.Clear; form2.adoquery1.Close; form2.adoquery1.ParamByName('NombreUsuario').AsString := dbedit1.Text; form2.adoquery1.ParamByName('ClaveUsuario').AsString := dbedit2.Text; form2.adoquery1.Open; if not form2.adoquery1.fieldbyname('ID').isnull then   form1.showmodal else   showmessage ('Usuario O PassWord Invalido');

Otra forma:

Código Delphi [-]
form2.adoquery1.Open; if form2.adoquery1.recordcount <> 0 then   form1.showmodal else   showmessage ('Usuario O PassWord Invalido');

Porque dependiendo tu propiedad cursortype es si devuelve todos los registros.
Bueno no siempre, pero si tienes registros devuelve -1 o los registros.
Si no tienes siempre devuelve 0 (CERO)

Y te doy un par de consejitos

1. Cambia el nombre de tus componentes: adoquery1 a aqyExisteUsuario
2. NO uses el adoquery usa el adodataset o el adocommand es mejor
3. si vas a usar el adoquery1 para otra consulta, mejor pon otro componente o crealo en tiempo de ejecucion.
4. Usa Datamodules te va a hacer la vida mas facil.

Saludos
__________________
OEsqueda
Responder Con Cita
  #2  
Antiguo 16-06-2011
rrosariom rrosariom is offline
Miembro
 
Registrado: abr 2007
Posts: 23
Poder: 0
rrosariom Va por buen camino
Continua mi error

Buenas Noche,

Lo hice como me dijiste y me da el mismo error.

Aqui algunas sentencias con modificaciones:

Código Delphi [-]
form2.dbedit1.Clear;
form2.adoquery1.Close;
form2.adoquery1.sql.Clear;
form2.adoquery1.SQL.Add('select username,password FROM DBA_USERS');
form2.adoquery1.SQL.Add('where username := NombreUsuario');
form2.adoquery1.SQL.Add('or password  := ClaveUsuario');
form2.adoquery1.Parameters.ParamByName('NombreUsuario').Value := dbedit1.Text;
form2.adoquery1.Parameters.ParamByName('ClaveUsuario').Value := dbedit2.Text;
form2.adoquery1.Open;
form2.adoquery1.Last; //En algunos componentes, si no "navegas" hasta el ultimo registro, la propiedad RecordCount devuelve resultados erróneos
if form2.adoquery1.RecordCount > 0
then
  form1.showmodal
else
  showmessage ('Usuario O PassWord Invalido');


=======================================================================================


form2.Adoquery1.Close;
form2.Adoquery1.Sql.Clear;
form2.Adoquery1.Sql.Add('Select * from dba_users');
form2.Adoquery1.Sql.Add('Where Username = '+QuotedStr(dbEdit1.Text));
form2.Adoquery1.Sql.Add('or password = '+QuotedStr(dbEdit1.Text));
form2.Adoquery1.Open;
form2.adoquery1.Last; 
if not form2.adoquery1.fieldbyname('username').isnull then
form1.showmodal
else
 showmessage ('Usuario O PassWord Invalido');
Espero tu ayuda nuevamente.

Bye,
Rolando.

Última edición por ecfisa fecha: 21-06-2011 a las 04:18:31. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #3  
Antiguo 16-06-2011
rrosariom rrosariom is offline
Miembro
 
Registrado: abr 2007
Posts: 23
Poder: 0
rrosariom Va por buen camino
Exclamation Error Logico Control De Acceso

Olvide decirte que las sentencias que le envie es para que me ayude a analizarla, ya que el error continua

Gracias,
Rolando.
Responder Con Cita
  #4  
Antiguo 16-06-2011
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
No contestaste a mis 2 preguntas:

¿Has probado a ejecutar la consulta directamente sobre la bd de oracle, sin ADO de por medio?

¿devuelve los registros que esperas?

Supongo que esto será un error tuyo de transcripción:
Código Delphi [-]
form2.adoquery1.SQL.Add('where username := NombreUsuario');
form2.adoquery1.SQL.Add('or password  := ClaveUsuario');
debe ser asi:
Código Delphi [-]
form2.adoquery1.SQL.Add('where username = :NombreUsuario');
form2.adoquery1.SQL.Add('or password = :ClaveUsuario');
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #5  
Antiguo 16-06-2011
rrosariom rrosariom is offline
Miembro
 
Registrado: abr 2007
Posts: 23
Poder: 0
rrosariom Va por buen camino
Creando acceso de usuario a una aplicacion

Claro, eso lo hice antes de enviar el error antes de anoche. hice una consulta directamente a la base de datos, usando sqlplus y me devolvió el registro.

en cuanto a lo otro, cuando lo hago form2.adoquery1.SQL.Add('where username = :NombreUsuario'); entonces me da error.

Un Saludo,
Rolando.
Responder Con Cita
  #6  
Antiguo 16-06-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Hola rrosariom, recuerda que para contestar a un mensaje aquí, debes pulsar en el botón que está justo ahí abajo a la izquierda, el que pone "Responder", es que has enviado la contestación al email de contactos de clubdelphi.
Es sólo para que lo tengas en cuenta, gracias
Responder Con Cita
  #7  
Antiguo 16-06-2011
rrosariom rrosariom is offline
Miembro
 
Registrado: abr 2007
Posts: 23
Poder: 0
rrosariom Va por buen camino
Control de Acceso a una aplicacion

este es el codigo que tengo actualmente:

Código Delphi [-]
 form2.adoquery1.Close;
form2.adoquery1.sql.Clear;
form2.adoquery1.SQL.Add('select username,password FROM DBA_USERS');
form2.adoquery1.SQL.Add('where username = :usuario');
form2.adoquery1.SQL.Add('or password = :clave');
form2.adoquery1.FieldByName('usuario').AsString := dbedit1.Text;
form2.adoquery1.FieldByName('clave').AsString := dbedit2.Text;
form2.adoquery1.Open;
form2.adoquery1.Last;
if form2.adoquery1.RecordCount <> 0
then
  form1.showmodal
else
  showmessage ('Usuario O PassWord Invalido');
  end;

y me presenta el siguiente error:

AdoQuery1:Field'usuario' not found'


Me faltara declarar algo?

Última edición por ecfisa fecha: 21-06-2011 a las 04:18:44. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #8  
Antiguo 16-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

El error es que estás usando FieldByName cuando deberías usar ParamByName.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cambiar password del usuario sysdba walace_soy Firebird e Interbase 27 23-06-2015 09:39:18
acceder a carpeta remota con password chinchan C++ Builder 2 12-04-2011 13:33:59
validar dos campos (password y usuario) Yessy OOP 18 28-07-2006 21:59:15
Usuario y Password con TQuery en MyODBC mutant09 Conexión con bases de datos 9 23-04-2004 19:19:04
Dar Master Password a Paradox para que no lo haga el usuario nefy Conexión con bases de datos 3 03-01-2004 19:01:30


La franja horaria es GMT +2. Ahora son las 08:10:18.


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