Classe Usuario Delphi 2010 x DBX4 x sqlServer

26/06/2010

Olá,   Estava usando Delphi 7 e UserControl Controle de Usuario. Não consegui instalar o UserContro no Delphi 2010.   Gostaria de usar a classe abaixo para controle de usuario.   Pode me ajuar a adptar para sqlserver2005?       unit uUsuario; interface uses ActnList, DBXCommon, SqlExpr;   type TPermissao = record Incluir: Boolean; Excluir: Boolean; Alterar: Boolean; Consultar: Boolean; Imprimir: Boolean; end; TUsuario = class private FID: Integer; FSenha: String; FLogin: String; FNome: String; FPerfilID: Integer; FLogado: Boolean; FAcoes: TCustomActionList; class var FInstance: TUsuario; constructor CreatePrivate; { private declarations } protected { protected declarations } function LoadProfile: Boolean;virtual; public { public declarations } constructor Create; function Login(AUsuario, ASenha: String; Acoes: TCustomActionList): Boolean; function GetPerfilName: String; function GetPerfilDescription: String; function ChangePassword(strOldPassword, strNewPassword: String):Boolean; function IsMaster: Boolean; function GetPermissao(AFormulario: String): TPermissao; class function GetInstance: TUsuario; published { published declarations } property ID: Integer read FID; property Nome: String read FNome; property Usuario: String read FLogin; property Senha: String read FSenha; property PerfilID: Integer read FPerfilID; end;     implementation     uses SysUtils, Dialogs, uDm;   { TUsuario } function TUsuario.ChangePassword(strOldPassword, strNewPassword: String): Boolean; var DBCon: TDBXConnection; Command: TDBXCommand; T: TDBXTransaction; begin if FLogado then begin if FSenha = strOldPassword then Begin try DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); T := DBCon.BeginTransaction; Command := DBCon.CreateCommand; Command.Text := 'UPDATE USUARIOS SET SENHA = '+QuotedStr(strNewPassword)+ ' WHERE USUARIOID = '+IntToStr(FID); Command.ExecuteUpdate; DBCon.CommitFreeAndNil(T); Result := True; except DBCon.RollbackFreeAndNil(T); end; end else MessageDlg('A senha antiga não confere !!!!',mtInformation,[mbOK],0); end else MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0); end; constructor TUsuario.Create; begin raise Exception.Create('Para obter uma instância de TUsuario utilize TUsuario.GetInstance !'); end; constructor TUsuario.CreatePrivate; begin inherited Create; end;   class function TUsuario.GetInstance: TUsuario; begin if not Assigned(FInstance) then FInstance := TUsuario.CreatePrivate; Result := FInstance; end; function TUsuario.GetPerfilDescription: String; var DBCon: TDBXConnection; Command: TDBXCommand; Reader: TDBXReader; begin if FLogado then begin     // DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); // Command := DBCon.CreateCommand; // Command.Text := 'SELECT DESCRICAO FROM PERFIL WHERE PERFILID = '+IntToStr(FPerfilID); DM.GenProduto('PERFIL','DESCRICAO', IntToStr(FPerfilID)); Reader := Command.ExecuteQuery; if Reader.Next then Result := Reader.Value[0].GetAnsiString; end else MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0); end; function TUsuario.GetPerfilName: String; var DBCon: TDBXConnection; Command: TDBXCommand; Reader: TDBXReader; begin if FLogado then begin DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); Command := DBCon.CreateCommand; Command.Text := 'SELECT NOME FROM PERFIL WHERE PERFILID = '+IntToStr(FPerfilID); Reader := Command.ExecuteQuery; if Reader.Next then Result := Reader.Value[0].GetAnsiString; end else MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0); end; function TUsuario.GetPermissao(AFormulario: String): TPermissao; var DBCon: TDBXConnection; Command: TDBXCommand; Reader: TDBXReader; Temp: TPermissao; begin if FLogado then begin DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); Command := DBCon.CreateCommand; Command.Text := 'SELECT INCLUIR, EXCLUIR, ALTERAR, CONSULTAR, IMPRIMIR '+ ' FROM ACESSOS WHERE USUARIOID = '+IntToStr(ID)+ ' AND FORMULARIO = '+QuotedStr(AFormulario); Reader := Command.ExecuteQuery; if Reader.Next then begin Temp.Incluir := Reader.Value[0].GetAnsiString = 'S'; Temp.Excluir := Reader.Value[1].GetAnsiString = 'S'; Temp.Alterar := Reader.Value[2].GetAnsiString = 'S'; Temp.Consultar := Reader.Value[3].GetAnsiString = 'S'; Temp.Imprimir := Reader.Value[4].GetAnsiString = 'S'; end else begin Temp.Incluir := True; Temp.Excluir := True; Temp.Alterar := True; Temp.Consultar := True; Temp.Imprimir := True; end; Result := Temp; end else MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0); end; function TUsuario.IsMaster: Boolean; var DBCon: TDBXConnection; Command: TDBXCommand; Reader: TDBXReader; begin   DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('C:\MSSQL\DADOS\teste','admin','123'); Command := DBCon.CreateCommand; Command.Text := 'SELECT MASTER FROM USUARIOS WHERE USUARIOID = '+IntToStr(ID); Reader := Command.ExecuteQuery; if Reader.Next then begin Result := Reader.Value[0].GetAnsiString = 'S'; end; end; function TUsuario.LoadProfile: Boolean; var DBCon: TDBXConnection; Command: TDBXCommand; Reader: TDBXReader; I: Integer; Nm, Pr : String; begin DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); Command := DBCon.CreateCommand; Command.Text := 'SELECT NAME, PREMISSAO FROM PERFIL_CONF WHERE PERFILID = '+IntToStr(FPerfilID); Reader := Command.ExecuteQuery; while Reader.Next do begin Nm := Reader.Value[0].GetAnsiString; Pr := Reader.Value[1].GetAnsiString; for I := 0 to Pred(FAcoes.ActionCount) do begin if TAction(FAcoes.Actions[I]).Name = Nm then begin TAction(FAcoes.Actions[I]).Enabled := 'V' = Pr; break; end; end; end; Result := True; end; function TUsuario.Login(AUsuario, ASenha: String; Acoes: TCustomActionList): Boolean; var DBCon: TDBXConnection; Command: TDBXCommand; Reader: TDBXReader; begin DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); Command := DBCon.CreateCommand; Command.Text := 'SELECT * FROM USUARIOS WHERE LOGIN = '+QuotedStr(AUsuario)+ ' and SENHA = '+QuotedStr(ASenha); Reader := Command.ExecuteQuery; if Reader.Next then begin FID := Reader.Value[0].GetInt32; FPerfilID := Reader.Value[1].GetInt32; FNome := Reader.Value[2].GetAnsiString; FLogin := Reader.Value[4].GetAnsiString; FSenha := Reader.Value[5].GetAnsiString; FLogado := True; FAcoes := Acoes; if LoadProfile then Result := True else MessageDlg('Não foi possível carregar o perfil !!',mtWarning,[mbOK],0); end; end; end.   Att, Ricardo Horoi
Frigorifico Sa

