Ir para conteúdo
Fórum Script Brasil

Halan Lopes

Membros
  • Total de itens

    104
  • Registro em

  • Última visita

Posts postados por Halan Lopes

  1. quando eu usava Access era assim que eu fazia

    SELECT Caixa.Código, Sum(IIf(IsNull([Reforço Caixa Consulta]![soma De Reforço]),0,[Reforço Caixa Consulta]![soma De Reforço])) AS Reforço, Sum(IIf(IsNull([Retirada Caixa Consulta]![soma De Retirada]),0,[Retirada Caixa Consulta]![soma De Retirada])) AS Retirada, Caixa.DataAbertura AS Data, IIf(IsNull([Despesas Consulta]!SomaDeValorDaDespesa),0,[Despesas Consulta]!SomaDeValorDaDespesa) AS ValorDasDespesas, IIf(IsNull([Pagamentos Consulta Por Data]!SomaDeValorDoPagamento),0,[Pagamentos Consulta Por Data]!SomaDeValorDoPagamento) AS SomaDeValorDoPagamento, Caixa.Abertura, IIf(IsNull(Caixa!Fechamento),0,Caixa!Fechamento) AS Fechamento, ([Abertura]+[Reforço]+[somaDeValorDoPagamento]+[Entrada])-([ValorDasDespesas]+[Retirada]+[Fechamento]) AS Saldo, Pedidos.Entrada

  2. teve jeito não tive que usar SQL coloquei essa expressão e deu certo

    SELECT Menu.Tipo, Menu.Campo, Menu.Flag

    FROM Menu

    WHERE Menu.Tipo=:TipodeUsuario AND Menu.Flag=True

    GROUP BY Menu.Tipo, Menu.Campo, Menu.Flag;

    e no OnSelect do ComboBox coloquei

    if ComboBox1.Text='Administrador' then

    ADOQuery1.Close;

    ADOQuery1.Parameters[0].Value:='Administrador';

    ADOQuery1.Open;

    if ComboBox1.Text='Usuario' then

    ADOQuery1.Close;

    ADOQuery1.Parameters[0].Value:='Usuario';

    ADOQuery1.Open;

  3. beleza mas já resolvi, agora to com uma duvida pra fazer dois filtros em uma tabela mais ou menos assim!

    if ComboBox1.Text='Administrador' then begin

    ADOTable1.Filter:= 'Tipo=True'+'Flag=True';

    end;

    if ComboBox1.Text='Usuario' then begin

    ADOTable1.Filter:= 'Tipo=False'+'Flag=True';

    end;

    alguém tem alguma ideia de como fazer sem usar SQL?

  4. criei dois edits com a hora que o programa é aberto e coloquei na procedure OnChange do MainMenu ex:

    procedure TfrmPrincipal.MainMenu1Change(Sender: TObject; Source: TMenuItem;

      Rebuild: Boolean);

    begin

    Edit1.Text:=FormatDateTime(' ', Now);

    Edit2.Text:=FormatDateTime(' ', Now);

    end;

    No evento Deactivate do Form Principal coloca-se

    procedure TfrmPrincipal.FormDeactivate(Sender: TObject);

    begin

    Edit2.Text:=FormatDateTime('', Now);

    end;

    E no evento Activate do Form Princiapl Coloca-se

    procedure TfrmPrincipal.FormActivate(Sender: TObject);

    begin

    if Edit1.Text=Edit2.Text then

    Button1.Click;

    end;

    ou seja quando a hora do Edit1 for igual ao do Edit2 o Button é clicado quando o Form Principal perde o foco o Edit2 é atualizado não executando assim a função do Button quando retornado ao Form Principal!

  5. Criei uma tabela com esses campos

    Campo -> Nome do campo do menu {Text}

    Sequencia 1 -> 1,2,3,... {Text}

    Ordem 1 -> 1,2,3,... {Text}

    Flag -> .T. ou .F. {Boolean}

    CampoNN -> Nome do SubCampo do menu{Text}

    FlagNN Boolean -> .T. ou .F. {Boolean}

    OBS "NN" em campoNN e FlagNN siganifica o numero de submenus nesse caso eu

    usei até o campo05 e o flag05.

    unit PrincipalPas;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics,

    Controls, Forms, Dialogs, StdCtrls, Menus, Grids, DBGrids,

    DB, DBTables, ExtCtrls, DBCtrls, Buttons;

    type

    TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    Button1: TButton;

    DBGrid1: TDBGrid;

    DataSource1: TDataSource;

    Table1: TTable;

    Table1CAMPO: TStringField;

    Table1SEQUENCIA: TStringField;

    Table1ORDEM: TStringField;

    Table1FLAG: TBooleanField;

    Table1CAMPO01: TStringField;

    Table1CAMPO02: TStringField;

    Table1CAMPO03: TStringField;

    Table1CAMPO04: TStringField;

    Table1CAMPO05: TStringField;

    Table1FLAG01: TBooleanField;

    Table1FLAG02: TBooleanField;

    Table1FLAG03: TBooleanField;

    Table1FLAG04: TBooleanField;

    Table1FLAG05: TBooleanField;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);

    var

    NewItem: TMenuItem;

    X, I, K: integer;

    XCampo: string;

    XFlag: Boolean;

    begin

    Table1.First;

    K := Table1SEQUENCIA.AsInteger;

    while (K <= 1000) and not Table1.Eof do

    begin

    K := Table1SEQUENCIA.AsInteger;

    NewItem := TMenuItem.Create(MainMenu1);

    try

    NewItem.Caption := Table1CAMPO.Value;

    NewItem.Enabled := Table1FLAG.Value;

    MainMenu1.Items.Add(NewItem);

    except

    NewItem.Free;

    raise; { reraise the exception }

    end;

    Table1.Next;

    I := K;

    while (I = K) and not Table1.Eof do

    begin

    NewItem := TMenuItem.Create(Self);

    try

    NewItem.Caption := Table1CAMPO.Value;

    NewItem.Enabled := Table1FLAG.Value;

    MainMenu1.Items[K - 1].Add(NewItem);

    X := 1;

    while (X <= 5) do

    begin

    XCampo := '';

    XFlag := False;

    if (X = 1) then

    begin

    XCampo := Table1CAMPO01.Value;

    XFlag := Table1FLAG01.Value;

    end

    else if (X = 2) then

    begin

    XCampo := Table1CAMPO02.Value;

    XFlag := Table1FLAG02.Value;

    end

    else if (X = 3) then

    begin

    XCampo := Table1CAMPO03.Value;

    XFlag := Table1FLAG03.Value;

    end

    else if (X = 4) then

    begin

    XCampo := Table1CAMPO04.Value;

    XFlag := Table1FLAG04.Value;

    end

    else if (X = 5) then

    begin

    XCampo := Table1CAMPO05.Value;

    XFlag := Table1FLAG05.Value;

    end;

    if XCampo <> '' then

    begin

    NewItem := TMenuItem.Create(Self);

    try

    NewItem.Caption := XCampo;

    NewItem.Enabled := XFlag;

    MainMenu1.Items[K - 1].Items[Table1ORDEM.AsInteger - 1].Add(NewItem);

    except

    NewItem.Free;

    raise; { reraise the exception }

    end;

    end;

    Inc(X);

    end;

    except

    NewItem.Free;

    raise; { reraise the exception }

    end;

    Table1.Next;

    K := Table1SEQUENCIA.AsInteger;

    end;

    end;

    end;

    end.

    até ai deu certo mas como faço pra acionar o eventi onclick já que o mainmenu está vazio? ou alguém tem outra ideia?

  6. Olá amigos!

    criei um Logoff da seguinte forma!

    procedure TLoginfrm.BitBtn1Click(Sender: TObject);

    Var Login, Senha, Tipo : String;

    begin

    ADOQuery1.Close;

    ADOQuery1.SQL.Text:= 'Select * from Usuario

    where Usuario.Usuario=:UsuarioBusca and Usuario.Senha=:SenhaBusca';

    ADOQuery1.Parameters[0].Value:= EditLogin.Text;

    ADOQuery1.Parameters[1].Value:= EditSenha.Text;

    ADOQuery1.Open;

    Login:= ADOQuery1Usuario.Value;

    Senha:= ADOQuery1Senha.Value;

    Tipo:= ADOQuery1Tipo.Value;

    if (Login = EditLogin.Text) and (Senha = EditSenha.Text) and (Tipo = 'Administrador')

    then begin

    frmPrincipal.ShowModal;

    end;

    if (Login = EditLogin.Text) and (Senha = EditSenha.Text) and (Tipo = 'Usuario')

    then begin

    frmPrincipal.ShowModal;

    end;

    if (Login <> EditLogin.Text) and (Senha <> EditSenha.Text)

    then begin

    ShowMessage('Usuario ou Senha inválidos.');

    EditLogin.Clear;

    EditSenha.Clear;

    EditLogin.SetFocus;

    end;

    end;

    se vocês perceberem deixei o Administrador e Usuario com os mesmos direitos, como faço para que se use uma tabela criada com nome TipoDeAcesso que contem os campos Ex:

    Tipo Acesso

    Usuario Cadastro Clientes

    Usuario Pedido

    Usuario Recebimento de Pacelas

    Usuario Estoque de Produtos

    Administrador "Ativase todos os acessos"

    agora a questão como inserir esses comamndos onde deveria ser ter EX:

    frmPrincipal.Pedido.Enable:= False;

    usar os campos que estão na tabela TipoDeAcesso para liberar ou bloquear o acesso ao menu?

×
×
  • Criar Novo...