Fórum Trocar Boolean por Char(1) no Firebird 2.5.2 #440760
24/04/2013
0
Acho que nessa unit teria que trocar onde é TRUE, por S e FALSE por N
Esse trecho de código tem haver:
+ QuotedStr ('N');
.AsString := ‘N’;
Segue unit:
unit untFrmPermissoesUsuarios;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, DBCtrls, StdCtrls, Buttons, DB;
type
TFrmPermissoesUsuarios = class(TForm)
Label1: TLabel;
dbUsuarios: TDBLookupComboBox;
Panel1: TPanel;
Label2: TLabel;
btnFechar: TBitBtn;
cbConsultar: TCheckBox;
cbIncluir: TCheckBox;
cbExcluir: TCheckBox;
cbAlterar: TCheckBox;
btnSalvar: TBitBtn;
dsLookupUsuarios: TDataSource;
tvMenus: TTreeView;
procedure btnFecharClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure dbUsuariosKeyPress(Sender: TObject; var Key: Char);
procedure dbUsuariosCloseUp(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure tvMenusClick(Sender: TObject);
private
semDireitosTela : Boolean;
procedure CarregarMenus;
procedure LimparLista;
procedure CarregarDireitosUsuarioMenu(const codUsuario, codMenu: Integer);
procedure HabilitarOpcoes(const tof : Boolean);
function retornaNoPai(codPai: Integer): TTreeNode;
procedure verificarPermissaoMenuPai(const no: TTreeNode);
{ Private declarations }
public
{ Public declarations }
end;
var
FrmPermissoesUsuarios: TFrmPermissoesUsuarios;
implementation
uses untDMPrincipal, untDMCadastros, SqlExpr;
{$R *.dfm}
procedure TFrmPermissoesUsuarios.btnFecharClick(Sender: TObject);
begin
Close;
end;
function TFRmPermissoesUsuarios.retornaNoPai(codPai : Integer) : TTreeNode;
var
i : Integer;
begin
Result := nil;
for i := 0 to Pred(tvMenus.Items.Count) do
if Integer(tvMenus.Items[i].Data) = codPai then
begin
Result := tvMenus.Items[i];
Exit;
end;
end;
procedure TFrmPermissoesUsuarios.CarregarMenus;
var
no : TTreeNode;
begin
tvMenus.Items.Clear;
with DMPrincipal.datasetAux do
begin
Close;
CommandText := 'SELECT MEN_CODIGO, MEN_NOME, MEN_CODIGOPAI FROM MENUS ORDER BY MEN_CODIGO';
Open;
First;
while not Eof do
begin
if FieldByName('MEN_CODIGOPAI').AsString = '' then
tvMenus.Items.AddObject(nil, FieldByName('MEN_NOME').AsString, Pointer(FieldByName('MEN_CODIGO').AsInteger))
else
begin
no := retornaNoPai(FieldByName('MEN_CODIGOPAI').AsInteger);
if Assigned(no) then
tvMenus.Items.AddChildObject(no, FieldByName('MEN_NOME').AsString, Pointer(FieldByName('MEN_CODIGO').AsInteger));
end;
Next;
end;
end;
end;
procedure TFrmPermissoesUsuarios.HabilitarOpcoes(const tof : Boolean);
begin
cbConsultar.Checked := False;
cbConsultar.Enabled := tof;
cbIncluir.Checked := False;
cbIncluir.Enabled := tof;
cbAlterar.Checked := False;
cbAlterar.Enabled := tof;
cbExcluir.Checked := False;
cbExcluir.Enabled := tof;
end;
procedure TFrmPermissoesUsuarios.FormCreate(Sender: TObject);
begin
dsLookupUsuarios.DataSet.Open;
btnSalvar.Enabled := False;
HabilitarOpcoes(False);
semDireitosTela := False;
end;
procedure TFrmPermissoesUsuarios.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dsLookupUsuarios.DataSet.Close;
end;
procedure TFrmPermissoesUsuarios.LimparLista;
begin
tvMenus.Items.Clear;
end;
procedure TFrmPermissoesUsuarios.dbUsuariosKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #27 then
begin
dbUsuarios.KeyValue := -1;
btnSalvar.Enabled := False;
HabilitarOpcoes(False);
LimparLista;
end;
end;
procedure TFrmPermissoesUsuarios.dbUsuariosCloseUp(Sender: TObject);
begin
if dbUsuarios.Text <> '' then
CarregarMenus;
end;
procedure TFrmPermissoesUsuarios.CarregarDireitosUsuarioMenu(const codUsuario, codMenu : Integer);
begin
with DMPrincipal.datasetAux do
begin
Close;
CommandText := 'SELECT PU_NOVO, PU_ALTERAR, PU_APAGAR, PU_CONSULTAR ' +
' FROM PERMISSOES_USUARIOS ' +
' WHERE USU_CODIGO = ' + IntToStr(codUsuario) +
' AND MEN_CODIGO = ' + IntToStr(codMenu);
Open;
if not IsEmpty then
begin
semDireitosTela := False;
cbConsultar.Checked := FieldByName('PU_CONSULTAR').AsBoolean;
cbIncluir.Checked := FieldByName('PU_NOVO').AsBoolean;
cbAlterar.Checked := FieldByName('PU_ALTERAR').AsBoolean;
cbExcluir.Checked := FieldByName('PU_APAGAR').AsBoolean;
end
else
begin
semDireitosTela := True;
cbConsultar.Checked := False;
cbIncluir.Checked := False;
cbAlterar.Checked := False;
cbExcluir.Checked := False;
end;
end;
end;
procedure TFrmPermissoesUsuarios.verificarPermissaoMenuPai(const no : TTreeNode);
begin
with DMPrincipal.datasetAux do
begin
Close;
CommandText := 'SELECT PU_CONSULTAR FROM PERMISSOES_USUARIOS WHERE USU_CODIGO = ' +
IntToStr(dbUsuarios.KeyValue) + ' AND MEN_CODIGO = ' + IntToStr(Integer(no.Data));
Open;
if IsEmpty then
begin
Close;
CommandText := 'INSERT INTO PERMISSOES_USUARIOS (USU_CODIGO, MEN_CODIGO, PU_CONSULTAR) ' +
'VALUES (' + IntToStr(dbUsuarios.KeyValue) + ', ' + IntToStr(Integer(no.Data)) + ', ' +
BoolToStr(cbConsultar.Checked, True) + ')';
ExecSQL(True);
end
else
if not Fields[0].AsBoolean then
begin
Close;
CommandText := 'UPDATE PERMISSOES_USUARIOS SET PU_CONSULTAR = True ' +
' WHERE USU_CODIGO = ' + IntToStr(dbUsuarios.KeyValue) +
' AND MEN_CODIGO = ' + IntToStr(Integer(no.Data));
ExecSQL(True);
end;
end;
if Assigned(no.Parent) then
verificarPermissaoMenuPai(no.Parent);
end;
procedure TFrmPermissoesUsuarios.btnSalvarClick(Sender: TObject);
begin
if not (cbConsultar.Checked) and ((cbIncluir.Checked) or (cbAlterar.Checked) or (cbExcluir.Checked)) then
cbConsultar.Checked := True;
with DMPrincipal.datasetAux do
begin
Close;
if semDireitosTela then
CommandText := 'INSERT INTO PERMISSOES_USUARIOS (USU_CODIGO, MEN_CODIGO, PU_NOVO, PU_ALTERAR, PU_APAGAR, PU_CONSULTAR) ' +
'VALUES (' + IntToStr(dbUsuarios.KeyValue) + ', ' + IntToStr(Integer(tvMenus.Selected.Data)) + ', ' +
BoolToStr(cbIncluir.Checked, True) + ', ' + BoolToStr(cbAlterar.Checked, True) + ', ' +
BoolToStr(cbExcluir.Checked, True) + ', ' + BoolToStr(cbConsultar.Checked, True) + ')'
else
CommandText := 'UPDATE PERMISSOES_USUARIOS SET ' +
'PU_NOVO = ' + BoolToStr(cbIncluir.Checked, True) + ', ' +
'PU_ALTERAR = ' + BoolToStr(cbAlterar.Checked, True) + ', ' +
'PU_APAGAR = ' + BoolToStr(cbExcluir.Checked, True) + ', ' +
'PU_CONSULTAR = ' + BoolToStr(cbConsultar.Checked, True) +
' WHERE USU_CODIGO = ' + IntToStr(dbUsuarios.KeyValue) +
' AND MEN_CODIGO = ' + IntToStr(Integer(tvMenus.Selected.Data));
ExecSQL(True);
if (Assigned(tvMenus.Selected.Parent)) and (cbConsultar.Checked) then
verificarPermissaoMenuPai(tvMenus.Selected.Parent);
end;
end;
procedure TFrmPermissoesUsuarios.tvMenusClick(Sender: TObject);
begin
if Assigned(tvMenus.Selected) then
begin
HabilitarOpcoes(True);
CarregarDireitosUsuarioMenu(dbUsuarios.KeyValue, Integer(tvMenus.Selected.Data));
btnSalvar.Enabled := True;
end;
end;
Frederico Brigatte***
Curtir tópico
+ 0Posts
24/04/2013
Wilton Júnior
Da uma lida nesse artigo, as vezes te ajuda.
Gostei + 0
24/04/2013
Joel Rodrigues
cbConsultar.Checked := FieldByName('PU_CONSULTAR').AsString = 'S';Gostei + 0
24/04/2013
Frederico Brigatte***
BoolToStr(cbExcluir.Checked, True)
Gostei + 0
24/04/2013
Frederico Brigatte***
Gostei + 0
24/04/2013
Wilton Júnior
Gostei + 0
24/04/2013
Frederico Brigatte***
Gostei + 0
24/04/2013
Frederico Brigatte***
cbConsultar.Checked := FieldByName('PU_CONSULTAR').AsString = 'S';
cbIncluir.Checked := FieldByName('PU_NOVO').AsString = 'S';
cbAlterar.Checked := FieldByName('PU_ALTERAR').AsString = 'S';
cbExcluir.Checked := FieldByName('PU_APAGAR').AsString = 'S';
E aqui?
semDireitosTela := True; cbConsultar.Checked := False; cbIncluir.Checked := False; cbAlterar.Checked := False; cbExcluir.Checked := False;
Gostei + 0
24/04/2013
Joel Rodrigues
cbConsultar.Checked := False;
cbIncluir.Checked := False;
cbAlterar.Checked := False;
cbExcluir.Checked := False;
Gostei + 0
24/04/2013
Frederico Brigatte***
Gostei + 0
24/04/2013
Joel Rodrigues
Vamos por parte. Vá alterando e vendo quais erros ocorrem.
Gostei + 0
24/04/2013
Frederico Brigatte***
Gostei + 0
24/04/2013
Joel Rodrigues
Gostei + 0
24/04/2013
Frederico Brigatte***
Column unknow FALSE
Da esse erro qdo clica no botão salvar. Código do botão é esse:
procedure TFrmPermissoesUsuarios.btnSalvarClick(Sender: TObject);
begin
if not (cbConsultar.Checked) and ((cbIncluir.Checked) or (cbAlterar.Checked) or (cbExcluir.Checked)) then
cbConsultar.Checked := True;
with DMPrincipal.datasetAux do
begin
Close;
if semDireitosTela then
CommandText := 'INSERT INTO PERMISSOES_USUARIOS (USU_CODIGO, MEN_CODIGO, PU_NOVO, PU_ALTERAR, PU_APAGAR, PU_CONSULTAR) ' +
'VALUES (' + IntToStr(dbUsuarios.KeyValue) + ', ' + IntToStr(Integer(tvMenus.Selected.Data)) + ', ' +
BoolToStr(cbIncluir.Checked, True) + ', ' + BoolToStr(cbAlterar.Checked, True) + ', ' +
BoolToStr(cbExcluir.Checked, True) + ', ' + BoolToStr(cbConsultar.Checked, True) + ')'
else
CommandText := 'UPDATE PERMISSOES_USUARIOS SET ' +
'PU_NOVO = ' + BoolToStr(cbIncluir.Checked, True) + ', ' +
'PU_ALTERAR = ' + BoolToStr(cbAlterar.Checked, True) + ', ' +
'PU_APAGAR = ' + BoolToStr(cbExcluir.Checked, True) + ', ' +
'PU_CONSULTAR = ' + BoolToStr(cbConsultar.Checked, True) +
' WHERE USU_CODIGO = ' + IntToStr(dbUsuarios.KeyValue) +
' AND MEN_CODIGO = ' + IntToStr(Integer(tvMenus.Selected.Data));
ExecSQL(True);
if (Assigned(tvMenus.Selected.Parent)) and (cbConsultar.Checked) then
verificarPermissaoMenuPai(tvMenus.Selected.Parent);
end;
end;
Gostei + 0
24/04/2013
Joel Rodrigues
QuotedStr(BoolToStr(cbIncluir.Checked, True))
Faça isso em todos os campos onde você está usando BoolToStr.
Gostei + 0
24/04/2013
Frederico Brigatte***
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)