Frigorifico Sa

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

26/06/2010

Olá Ricardo,
  Compilei o projeto no Delphi 2010, e compilou, só deu erro no uDM pois eu não tenho o mesmo, qual é o erro ?
  O que esta acontecendo ?
  Qual mensagem de erro?
  Quem fez esta classe TUsuario ?

Att,

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Dificuldades que encontrei.   unit uUsuario; interface uses ActnList, DBXCommon, SqlExpr;   try DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('SDL77\SQLEXPRESS','ADMIN','123'); Att, Ricardo Horoi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Olá Ricardo,

Você deve colocar o nome da Conexao que você criou no DataExplorer e não o nome do servidor/banco

AO invés de
'SDL77\SQLEXPRESS'

Coloque , que por sua vez deve ser montado no DataExplorer.
BDSDL77

Veja se isso irá resolver o seu problema. Senão resolver me diga o erro que acontece.

Att,

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,       O que esta acontecendo ?   Outro paramentro que tem que ser alterado é :     TBODbxDynalink;   Esta unit tem que achar a do Sqlserver.     Qual mensagem de erro?     Invalid argument:  TESTE  

   Quem fez esta classe TUsuario ?
  Rodrigo Carreiro Mourão   Curso Online
Curso online:Rad Studio 2007-DBX4 e Firebird 2.0-Aplicação comercial de vendas(básico) do Inicio ao Fim     Vídeo
19)  Criando todos os métodos que serão utilizados pela classe usuário 
Descrição: Veremos também o DBX que poucas pessoas conhecem, classes como TDBXConnection, TDBXCommand e outras mais. |
[Marcar este item como lido/assistido]   .    
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo,
 
 
   Peguei o mesmo exemplo que você fez, e modifiquei para o MySQL, a unica coisa que tive que fazer foi adicionar no Data Explorer uma conexão com o MySQL, pois existe um arquivo na pasta C:\Users\Public\Documents\RAD Studio\dbExpress\7.0\ dbxconnections, no qual o DBExpress utiliza para fazer e armazenar as conexões.


