Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2016
abelantonio abelantonio is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 4
Poder: 0
abelantonio Va por buen camino
Smile Diferencía entre mayúsculas y minúsculas

Buen dia Colegas!!

Solicitando de su ayuda....soy nuevo en el foro y estoy iniciando a programar en delphi...soy novato.

Les cuento tengo un programa al cual se accede al sistema por medio de un login, ya lo tengo funcionando, el problema que tengo es que no diferencía entre mayúsculas y minúsculas (es decir uso un password almacenado como "Hola", pero si escribo todo con mayúscula o minúscula aún me permite acceso, quisiera saber como puedo hacer para que el password lo escriba exactamente como se almaceno), uso una BD MySQL ¿Alguna sugerencia? De ante mano agradezco su ayuda.


Este es el codigo de mi login:
Código Delphi [-]
procedure TFormLogin.txtPassKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
  FMCorp.qry_login.Close;
  FMCorp.qry_login.SQL.Clear;
  FMCorp.qry_login.SQL.Add('Select usuario, contrasenia, NombreUsuario, NivelUsuario from login where usuario='+QuotedStr(txtUsuario.Text)+ 'and Contrasenia= '+QuotedStr(txtPass.Text));
  FMCorp.qry_login.Open;

  Nivel := FMCorp.qry_login.FieldByName('Nivel').AsString;
  showmessage('El nivel del usuario es '+inttostr(Nivel));

    if (txtUsuario.Text = '') and (txtPass.Text = '') then
      begin
        ShowMessage ( 'Campos Vacios' );
      end
    else

      if (FMCorp.qry_login.Eof) then
        begin
          MessageBox(Handle, 'Usuario y Contraseña Invalido!', 'LoyalCorp', MB_ICONINFORMATION+MB_OK);
          txtUsuario.Clear;
          txtPass.Clear;
          txtUsuario.SetFocus;
          Exit;
        end
      else
        begin
          FormLogin.Enabled := false;

          Case Nivel of

              0:
              begin
              MenuCorp.FMCorp.imgCompra.enabled := false;
              MenuCorp.FMCorp.imgEmpresa.enabled := true;
              MenuCorp.FMCorp.imgRecursos.enabled:= true;
              end;
              1:
              begin
              MenuCorp.FMCorp.imgCompra.enabled :=true;
              MenuCorp.FMCorp.imgEmpresa.enabled := true;
              MenuCorp.FMCorp.imgRecursos.enabled := true;
              end;
              2:
              begin
              MenuCorp.FMCorp.imgCompra.enabled :=true;
              MenuCorp.FMCorp.imgEmpresa.enabled := true;
              MenuCorp.FMCorp.imgRecursos.enabled := false;
              end;
              3:
              begin
              MenuCorp.FMCorp.imgCompra.enabled :=true;
              MenuCorp.FMCorp.imgEmpresa.enabled := true;
              MenuCorp.FMCorp.imgRecursos.enabled := true;
              end;
           else
            ShowMessage ( 'no tiene privilegios' );
          end;

           FMCorp.Visible := true;
        end;
  end;

Última edición por Casimiro Notevi fecha: 15-06-2016 a las 18:34:46.
Responder Con Cita
  #2  
Antiguo 15-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Los query no suelen ser case-sensitive por defecto y MySQL no es la excepción. Debes convertir los string usando collates.

Fuente
Responder Con Cita
  #3  
Antiguo 15-06-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por abelantonio Ver Mensaje
Buen dia Colegas!!
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración

Y recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #4  
Antiguo 15-06-2016
abelantonio abelantonio is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 4
Poder: 0
abelantonio Va por buen camino
Smile

como convertiria los strings a collates? la verdad aun no domino delphi estoy iniciando...les agradeceria su ayuda
Responder Con Cita
  #5  
Antiguo 15-06-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Aunque la búsqueda puede ser insensible a mayúsculas y minúsculas, dependiendo del collate usado, los valores almacenados en la base se regresan tal como fueron capturados. Entonces, en lugar de buscar un usuario con nombre de usuario y contraseña determinada, puedes simplemente buscarlo por nombre de usuario y comparar las contraseñas en tu código delphi. Algo así:

Código Delphi [-]
FMCorp.qry_login.SQL.Add('Select usuario, contrasenia, NombreUsuario, NivelUsuario from login where usuario=' + QuotedStr(txtUsuario.Text));
FMCorp.qry_login.Open;

if FMCorp.qry_login.FieldByName('contrasenia').AsString = txtPass.Text then
begin
    // La contraseña es correcta
end;

LineComment Saludos
Responder Con Cita
  #6  
Antiguo 15-06-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
What, en que momento sucedio esto? Ok, basicamente esto es configuración de tu base de datos o tabla, esto no deberia de ser necesario ya que por logica "ABC" no es igual "abc", sunpogo que en algún punto los estandares SQL se orientaron menos a la logica y mas a las necesidades comunes tratando de facilitar las consultas "upper(campo) no veo mayor problema pero bueno".

El tema en distintas bases de datos es la definición de la base o las tablas definiendo el "COLLATE", puede variar dependiendo de la base de datos y ya en las cosultas se puede aplicar la sentencia si queremos o no distinguir mayusculas y minusculas.

Tomado de desarrollo web.

Código SQL [-]
 -- distinguir mayusculas, minusculas y acentos mysql
-- MySQL >> 
select * from tabla WHERE campo COLLATE utf8_bin ='UnTexto'


Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #7  
Antiguo 15-06-2016
abelantonio abelantonio is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 4
Poder: 0
abelantonio Va por buen camino
Smile

si me funciono tu ayuda #roman para acceder....pero el detalle es que no es sensible a mayusculas y minusculas y eso es lo que quiero realizar...alguna idea? ando un poco deshubicado con esto de la sensibilidad de mayusculas y minusculas. se los agradeceria mucho en verdad
Responder Con Cita
  #8  
Antiguo 15-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Podes comparar los string usando la funcion AnsiCompareStr
Responder Con Cita
  #9  
Antiguo 15-06-2016
abelantonio abelantonio is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 4
Poder: 0
abelantonio Va por buen camino
Comienzan
// comparar dos cadenas obviamente diferentes
CompareStrings ( "Hola", "mundo"); // comparar cadenas idénticas CompareStrings ( 'Hola 2 tú "," Hola 2 le'); // Las letras mayúsculas siguen minúsculas en Delphi CompareStrings ( 'ABC', 'abc'); // Todas las cartas siguen los números en Delphi CompareStrings ( 'abc', '123'); fin; // Compara dos cadenas, y mostrar que es más grande que los otros TForm1.CompareStrings procedimiento ( cadena1 const, string2: string); var resultado: Integer; comience // Compara algunas cadenas resultado: = AnsiCompareStr (cadena1, cadena2); si el resultado <0 entonces ShowMessage (cadena1 + '<' + cadena2); si el resultado = 0 entonces ShowMessage (cadena1 + '=' + cadena2); si el resultado> 0 entonces ShowMessage (cadena1 + '>' + cadena2); fin;


No entendi como aplicarlo al codigo del login y que sea sensible a las mayusculas y minusculas...no hubico como compararlos...alguien podria ayudarme.

if FMCorp.qry_login.FieldByName('contrasenia').AsString = txtPass.Text then
begin
MessageBox(Handle, 'La contraseña es correcta!', 'LoyalCorp', MB_ICONINFORMATION+MB_OK);

este codigo no funciona para la sensibilidad de mayusculas y minusculas.
Responder Con Cita
  #10  
Antiguo 15-06-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Te puse un ejemplo de cómo hacerlo en el query, si el query no te devuelve registros es que no coincide la contraseña.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #11  
Antiguo 15-06-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola abelantonio.

Revisa esta sugerencia

Saludos y gracias por tu colaboración
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
convertir mayusculas y minusculas. Solo la primera letra en Mayusculas Delphius MS SQL Server 2 21-07-2007 02:20:22
Select con minusculas y mayusculas lucasarts_18 MySQL 1 13-05-2007 02:44:24
Validar con mayusculas y minusculas marceloalegre SQL 2 23-06-2005 23:06:05
Índices mayúsculas/minúsculas sur-se Firebird e Interbase 4 20-09-2004 20:35:31
Mayusculas Y Minusculas jberaza Firebird e Interbase 1 24-05-2003 18:44:32


La franja horaria es GMT +2. Ahora son las 16:40:46.


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