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 14-08-2017
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.

Uff! hiciste todo un cóctel ahí , en principio revisa si faltan o tienen otro nombre los siguientes componentes: TDataModule, TIBDataBase y TIBTransaction.

Luego el esqueleto de tu DataModule debería ser aproximadamente así:
Código Delphi [-]
unit Unit2;

interface

uses
  SysUtils, Classes, DB, IBCustomDataSet, IBQuery, IBDatabase;

type
  TDataModule2 = class(TDataModule)
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    ...

  private
    { Private declarations }

  public
    function LoginAccepted(const nam, pwd: string): Boolean; // <- Declaración del método
  end;

var
  DataModule2: TDataModule2;

implementation {$R *.dfm}

// Implementación del método
function TDataModule2.LoginAccepted(const nam, pwd: string): Boolean;
var
  qy: TIBQuery;
begin
  qy := TIBQuery.Create(nil);
  try
    qy.Database := IBDataBase1;
    qy.Transaction := IBTransaction1;
    qy.Close;
    qy.SQL.Clear;
    qy.SQL.Add('SELECT * FROM USUARIO');
    qy.SQL.Add('WHERE NOMBRE = :NOMBRE');
    qy.ParamByName('NOMBRE').AsString := nam;
    qy.Open;
    Result := not qy.IsEmpty and (qy.FieldByName('CLAVE').AsString = pwd);
    qy.Close;
  finally
    qy.Free;
  end;
end;