function TUsuario.Login(AUsuario, ASenha: String; Acoes: TCustomActionList): Boolean; var   DBCon: TDBXConnection;   Command: TDBXCommand;   Reader: TDBXReader; begin   DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection   ('BDAPM', 'root', 'root');   Command := DBCon.CreateCommand;   Command.Text := 'SELECT * FROM USUARIO WHERE DESCRICAO = ' + QuotedStr(AUsuario)   + ' and SENHA = ' + QuotedStr(ASenha);   Reader := Command.ExecuteQuery;   if Reader.Next then   begin     FID := Reader.Value[0].GetInt32;     FPerfilID := Reader.Value[1].GetInt32;     FNome := Reader.Value[2].GetAnsiString;     FLogin := Reader.Value[4].GetAnsiString;     FSenha := Reader.Value[5].GetAnsiString;     FLogado := True;     FAcoes := Acoes;     if LoadProfile then       Result := True     else       MessageDlg('Não foi possível carregar o perfil !!', mtWarning, [mbOK], 0);   end; end;Depois de criar o Data Explorere eu dei Uses em DBXMySQL, e você terá que dar uses em DBXMSSQL
unit uUsuario;
interface
uses   ActnList, DBXCommon, SqlExpr, DBXMySql;
type   TPermissao = record   Incluir: Boolean;   Excluir: Boolean;   Alterar: Boolean;   Consultar: Boolean;   Imprimir: Boolean; end;Você criou a sua conexão no Data Explorer ?
R: 

O que seria  " Invalid argument:  TESTE "  ? O nome da Sua conexão ?

R:


Observação :

   Gostei da classe TUsuario , mas não gostei da "engessada" que você deu, dando uses em uDM, e utilizando os recursos do DataModule, cada classe uma Responsabilidade. Mas isso é só uma dica meu velho.

Att,

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Classe original.   Usando fireBird.     Saberia me dizer onde consigo esta classe : TBODbxDynalink         unit uUsuario; interface uses
  ActnList, DBXCommon, TBODbxDynalink; type
  TPermissao = record
    Incluir: Boolean;
    Excluir: Boolean;
    Alterar: Boolean;
    Consultar: Boolean;
    Imprimir: Boolean;
  end;   TUsuario = class
  private
    FID: Integer;
    FSenha: String;
    FLogin: String;
    FNome: String;
    FPerfilID: Integer;
    FLogado: Boolean;
    FAcoes: TCustomActionList;
    class var FInstance: TUsuario;
    constructor CreatePrivate;
    { private declarations }
  protected
    { protected declarations }
    function LoadProfile: Boolean;virtual;
  public
    { public declarations }
    constructor Create;
    function Login(AUsuario, ASenha: String; Acoes: TCustomActionList): Boolean;
    function GetPerfilName: String;
    function GetPerfilDescription: String;
    function ChangePassword(strOldPassword, strNewPassword: String):Boolean;
    function IsMaster: Boolean;
    function GetPermissao(AFormulario: String): TPermissao;
    class function GetInstance: TUsuario;
  published
    { published declarations }
    property ID: Integer read FID;
    property Nome: String read FNome;
    property Usuario: String read FLogin;
    property Senha: String read FSenha;
    property PerfilID: Integer read FPerfilID;
  end;   implementation   uses
  SysUtils, Dialogs;
{ TUsuario } function TUsuario.ChangePassword(strOldPassword,
  strNewPassword: String): Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  T: TDBXTransaction;
