Ir para conteúdo
Fórum Script Brasil

nsouza

Membros
  • Total de itens

    323
  • Registro em

  • Última visita

Posts postados por nsouza

  1. Ai quando eu fosse criar um acesso era somente cadastar o nome e atribuir um perfil e ele já daria o devido acesso.

    O que voce está querendo é um controle de nível de acesso, onde o usuário somente porderá acessar algumas coisas dentro do programa

    Veja esses links e tire algumas idéias

    http://geocities.yahoo.com.br/marcio.theis...troleAcesso.zip

    http://www.inf.ufsc.br/~prass/sources/usuarios.zip

    http://www.planetadelphi.com.br/dica/6717/...1tico-e-simples

    http://edn.embarcadero.com/br/article/36235

    abraço

    (Resolvido) Vou analisar com cuidado, obrigado pela ajuda

  2. Colegas,

    um colega me forneceu uma copia do delphi 2009 trial salvo como imagem em um DVD.

    consegui abrir a imagem e copiar o arquivo para o meu Drive C:, mas não consigo instalar pois quando clico em

    instalar aparece a tela dando as opções de instalação, eu cliquei para instalar Delphi 2009 e C++ apenas executou um

    janela do prompt do DOS mas não abriu a janela de instação do delphi.

    Vocês poderiam me dar uma ajuda.

    A versão é a 2009, mas e tem todos os arquivos porem meu amigo salvou, compactou n o winrar e me deu, não é a que você citou não.

    Embora quando eu clico ele abre o forma para instalar.

  3. Colegas,

    olhei alguns exemplos de administração de usuário, são bons mas gostaria de tirar uma dúvida.

    alguém tem alguns sistema que funcione da seguinte forma? Obs: Estou usando o Turbo Delphi 2006

    1 - Registrar o Usuario

    2- Ter uma opção para definir o perfil do usuario, ou seja posso criar o perfil e definir o que que ele usará

    Ex

    No meu menu tenho o seguinte.

    Cliente, funcionario, relatório, consulta, pedido, venda, segurança, help, Ajuda

    ai faço assim:

    Perfil fucionario acessa:

    Cliente, relatorio, consulta, venda, pedido

    Perfil Administrador

    Acessa tudo

    Perfil Vendedor

    Acessa Relatorio, Consulta

    Ai quando eu fosse criar um acesso era somente cadastar o nome e atribuir um perfil e ele já daria o devido acesso.

    Ex:

    Jose Maria -> Perfil funcionario

    Maria Jose -> Perfil Vendedor

    Ronaldo Souza ->Pefil Administrador

    Desta forma eu não teria que ficar atibuindo todos os menus eu crio o perfil e atribuo o perfil ao nome.

    Muito obrigado, esta ajuda será muito importante.

  4. Colegas,

    um colega me forneceu uma copia do delphi 2009 trial salvo como imagem em um DVD.

    consegui abrir a imagem e copiar o arquivo para o meu Drive C:, mas não consigo instalar pois quando clico em

    instalar aparece a tela dando as opções de instalação, eu cliquei para instalar Delphi 2009 e C++ apenas executou um

    janela do prompt do DOS mas não abriu a janela de instação do delphi.

    Vocês poderiam me dar uma ajuda.

  5. Não vou dizer a você que não conheço nada, estou aprendendo a programar e como todo iniciante talvez eu faça perguntas que pessoas experiente como vocês podem achar banais.

    Eu tinha uma pasta no mysql com todas as minha tabelas, o problema que quando formatei meu micro fiz um backup desta pasta

    agora preciso abrir o banco de dados, se eu criar um banco de dados novo terei que digitar todas a 28 tabela de novo e gostaria de reaproveitar

    as tabelas deste backUp.

    Alguém poderia me ajudar, levando em conta que sou um iniciante.

    Desde já agradeço a ajuda bem disposta.

  6. Colegas,

    instalei a mysql 5.1 mas não consigo acessar a pasta onde ficam armazenadas as tabelas, já olhei em:

    C:\Arquivos de programas\MySQL\MySQL Server 5.1\, mas não encontrei, mandei localizar e nada.

    Como faço para acessa-la.

    Obrigado.

  7. Colegas, eu tenho o turbo delphi 2006 (free) , algum pode me ajudar por indicar um ferramenta de relatório com a instrução de como instalar por favor?

    A versão gratuita do turbo delphi 2006 têm algumas limitações, sendo que a principal delas é a impossibilidade de instalar componentes adicionais na IDE.

    Entretanto acho que voce pode usar o Fast-Report

    http://ns.fast-report.com/pbc_download/

    abraço

    Usei o report manager, você tem algum tutorial que ensina a integrar ele ao turbo delphi já que ele é um gerador externo a IDE do delphi?

  8. Principais Exceções

    O Delphi define muitas exceções, para cada erro existe uma exceção correspondente.

    Classe

    Descrição

    Exception

    Exceção genérica, usada apenas como ancestral de todas as outras exceções

    EAbort

    Exceção silenciosa, pode ser gerada pelo procedimento Abort e não mostra nenhuma mensagem

    EAccessViolation

    Acesso inválido à memória, geralmente ocorre com objetos não inicializados

    EConvertError

    Erro de conversão de tipos

    EDivByZero

    Divisão de inteiro por zero

    EInOutError

    Erro de Entrada ou Saída reportado pelo sistema operacional

    EIntOverFlow

    Resultado de um cálculo inteiro excedeu o limite

    EInvalidCast

    TypeCast inválido com o operador as

    EInvalidOp

    Operação inválida com número de ponto flutuante

    EOutOfMemory

    Memória insuficiente

    EOverflow

    Resultado de um cálculo com número real excedeu o limite

    ERangeError

    Valor excede o limite do tipo inteiro ao qual foi atribuída

    EUnderflow

    Resultado de um cálculo com número real é menor que a faixa válida

    EVariantError

    Erro em operação com variant

    EZeroDivide

    Divisão de real por zero

    EDatabaseError

    Erro genérico de banco de dados, geralmente não é usado diretamente

    EDBEngineError

    Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro

    try
    DM.Cds_Inadimplente.Post;
    DM.Cds_Inadimplente.ApplyUpdates(-1);
    [b]Except on E: Exception do[/b]
    begin
    MessageDlg('Erro ao salvar o registro.'+#13+#10+E.Message,mtError,[mbOk],0);
    DM.Cds_Inadimplente.CancelUpdates;
    end;
    end;
    DM.V_Morador.Next;
    end;
    
    ShowMessage ('Foi gerada a tabela referente ao mês de ' + mes_ano + ' incluindo todos os inadimplentes');
    End;
    Veja que voce colocou a classe basica das Exceções e dela são derivadas todas as outras
    Exception Base class EAbort Abort without dialog EAbstractError Abstract method error AssertionFailed Assert call failed EBitsError Boolean array error ECommonCalendarError Calendar calc error EDateTimeError DateTime calc error EMonthCalError Month calc error EConversionError Raised by Convert EConvertError Object convert error EDatabaseError Database error EExternal Hardware/Windows error EAccessViolation Access violation EControlC User abort occured EExternalException Other Internal error EIntError Integer calc error EDivByZero Integer Divide by zero EIntOverflow Integer overflow ERangeError Out of value range EMathError Floating point error EInvalidArgument Bad argument value EInvalidOp Inappropriate operation EOverflow Value too large EUnderflow Value too small EZeroDivide Floating Divide by zero EStackOverflow Severe Delphi problem EHeapException Dynamic memory problem EInvalidPointer Bad memory pointer EOutOfMemory Cannot allocate memory EInOutError IO error EInvalidCast Object casting error EInvalidOperation Bad component op EMenuError Menu item error EOSError Operating system error EParserError Parsing error EPrinter Printer error EPropertyError Class property error# EPropReadOnly Invalid property access EPropWriteOnly Invalid property access EThread Thread error EVariantError Variant problem
    Primeiro veja que tipo de exceção esta sendo gerada para poder tratar esse erro
    try
    DM.Cds_Inadimplente.Post;
    DM.Cds_Inadimplente.ApplyUpdates(-1);
    [b]Except on E: Exception do[/b]
    begin
    
        ShowMessage('Exception class name = '+E.ClassName);
        ShowMessage('Exception message = '+E.Message);
    
        DM.Cds_Inadimplente.CancelUpdates;
    end;
    end;
    DM.V_Morador.Next;
    end;
    
    ShowMessage ('Foi gerada a tabela referente ao mês de ' + mes_ano + ' incluindo todos os inadimplentes');
    End;

    http://scriptbrasil.com.br/forum/index.php...te=exce%E7%F5es

    abraço

    Caro Jhonas

    fiz o seu exemplo usando usa explicação da a mensagem EDataBaseError with message 'Duplicate entry '201-8/2009' for key 1.

    Tentei usar a classe EDataBaseError, mas deu que era desconhecida e continou dando a mesma mensaem em ingles.

    Qual classe devo aplicar?

  9. mas quando clico no botão esta inserindo apenas um registro.

    Faça a alteração no código

    procedure TF_GerarInadimplente.SpeedButton1Click(Sender: TObject);
    Var mes_ano:string;
    VarDate: TDate;
    i : integer;
    
    begin
    DM.CDs_Inadimplente.close;
    DM.Cds_Inadimplente.open;
    VarDate:= strToDate(mkeDataInicio.text);
    
    // Seleciona todos os registros da tabela morador
    With DM.V_Morador do
    begin
    Active:= false;
    SQL.Clear;
    SQL.Add('Select * from morador');
    Active:= true;
    end;
    
    For i := 1 to DM.V_Morador.RecordCount do 
    begin
      // Codigo para inserir registros na tabela inadimplencia
      If DM.V_Morador.fieldbyname('codapt').AsString <> '' then
      begin
      DM.Cds_Inadimplente.append;
      DM.CDs_Inadimplentecodapt.AsString := DM.V_Morador.fieldbyname('codapt').asstring;
      DM.Cds_InadimplenteCodCondominio.AsString := DM.V_Morador.fieldbyname('codCondominio').asstring;
    
      mes_ano:= IntToStr(MonthOf(VarDate)) + '/' + intToStr(YearOf(VarDate));
      DM.Cds_InadimplenteMesAno.asstring := mes_ano;
     DM.Cds_Inadimplente.post;
      DM.Cds_Inadimplente.ApplyUpdates(-1);
      end;
    DM.V_Morador.Next;
    end;
    
    ShowMessage ('Foi gerada a tabela referente ao mês de ' + mes_ano + ' incluindo todos os inadimplentes');
    
    End;

    abraço

    Caro Jhonas,

    Funcionou, muito obrigado.

    Pra ficar mais melhor eu gostaria de implementar um tratamenteo de erro usando o Try

    porque que quando clico no botão da a mensagem de erro que esta com registro duplicado eu gostaria

    de uma mensagem de erro mais amigavel para o usuario.

    Tentei fazer mas continuou dando a mensagem em inglês do sistema, e para cada registro disparava uma mensagem

    ao invés de da a mensagem no fim da importação.

    Poderia analisar para mim por favor?

    Fiz assim:

    try

    DM.Cds_Inadimplente.Post;

    DM.Cds_Inadimplente.ApplyUpdates(-1);

    Except on E: Exception do

    begin

    MessageDlg('Erro ao salvar o registro.'+#13+#10+E.Message,mtError,[mbOk],0);

    DM.Cds_Inadimplente.CancelUpdates;

    end;

    end;

    DM.V_Morador.Next;

    end;

    ShowMessage ('Foi gerada a tabela referente ao mês de ' + mes_ano + ' incluindo todos os inadimplentes');

    End;

  10. Colegas,

    meu problema é que o procedimento abaixo não insere todos os registos na tabela.

    Ele tem que selecionar todos os registros da tabela morador, no exemplo abaixo a tabela tem 3 registros

    mas quando clico no botão esta inserindo apenas um registro.

    Alguém poderia ajudar, por favor?

    procedure TF_GerarInadimplente.SpeedButton1Click(Sender: TObject);

    Var mes_ano:string;

    VarDate: TDate;

    begin

    DM.CDs_Inadimplente.close;

    DM.Cds_Inadimplente.open;

    VarDate:= strToDate(mkeDataInicio.text);

    // Seleciona todos os registros da tabela morador

    With DM.V_Morador do

    begin

    Active:= false;

    SQL.Clear;

    SQL.Add('Select * from morador');

    Active:= true;

    end;

    // Codigo para inserir registros na tabela inadimplencia

    If DM.V_Morador.fieldbyname('codapt').AsString <> '' then

    begin

    DM.Cds_Inadimplente.append;

    DM.CDs_Inadimplentecodapt.AsString := DM.V_Morador.fieldbyname('codapt').asstring;

    DM.Cds_InadimplenteCodCondominio.AsString := DM.V_Morador.fieldbyname('codCondominio').asstring;

    mes_ano:= IntToStr(MonthOf(VarDate)) + '/' + intToStr(YearOf(VarDate));

    DM.Cds_InadimplenteMesAno.asstring := mes_ano;

    DM.Cds_Inadimplente.post;

    end;

    DM.Cds_Inadimplente.ApplyUpdates(-1);

    ShowMessage ('Foi gerada a tabela referente ao mês de ' + mes_ano + ' incluindo todos os inadimplentes');

    End;

  11. Muito obrigado, ficou muito bom!

    O problema é que quando tenho somente um registro na Grid, ele mostra a mensagem 0 morador foi arquivado, deveria mostrar 1 morador foi arquivado. O que houve?

    Primeiramente, quando existe mais de 1 registro ele dá certo? Ou ele sempre vai mostrar com um resultado a menos?

    Lembre-se que a mensagem " X moradores foram arquivados com sucesso" deve estar logo após o término do LOOP

    Obrigado, ficou perfeito!

    (Resolvido) Selecionar linha do DBGrid;

    Colegas,

    desculpe por reativar este post.

    O fato é o seguinte.

    Tudo explicado ate agora funcionou, eu seleciono várias linha do DBGrid e ele adiciona na tabela,

    Mas gostaria que as linhas que não fossem selecionadas tb fossem inseridas em uma tabela Ex.:

    Linhas selecionadas -> A clicar no botão confirmar fossem para Tabela "A"

    Linhas não seleciondas -> Ao mesmo tempo que o botão Confirmar fosse clicado essas dados tb seriam exportado porém para a tabela "B"

    Obrigado!

  12. Muito obrigado, ficou muito bom!

    O problema é que quando tenho somente um registro na Grid, ele mostra a mensagem 0 morador foi arquivado, deveria mostrar 1 morador foi arquivado. O que houve?

    Primeiramente, quando existe mais de 1 registro ele dá certo? Ou ele sempre vai mostrar com um resultado a menos?

    Lembre-se que a mensagem " X moradores foram arquivados com sucesso" deve estar logo após o término do LOOP

    Obrigado, ficou perfeito!

    (Resolvido) Selecionar linha do DBGrid;

  13. 1 - Mas como faço para configura o campo no formato R$ 60,35 ou apenas 60,35?

    2 - Na minha procedure grava (enviar os dados para o banco) devo referenciar desta forma:

    DM.Q_Condominio.Fieldbyname('vlrCondominio').values := strToFloat(DBEdit1.text); ?

    3- O campo no banco de dados eu formatei como Double(9,2) posso deixar assim mesmo?

    na aplicação, se fosse EU, utilizaria um edit normal, com um evento no OnKeyPress para receber apenas números e a vírgula. E depois, na gravação do parâmetro, eu utilizaria:

    DM.Q_Condominio.Fieldbyname('vlrCondominio').AsFloat := strToFloat(Edit1.text);

    E quanto ao banco, pode deixar assim mesmo.

    Qualquer dúvida, poste aí.

    Calega, nada!

    Coloquei o TEdit e coloquei um DBEdit, e deu a mensagem de erro:

    'Data Truncated for colunm'precocondominio' at row1'

    Quando gravo direto no banco de dados não da este problema, mas quando mando gravar do

    formulário aparece esta mensagem.

    alguém sabe como resolver isso?

  14. O Jeito mais facil, e ainda traduzindo as opçoes do messageDlg para portugues (para ficar Yes= Sim No=Não e Cancel=Cancelar)

    var mensagem : TForm;

    begin

    //MOSTRA O MESSAGEDLG (TRADUZIDO PARA PORTUGES)

    Mensagem:=CreateMessageDialog(' MENSAGEM ',MtConfirmation,[MbYes,MbNo]);

    Mensagem.Caption:='TITULO';

    TButton(Mensagem.FindComponent('Yes')).Caption:='Sim';

    TButton(Mensagem.FindComponent('No')).Caption:='Não';

    Mensagem.ShowModal;

    if Mensagem.ModalResult=MrYes then begin

    Arquivar;

    DMConsultas.CDs_ListaMorador.Delete;

    DMConsultas.CDs_ListaMorador.ApplyUpdates(-1);

    DMConsultas.CDs_ListaMorador.Refresh;

    exit;

    end;

    if Mensagem.ModalResult=MrNo then begin

    DMConsultas.CDs_ListaMorador.Delete;

    DMConsultas.CDs_ListaMorador.ApplyUpdates(-1);

    DMConsultas.CDs_ListaMorador.Refresh;

    exit;

    end;

    end;

    para adicionar o cancelar as opçoes seria só alterar MtConfirmation,[MbYes,MbNo] para MtConfirmation,[MbYes,MbNo,MBCancel]

    (Resolvido) Incrementar procedimento para excluir

  15. Opa, faz o seguinte, no lugar do editnum coloque um DBEdit, e link-o no field correspondente.

    Já no Campo Status tente apaga-lo, e crio-o novamente, porem já coloque todas as configurações que necessita.

    Abraços

    1 - Mas como faço para configura o campo no formato R$ 60,35 ou apenas 60,35?

    2 - Na minha procedure grava (enviar os dados para o banco) devo referenciar desta forma:

    DM.Q_Condominio.Fieldbyname('vlrCondominio').values := strToFloat(DBEdit1.text); ?

    3- O campo no banco de dados eu formatei como Double(9,2) posso deixar assim mesmo?

    Obrigado!

  16. Eu uso a ferramenta grafica EMS for mysql, quando digito o valor diretamente nela ou altero o valor funciona perfeitamente.

    O problema ésta no frontend. Quando digito no formulário ai da a mensagem de erro.

    Como o problema não está relacionado diretamente ao MySQL, solicito que você informe a ferramenta de programação que você usa para que eu possa transferir este tópico para a área correta.

    Este tópico eu postei no forum Delphi/Kylix e não tive sucesso.

    Estou usando Delphi, conexão dbexpress, mysq 5.0.77

  17. Paz, amado.

    Referente ao campo vlrCondominio, pode ser algum erro de formatação, no caso acho que pode ser a vírgula, no lugar da vírgula tente colocar um ponto, e veja se você conseguiu.

    Fique na paz!

    Já fiz isso, essa virgula é do componente EditNum, tenho um outro banco de dados que funiona normalmente com ele.

    Não sei o que pode ter ocorrido! Ainda espero ajuda...

  18. 'nsouza' ,

    Quando você executa os comandos diretamentye na linha de comando do MySQL a gravação é efetuada?

    Se for, o problema pode estar em um de dois lugares: o ODBC (a versão pode estar com erro) ou o componente do Delphi.

    Tenta de novo e reporte o que você vê.

    Estou achando estranho pois não estou reconhecendo as mensagens de erro como sendo do MySQL.

    Eu uso a ferramenta grafica EMS for mysql, quando digito o valor diretamente nela ou altero o valor funciona perfeitamente.

    O problema ésta no frontend. Quando digito no formulário ai da a mensagem de erro.

  19. você poderia dar um exemplo de como fazer esse loop, sou iniciante no delphi.

    procedure TForm.SpeedButton1Click(Sender: TObject);
    var idx, //contador :integer
    begin
    
    fdados.tabelareceptora.append;
    //contador := 0;
    
    with DBGrid1.DataSource do
        if DBGrid1.SelectedRows.Count > 0 then
    
          for Idx :=0 to DBGrid1.SelectedRows.Count-1 do
          begin
    
            fdados.tabelaexportadora.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[Idx]));
    
            fdados.tabelareceptora.FieldByName('NOME').Value := fdados.tabelaexportadora.FieldByName('NOME').Value;
            fdados.tabelareceptora.FieldByName('PROFISSAO').Value := fdados.tabelaexportadora.FieldByName('PROFISSAO').Value;
            fdados.tabelareceptora.FieldByName('SALARIO').Value := fdados.tabelaexportadora.FieldByName('SALARIO').Value;
    
            //contador := contador+1;
    
            Fdados.tabelareceptora.Append;
    
          end;
    
    //onde_quer_o_texto.text := 'Foram arquivados ' + contador + ' registros.';
    Fdados.tabelareceptora.ApplyUpdates(0);
    end;
    só adicionar as linhas que eu coloquei // na frente obviamente retirando as barras ou simplesmente
    fdados.tabelareceptora.first;
    
    while not fdados.tabelareceptora.eof do begin
    contador := contador +1;
    fdados.tabelareceptora.next;
    end;
    onde_quer_o_texto.text := 'Foram arquivados ' + contador + ' registros.';

    Muito obrigado, ficou muito bom!

    O problema é que quando tenho somente um registro na Grid, ele mostra a mensagem 0 morador foi arquivado, deveria mostrar 1 morador foi arquivado. O que houve?

×
×
  • Criar Novo...