end.
Si cotejas con tu código, enseguida notarás que pusiste la implementación del método donde debería ir la declaración.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 14-08-2017
Djsilver5 Djsilver5 is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 22
Poder: 0
Djsilver5 Va por buen camino
Amigo al corregir el código todo me funciona correctamente me guarda el código y arranca el Run (F9) pero cuando escojo el Usuario en el DBLOOKUPCOMOBOX y escribo el Password de la BaseDatos y doy clic en aceptar me sale el siguiente error.
Cita:
(Project Sistema.exe raised exception class EIBInterBaseError with message 'Dynamic SQL Error SQL error code= -204
Table unknown
USUARIO'.Process stopped. Use Step or Run to continue.)
Responder Con Cita
  #3  
Antiguo 14-08-2017
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

En la siguiente línea del ejemplo:
Código Delphi [-]
qy.SQL.Add('SELECT * FROM USUARIO');
cambia la palabra USUARIO por el nombre que le diste a tu tabla.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 14-08-2017
Djsilver5 Djsilver5 is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 22
Poder: 0
Djsilver5 Va por buen camino
Hola, ahora me bota el siguiente error
Cita:
(Project Sistema.exe raised exception class EIBInterBaseError with message 'Dynamic SQL Error SQL error code= -206
Table unknown
USUARIO'.Process stopped. Use Step or Run to continue.)
NOTA: En mi Base de Datos la tabla principal se llama SIS_USUARIOS, dentro de esa tabla en la sección datos esta el DES_USUARIO y PWD_USUARIO debajo de esos 2 campos se encuentra el text del usuario y password.

Código Delphi [-]
unit DataModule02;

interface

uses
  SysUtils, Classes, DB, IBCustomDataSet, IBDatabase, IBQuery, IBTable,
  IBStoredProc;

type
  TDataModule2 = class(TDataModule)
    IBTransaction1: TIBTransaction;
    Procedimientos: TIBStoredProc;
    IBTEmpresas: TIBTable;
    IBQEmpresas1: TIBQuery;
    DSEmpresas: TDataSource;
    DSEmpresas1: TDataSource;
    IBTAgencia: TIBTable;
    IBQAgencia1: TIBQuery;
    DSAgencia: TDataSource;
    DSAgencia1: TDataSource;
    IBTUsuarios: TIBTable;
    DSUsuarios: TDataSource;
    IBQUsuarios1: TIBQuery;
    DSUsuarios1: TDataSource;
    IBDatabase1: TIBDatabase;
    IBTDNI: TIBTable;
    IBTDNIDES_DOC_IDE: TIBStringField;
    IBTDNICOD_DOC_IDE: TIBStringField;
    DSDNI: TDataSource;
    IBQDNI: TIBQuery;
    DTDNI1: TDataSource;
    IBTTipodePersona: TIBTable;
    IBQTipodePersona: TIBQuery;
    DSTipodePersona: TDataSource;
    DSTipodePersona1: TDataSource;
    IBTEstadoCivil: TIBTable;
    IBQEstadoCivil: TIBQuery;
    DSEstadoCivil: TDataSource;
    DSEstadoCivil1: TDataSource;
    IBTZona: TIBTable;
    IBQZona: TIBQuery;
    DSZona: TDataSource;
    DSZona1: TDataSource;
    IBTPassword: TIBTable;
    DSPassword: TDataSource;
    IBQPassword: TIBQuery;
    DSPassword1: TDataSource;
    //
  private
    //
  public
function LoginAccepted(const nam, pwd: string): Boolean;
  end;

var
  DataModule2: TDataModule2;

implementation {$R *.dfm}

// Implementación del método
function TDataModule2.LoginAccepted(const nam, pwd: string): Boolean;
var
  qy: TIBQuery;
begin
  qy := TIBQuery.Create(nil);
  try
    qy.Database := IBDataBase1;
    qy.Transaction := IBTransaction1;
    qy.Close;
    qy.SQL.Clear;
    qy.SQL.Add('SELECT * FROM SIS_USUARIOS');
    qy.SQL.Add('WHERE NOMBRE = :NOMBRE');
    qy.ParamByName('NOMBRE').AsString := nam;
    qy.Open;
    Result := not qy.IsEmpty and (qy.FieldByName('CLAVE').AsString = pwd);
    qy.Close;
  finally
    qy.Free;
  end;
end;

end.
Responder Con Cita
  #5  
Antiguo 14-08-2017
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.
Cita:
Empezado por Djsilver5 Ver Mensaje
...
NOTA: En mi Base de Datos la tabla principal se llama SIS_USUARIOS, dentro de esa tabla en la sección datos esta el DES_USUARIO y PWD_USUARIO debajo de esos 2 campos se encuentra el text del usuario y password.
...
Entonces la consulta sql en tu caso debería ser:
Código Delphi [-]
...
    qy.SQL.Add('SELECT * FROM SIS_USUARIOS');
    qy.SQL.Add('WHERE DES_USUARIO = :NOMBRE');
    qy.ParamByName('NOMBRE').AsString := nam;
    qy.Open;
    Result := not qy.IsEmpty and (qy.FieldByName('PWD_USUARIO').AsString = pwd);
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 14-08-2017
Djsilver5 Djsilver5 is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 22
Poder: 0
Djsilver5 Va por buen camino
YA acepto el código pero cuando selecciono el Usuario y escribo la contraseña, despues de dar clic al boton aceptar me sale el siguiente error.

Cita:
Project Sistema.exe raise Exception class Exception with message'El usuario o la contraseña son inválidos'.Process stopped. Use Step or Run to continue.
justo al final en
Código Delphi [-]
procedure TAccesoSistema.AceptarClick(Sender: TObject);
begin
  if not DataModule2.LoginAccepted(edtUsuarios.Text, edtPassword.Text) then
     raise Exception.Create('El usuario o la contraseña son inválidos.');
end;
end.


En el codigo de Form AccesoAlSistema
Código Delphi [-]
unit AccesoAlSistema;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Buttons, ExtCtrls;

type
  TAccesoSistema = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Empresa: TLabel;
    Agencia: TLabel;
    Usuarios: TLabel;
    Password: TLabel;
    Cancelar: TBitBtn;
    edtEmpresa: TDBLookupComboBox;
    edtAgencia: TDBLookupComboBox;
    edtUsuarios: TDBLookupComboBox;
    edtPassword: TEdit;
    Aceptar: TBitBtn;
    procedure CancelarClick(Sender: TObject);
    procedure AceptarClick(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  AccesoSistema: TAccesoSistema;

implementation  {$R *.dfm}

uses DataModule02;



procedure TAccesoSistema.CancelarClick(Sender: TObject);
begin
close;
end;
procedure TAccesoSistema.AceptarClick(Sender: TObject);
begin
  if not DataModule2.LoginAccepted(edtUsuarios.Text, edtPassword.Text) then
    raise Exception.Create('El usuario o la contraseña son inválidos.');
end;
end.
Responder Con Cita
  #7  
Antiguo 14-08-2017
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.
Cita:
Empezado por Djsilver5 Ver Mensaje
YA acepto el código pero cuando selecciono el Usuario y escribo la contraseña, despues de dar clic al boton aceptar me sale el siguiente error.
Cita:
Project Sistema.exe raise Exception class Exception with message'El usuario o la contraseña son inválidos'.Process stopped. Use Step or Run to continue.
Correcto, ya funciona como debería.

Ahora, para que no aparezca el mensaje que lanza la línea:
Código Delphi [-]
raise Exception.Create('El usuario o la contraseña son inválidos.');
tanto el nombre como la contraseña deben coincidir con los almacenados en la tabla para ingresar al programa (recuerda que es case sensitive).

Saludos
__________________
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
Crear Un Login Belen12 Conexión con bases de datos 2 31-05-2016 23:23:25
crear login con adotabla1 Yensis22 Conexión con bases de datos 3 01-04-2008 23:06:22
Login Lento En Interbase Local GIVO Conexión con bases de datos 1 17-03-2004 22:03:42
Suprimir Login InterBase jsc Conexión con bases de datos 4 29-01-2004 02:46:51
InterBase Login? TIKIMORE Firebird e Interbase 6 23-06-2003 17:36:34


La franja horaria es GMT +2. Ahora son las 10:29:28.


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