begin
  if FLogado then
  begin
    if FSenha = strOldPassword then
    Begin
      try
        DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
        T := DBCon.BeginTransaction;
        Command := DBCon.CreateCommand;
        Command.Text := 'UPDATE USUARIOS SET SENHA = '+QuotedStr(strNewPassword)+
                           ' WHERE USUARIOID = '+IntToStr(FID);
        Command.ExecuteUpdate;
        DBCon.CommitFreeAndNil(T);
        Result := True;
      except
        DBCon.RollbackFreeAndNil(T);
      end;
    end
    else
      MessageDlg('A senha antiga não confere !!!!',mtInformation,[mbOK],0);             
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; constructor TUsuario.Create;
begin
   raise Exception.Create('Para obter uma instância de TUsuario utilize TUsuario.GetInstance !');
end; constructor TUsuario.CreatePrivate;
begin
  inherited Create;
end; class function TUsuario.GetInstance: TUsuario;
begin
  if not Assigned(FInstance) then
    FInstance := TUsuario.CreatePrivate;
  Result := FInstance;
end; function TUsuario.GetPerfilDescription: String;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  if FLogado then
  begin
    DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
    Command := DBCon.CreateCommand;
    Command.Text := 'SELECT DESCRICAO FROM PERFIL WHERE PERFILID = '+IntToStr(FPerfilID);
    Reader := Command.ExecuteQuery;
    if Reader.Next then Result := Reader.Value[0].GetAnsiString;
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; function TUsuario.GetPerfilName: String;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  if FLogado then
  begin
    DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
    Command := DBCon.CreateCommand;
    Command.Text := 'SELECT NOME FROM PERFIL WHERE PERFILID = '+IntToStr(FPerfilID);
    Reader := Command.ExecuteQuery;
    if Reader.Next then Result := Reader.Value[0].GetAnsiString;
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; function TUsuario.GetPermissao(AFormulario: String): TPermissao;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
  Temp: TPermissao;
begin
  if FLogado then
  begin
    DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
    Command := DBCon.CreateCommand;
    Command.Text := 'SELECT INCLUIR, EXCLUIR, ALTERAR, CONSULTAR, IMPRIMIR '+
                    '  FROM ACESSOS WHERE USUARIOID  = '+IntToStr(ID)+
                    '                 AND FORMULARIO = '+QuotedStr(AFormulario);
    Reader := Command.ExecuteQuery;
    if Reader.Next then
    begin
      Temp.Incluir   := Reader.Value[0].GetAnsiString = 'S';
      Temp.Excluir   := Reader.Value[1].GetAnsiString = 'S';
      Temp.Alterar   := Reader.Value[2].GetAnsiString = 'S';
      Temp.Consultar := Reader.Value[3].GetAnsiString = 'S';
      Temp.Imprimir  := Reader.Value[4].GetAnsiString = 'S';
    end
    else
    begin
     Temp.Incluir   := True;
     Temp.Excluir   := True;
     Temp.Alterar   := True;
     Temp.Consultar := True;
     Temp.Imprimir  := True;
    end;
    Result := Temp;
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; function TUsuario.IsMaster: Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT MASTER FROM USUARIOS WHERE USUARIOID = '+IntToStr(ID);
  Reader := Command.ExecuteQuery;   if Reader.Next then
  begin
    Result := Reader.Value[0].GetAnsiString = 'S';
  end;
end; function TUsuario.LoadProfile: Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
  I: Integer;
  Nm, Pr : String;
begin
  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT NAME, PREMISSAO FROM PERFIL_CONF WHERE PERFILID = '+IntToStr(FPerfilID);
  Reader := Command.ExecuteQuery;   while Reader.Next do
  begin
    Nm := Reader.Value[0].GetAnsiString;
    Pr := Reader.Value[1].GetAnsiString;
    for I := 0 to Pred(FAcoes.ActionCount) do
    begin
      if TAction(FAcoes.Actions[I]).Name = Nm then
      begin
        TAction(FAcoes.Actions[I]).Enabled := 'V' = Pr;
        break;
      end;
    end;
  end;
  Result := True;
end; function TUsuario.Login(AUsuario, ASenha: String;
  Acoes: TCustomActionList): Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT * FROM USUARIOS WHERE LOGIN = '+QuotedStr(AUsuario)+
                                         ' and SENHA = '+QuotedStr(ASenha);
  Reader := Command.ExecuteQuery;   if Reader.Next then
  begin
    FID       := Reader.Value[0].GetInt32;
    FPerfilID := Reader.Value[1].GetInt32;
    FNome     := Reader.Value[2].GetAnsiString;
    FLogin    := Reader.Value[4].GetAnsiString;
    FSenha    := Reader.Value[5].GetAnsiString;
    FLogado   := True;
    FAcoes    := Acoes;
    if LoadProfile then
      Result    := True
    else
      MessageDlg('Não foi possível carregar o perfil !!',mtWarning,[mbOK],0);
  end;
end; end.
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Classe original.   Usando fireBird.     Saberia me dizer onde consigo esta classe : TBODbxDynalink         unit uUsuario; interface uses
  ActnList, DBXCommon, TBODbxDynalink; type
  TPermissao = record
    Incluir: Boolean;
    Excluir: Boolean;
    Alterar: Boolean;
    Consultar: Boolean;
    Imprimir: Boolean;
  end;   TUsuario = class
  private
    FID: Integer;
    FSenha: String;
    FLogin: String;
    FNome: String;
    FPerfilID: Integer;
    FLogado: Boolean;
    FAcoes: TCustomActionList;
    class var FInstance: TUsuario;
    constructor CreatePrivate;
    { private declarations }
  protected
    { protected declarations }
    function LoadProfile: Boolean;virtual;
  public
    { public declarations }
    constructor Create;
    function Login(AUsuario, ASenha: String; Acoes: TCustomActionList): Boolean;
    function GetPerfilName: String;
    function GetPerfilDescription: String;
    function ChangePassword(strOldPassword, strNewPassword: String):Boolean;
    function IsMaster: Boolean;
    function GetPermissao(AFormulario: String): TPermissao;
    class function GetInstance: TUsuario;
  published
    { published declarations }
    property ID: Integer read FID;
    property Nome: String read FNome;
    property Usuario: String read FLogin;
    property Senha: String read FSenha;
    property PerfilID: Integer read FPerfilID;
  end;   implementation   uses
  SysUtils, Dialogs;
{ TUsuario } function TUsuario.ChangePassword(strOldPassword,
  strNewPassword: String): Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  T: TDBXTransaction;
begin
  if FLogado then
  begin
    if FSenha = strOldPassword then
    Begin
      try
        DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
        T := DBCon.BeginTransaction;
        Command := DBCon.CreateCommand;
        Command.Text := 'UPDATE USUARIOS SET SENHA = '+QuotedStr(strNewPassword)+
                           ' WHERE USUARIOID = '+IntToStr(FID);
        Command.ExecuteUpdate;
        DBCon.CommitFreeAndNil(T);
        Result := True;
      except
        DBCon.RollbackFreeAndNil(T);
      end;
    end
    else
      MessageDlg('A senha antiga não confere !!!!',mtInformation,[mbOK],0);             
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; constructor TUsuario.Create;
begin
   raise Exception.Create('Para obter uma instância de TUsuario utilize TUsuario.GetInstance !');
end; constructor TUsuario.CreatePrivate;
begin
  inherited Create;
end; class function TUsuario.GetInstance: TUsuario;
begin
  if not Assigned(FInstance) then
    FInstance := TUsuario.CreatePrivate;
  Result := FInstance;
end; function TUsuario.GetPerfilDescription: String;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  if FLogado then
  begin
    DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
    Command := DBCon.CreateCommand;
    Command.Text := 'SELECT DESCRICAO FROM PERFIL WHERE PERFILID = '+IntToStr(FPerfilID);
    Reader := Command.ExecuteQuery;
    if Reader.Next then Result := Reader.Value[0].GetAnsiString;
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; function TUsuario.GetPerfilName: String;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  if FLogado then
  begin
    DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
    Command := DBCon.CreateCommand;
    Command.Text := 'SELECT NOME FROM PERFIL WHERE PERFILID = '+IntToStr(FPerfilID);
    Reader := Command.ExecuteQuery;
    if Reader.Next then Result := Reader.Value[0].GetAnsiString;
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; function TUsuario.GetPermissao(AFormulario: String): TPermissao;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
  Temp: TPermissao;
begin
  if FLogado then
  begin
    DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
    Command := DBCon.CreateCommand;
    Command.Text := 'SELECT INCLUIR, EXCLUIR, ALTERAR, CONSULTAR, IMPRIMIR '+
                    '  FROM ACESSOS WHERE USUARIOID  = '+IntToStr(ID)+
                    '                 AND FORMULARIO = '+QuotedStr(AFormulario);
    Reader := Command.ExecuteQuery;
    if Reader.Next then
    begin
      Temp.Incluir   := Reader.Value[0].GetAnsiString = 'S';
      Temp.Excluir   := Reader.Value[1].GetAnsiString = 'S';
      Temp.Alterar   := Reader.Value[2].GetAnsiString = 'S';
      Temp.Consultar := Reader.Value[3].GetAnsiString = 'S';
      Temp.Imprimir  := Reader.Value[4].GetAnsiString = 'S';
    end
    else
    begin
     Temp.Incluir   := True;
     Temp.Excluir   := True;
     Temp.Alterar   := True;
     Temp.Consultar := True;
     Temp.Imprimir  := True;
    end;
    Result := Temp;
  end
  else
    MessageDlg('É necessário está logado para invocar este método !!',mtWarning,[mbOK],0);
end; function TUsuario.IsMaster: Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT MASTER FROM USUARIOS WHERE USUARIOID = '+IntToStr(ID);
  Reader := Command.ExecuteQuery;   if Reader.Next then
  begin
    Result := Reader.Value[0].GetAnsiString = 'S';
  end;
end; function TUsuario.LoadProfile: Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
  I: Integer;
  Nm, Pr : String;
begin
  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT NAME, PREMISSAO FROM PERFIL_CONF WHERE PERFILID = '+IntToStr(FPerfilID);
  Reader := Command.ExecuteQuery;   while Reader.Next do
  begin
    Nm := Reader.Value[0].GetAnsiString;
    Pr := Reader.Value[1].GetAnsiString;
    for I := 0 to Pred(FAcoes.ActionCount) do
    begin
      if TAction(FAcoes.Actions[I]).Name = Nm then
      begin
        TAction(FAcoes.Actions[I]).Enabled := 'V' = Pr;
        break;
      end;
    end;
  end;
  Result := True;
end; function TUsuario.Login(AUsuario, ASenha: String;
  Acoes: TCustomActionList): Boolean;
var
  DBCon:   TDBXConnection;
  Command: TDBXCommand;
  Reader:  TDBXReader;
begin
  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT * FROM USUARIOS WHERE LOGIN = '+QuotedStr(AUsuario)+
                                         ' and SENHA = '+QuotedStr(ASenha);
  Reader := Command.ExecuteQuery;   if Reader.Next then
  begin
    FID       := Reader.Value[0].GetInt32;
    FPerfilID := Reader.Value[1].GetInt32;
    FNome     := Reader.Value[2].GetAnsiString;
    FLogin    := Reader.Value[4].GetAnsiString;
    FSenha    := Reader.Value[5].GetAnsiString;
    FLogado   := True;
    FAcoes    := Acoes;
    if LoadProfile then
      Result    := True
    else
      MessageDlg('Não foi possível carregar o perfil !!',mtWarning,[mbOK],0);
  end;
end; end.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Olá Ricardo,

  Este exemplo foi feito em Delphi 2007, e o mesmo não tem suporte nativo a Firebird, esta unit senão me engano é do Thiago Borges, um driver de terceiro, que tem um driver nativo para delphi 2007 com Firebird, no teu caso, você não utiliza ela sacou ? Então ela não exite no Delphi 2010, pois já é nativo a sua conexão.

Sacou meu amigo ?

Um abraço

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Entendi.   Mas mesmo sem ela apresenta erro.   Invalid argument  : DBVENDAS.     DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('DBVENDAS','SYSDBA','masterkey');       Vou testar no mysql.   Segunda a gente se fala.   abcs.   Att, Ricardo Horoi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo,
  Até segundo meu velho, tente no MySQL e nos falamos.

Att

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Bom dia.     DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('COMERCIAL','SYSDBA','masterkey');
  Command := DBCon.CreateCommand;
  Command.Text := 'SELECT MASTER FROM USUARIOS WHERE USUARIOID = '+IntToStr(ID); //  DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection('lojaonline', 'root', 'root');
//  Command := DBCon.CreateCommand;
//  Command.Text := 'SELECT * FROM USUARIO WHERE DESCRICAO = ' + QuotedStr(AUsuario)   + ' and SENHA = ' + QuotedStr(ASenha);   Att,   Ricardo Horoi
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Desculpe esqueci de falar o erro.   Ta dando o mesmo erro.   Tanto sql server           firebird          mysql   Invalid Argument.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo,

  Teria como você mandar seu projeto, não completo mas somente o que necessário para poder analisar aqui e fazer uns testes, seu banco de dados também, fique tranquilo que seus dados não serão utilizados para outros fins.

Fico no aguardo meu amigo.

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Sem problemas.     http://video.devmedia.com.br/discovirtual/173622/Comercial37.zip   Att,   Ricardo Horoi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo

  Você essa aplicação esta em firebird, e não em MySql e também esta em Delphi 2007. Usando o Driver do Thiago Borges, queria a aplicação com MySQL, e a classe do Usuário que ta dando erro,somente, para ficar mais simples de achar este erro, entende ? Manda o Script Banco  MySQL pra poder testar.

Att,

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,   Segue anexo.   http://video.devmedia.com.br/discovirtual/173622/Integradores.rar     Att, Ricardo Horoi
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo,


  Faltou o banco  de dados no FB.

Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo, acabei utlizando aqui um banco de dados meu.


Como esta o seu C:\Users\Public\Documents\RAD Studio\dbExpress\7.0\dbxconnections.ini ?

[BDAPTEL]
drivername=FIREBIRD
blobsize=-1
commitretain=False
Database=C:\SWAPTEL\APTELBD.FDB
localecode=0000
password=masterkey
rolename=RoleName
sqldialect=3
isolationlevel=ReadCommitted
user_name=sysdba
waitonlocks=True
trim char=False

E funcionou, cliquei no botão Usuario, do formulário principal e funcionou, você criou no seu data explorer esta conexão no firebird com o nome COMERCIAL ?


Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Olá Ricardo,


Consegui resolver o problema ?Podemos fechar ?

Att,

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley, Não consegui e não tive tempo ainda. Preciso resolver este problema. Se quiser fechar depois e abro outro chamado. Estou quase desistindo de usar o FIRBIRD. Att, Ricardo Horoi 
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo, não faça isso meu velho, o FB é muito bom, o que esta acontecendo ? Deu algum erro ? Mudou o erro ?

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo, fala comigo meu velho, o que esta havendo ? vamos resolver este problema, não desista.

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ricardo, desistiu meu amigo ?

Estou lhe aguardando para resolvermos o problema.

Um abraço

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/06/2010

Wesley,  Por enquanto sim. Pode encerrar. Obrigado. 
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/06/2010

Ok então amigo,

Att

Wesley Y
GOSTEI 0
POSTAR