Jump to content
Fórum Script Brasil

DanielR

Membros
  • Posts

    50
  • Joined

  • Last visited

About DanielR

DanielR's Achievements

0

Reputation

  1. DanielR

    Ponteiros

    Boa tarde a todos. uma dúvida. Tenho um objeto criado no local A do software do tipo TCliente, nele temos as seguinte propriedades nome e telefone (preenchidas). No local B vou precisar também de um objeto do tipo TCliente, devido a isso criei uma variável do tipo TCliente e já instanciei a mesma. Dentro do local A eu passo o meu objeto instanciado no local A para o local B assim; LocalB.VarTipoCliente := LocalA.VarTipoCliente; Isso esta correto, percebo que recebo todas as informações ligadas ao objeto , no entanto a minha duvida é quando vou dar um free na variável LocalB.VarTipoCliente percebo que a variavel LocalA.VarTipoCliente já não esta mais acessível tb. Porque?
  2. Boa noite a todos. Estou migrando um banco de firebird para postgres no entanto tem algo no firebird que não achei ainda no postgres trata-se do Post_Event. Sabem de alguma função, procedimento ou similar no postgres que tem similaridade no postgres? Obrigado a todos
  3. Pessoal, como não poderia ser diferente o erro é nosso, mas ta corrigido. O Firedac deve ser mais criterioso que o interbase, por isso onde cometemos o erro tenha passado a tanto tempo. O erro estava na origem (no select) no inner join. Select parcela.* from Documento inner join parcela on (documento.chaveA = parcela.chaveA) and (documento.chaveB = parcela.chaveB) o select usado não é esse mas o erro sim, como era um select de mais de 8 anos como falei, nem desconfiei dele, quando fui olhar o select esta buscando o documento fazendo um inner com parcelas, as linhas de resultado serão as mesmas com certeza, no entanto a importação de chave e demais constraints serão da tabela documento e não da tabela parcelas, por isso o erro de key violation O Select correto é: Select parcela.* from Parcela inner join Documento on (documento.chaveA = parcela.chaveA) and (documento.chaveB = parcela.chaveB) Obrigado a todos.
  4. Pessoal parece que hoje é o meu dia de postar. Obrigado pela paciência, no entanto não postaria se não fosse diferente. Vamos lá, como já disse num outro post estamos mudando de: interbase para FireDac no acesso ao banco de dados Firebird. O erro que apresento nesse momento é muito comum, e a resposta para ele também, porém no meu caso é diferente. Vejam, o erro é o famoso key violation. Segue o código: FcjParcelas.Insert; FcjParcelas.fieldbyname('empresa' ).AsInteger := self.GetEmpresa; // faz parte da chave FcjParcelas.FieldByName('codigo' ).AsInteger := Ficodigo; // faz parte da chave FcjParcelas.FieldByName('parcela' ).AsInteger := i; // faz parte da chave (aqui eu incremento cfe qtd de parcelas) FcjParcelas.FieldByName('dt_Vcto' ).AsDateTime := FdDtvcto; FcjParcelas.FieldByName('status' ).AsString := 'A'; FcjParcelas.FieldByName('valor' ).AsFloat := strToFloat(FcValorAuxParcela) + FdDiferenca; FcjParcelas.FieldByName('forma_pgto' ).AsInteger := FaFormaPgto.ID_FORMAPGTO; FcjParcelas.FieldByName('descricao' ).AsString := FaFormaPgto.DESCRICAO; FcjParcelas.Post; Posso lhes garantir que cada linha é diferente e como prova disso é que a mesma rotina funciona no interbase e esta rodando em produção a pelo menos 8 anos. outro detalhe, somente as grades de parcelas (que passam pelo código acima) que estão apresentando esse comportamento, as demais (até agora) estão incluindo, alterando, excluindo bem tranquilo cfe já funciona do mesmo. Se alguém já passou por algo parecido e quiser compartilhar agradeço.
  5. Pessoal foi localizado a configuração e já tudo certo. Vou colocar a imagem para que (se alguém precisar) possa ser útil para outra pessoa. Obrigado.
  6. Boa tarde a todos. Desde já agradeço pela atenção. Seguinte tenho um projeto que nasceu em 2008 com o firebird utilizando dentro do delphi os componentes do interbase, tudo ok. Pensamos em mudar para o firedac, porque o mesmo nos dá suporte a outros bancos (só por isso). Nos testes realizados estamos tendo problemas em cima de algo que esta funcionando no interbase normalmente. Vou dar um exemplo. Num pedido temos a grade e essa por sua vez exibe 'n' colunas que vem de um join entre tabelas do banco. Faço então meus inserts, updates e deletes na grade e depois entrego um olevariant para uma camada que vai persistir os dados no banco. Detalhe não ligo a grade diretamente ao banco. Nessa grade (com o firedac) estou tendo o seguinte erro: Campo ' NOME ' não pode ser modificado Veja bem pessoal, é o mesmo codigo, com o mesmo banco de dados porém conectados via interbase não tem esse erro. Pergunta. Tem alguma configuração do FIreDac que estou esquecendo de fazer? Estou pesquisando na internet e fazendo meus testes, se resolver ates de alguma resposta, posto aqui o caminho para a solução. Obrigado.
  7. Obrigado Jhonas por sua resposta, completa como sempre, no entanto demorei para ver a resposta no post, logo terminei por criar (meu colega de trabalho quem fez) uma aplicação para ler todos os arquivos .pas de uma unica vez e alterar o texto desejado neles. Deu certo. De qualquer maneira agradeço por todo o empenho desprendido.
  8. Boa tarde a todos. já agradeço a atenção de todos. Obrigado. Pessoal, tenho um projeto onde preciso trocar uma classe em suas chamadas, o detalhe é que são diversos arquivos (cerca de 5.000 arquivos) e gostaria de fazer isso de uma unica vez. Conheço o replace (mas não confio 100%), também conheço a refatoração, mas essa ultima não consegui executar a tarefa, se alguém puder ajudar agradeço. Como o codigo esta var query : TIBDataSet; // quero alterar essa classe,... begin query := TIBDataSet.Create(nil); try try Query.database := self.conn; // essa linha,... . . . Como o codigo deve ficar var query : TFDQuery; // ... por essa classe. begin query := TFDQuery.Create(nil); try try query.Connection := self.conn; // ... por essa linha . . .
  9. Opa Jonas, obrigado pelo retorno, mas não mencionei um outro detalhe, quanto ao componente testei o TDBGrid, assim como a grid o JEDI. Em ambos o mesmo resultado. já quanto ao build completa não cheguei a fazer. O que fiz foi mudar de checkbox para uma imagem que imita um, assim sendo passei por outros métodos e não tive o problema da lentidão, mas vou testar porque com certeza não normal o que aconteceu.
  10. Boa tarde a todos! Pessoal, hoje me deparei com uma situação bem inusitada( pelo menos pra mim), trata-se do checkbox no dbgrid. Bem, eu utilizo esse recurso a anos, porém hoje ao criar uma nova grade em uma nova tela percebo uma lentidão incrível. Ao rodar a aplicação e clicar no ckeckbox dava para ir tomar um cafezinho e voltar para então ver o check marcado ou desmarcado. Levei um susto e fui conferir algumas grades, a minha surpresa estava tudo normal. Pensei é aqui o problema, vamos atras, nada encontrei de anormal. Bom para descargo de consciência criei uma tela semelhante a outra que esta funcionado, chamando os mesmos métodos, buscando os mesmos dados no banco, a grid com as propriedades setadas igualmente e o resultado é o seguinte: access Violation na linha Check := IS_CHECK[Column.Field.AsInteger = 1]; outro detalhe, na maquina do colega desenvolvedor, o access violation não ocorria mesmo dentro de um try except end, no entanto a lentidão era a mesma. Alguém já viu algo parecido? Obrigado pela atenção. Segue o código. procedure TfrmGerenciamentoFinanceiro.dbgContasReceberDrawColumnCell( Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const IS_CHECK: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); var Check : Integer; R : TRect; begin inherited; if cdsContasReceber.Active then begin with dbgContasReceber do begin if Column.FieldName = 'IMPRIMIR' then begin Canvas.FillRect(Rect); Check := IS_CHECK[Column.Field.AsInteger = 1]; // Aqui estou tendo access Violation R := Rect; InflateRect(R, -2,-2); DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, Check); end end; end; end;
  11. Boa tarde Jhonas. Obrigado pela resposta, no entanto não pude executar o comando pela seguinte razão: O comando SFC /SCANNOW irá verificar a integridade dos arquivos do Sistema Operacional. Ao se deparar com arquivos corrompidos ou falhos, ele irá substituir tais arquivos. O Sistema até pode voltar a funcionar. No entanto, algumas outras aplicações instaladas, poderão falhar por estar usando um arquivo desatualizado ou alterado. Com base nisso o cliente não autorizou a execução do comando na máquina dele, infelizmente não pude testar. Obrigado.
  12. Bom dia a todos. Com certeza não iria postar se não fosse no minimo estranho. Tenho uma consulta simples e a coloco num clientdaset, ate ae tranquilo, no entanto o erro key violation aparece antes mesmo de ser exibido os dados na grade, porem não é só isso, esse erro ocorre somente numa maquina num acervo de 200 maquinas aproximadamente onde o sistema esta instalado. No momento estou descartando a aplicação por simplesmente funcionar em outras centena de maquinas. Estou descartando o banco por simplesmente outras cetenas de pessoas o estão acessando incluindo, alterando, excluindo, consultando numa boa, fiquei somente com a maquina, não queria simplesmente formata-la sem antes saber exatamente o que se passa. Esta maquina esta rodando windows 7 x64 original. Banco de Dados: Firebird centralizada num servidor. Algém já se deparou com isso ou algo parecido e deseja compartilhar ? Obrigado.
  13. Boa tarde a todos. Não colocaria no forum se não fosse no minimo intrigante (pra mim pelo menos), tenho uma aplicação e nela faço o seguinte calculo: 24 * 0,189 = 4,54 (já arredondado para 2 casas) isso na maquina A. Agora a mesma aplicação fazendo o mesmo calculo na maquina B temos: 24 * 0,189 = 4,32 Na maquina B esta sendo ignorado completamente a terceira casa fazendo o calculo como se fosse: 24 * 0,18 = 4,32 Alguém já passou por isso? Obrigado!
  14. Bom dia a todos! pessoal estou criando um fluxo de caixa aqui na empresa, porém estou me enrolando no tal do select. Vejam preciso trazer as seguintes informações ||||||| Recebido ||| A Receber ||| Total |||||||||| Pago ||||||||||| A pagar ||||||||| Total |||||| Recebido/Pago ||| A Receber/A pagar ||| Final |||||||| jan||| 100,00 |||||| 50,00 ||||||||| 150,00 ||||||| 75,00 |||||||||| 50,00 |||||||||||| 125,00 |||| 25,00 ||||||||||||| 0,00 |||||||||||||||||||| 25,00 |||||||| fev mar abril e assim por diante. tenho nomeu banco um relacionamento da seguinte forma: DOCUMENTOS (tudo passa por aqui) DOC_PAGAR DOC_RECEBER (se o documento é a pagar vai ser gravado na tab DOCUMENTOS e DOC_PAGAR, o mesmo acontece com DOC_RECEBER) todo documento tem PARCELAS mesmo que avista terá 1 parcela então ligado a tabela DOCUEMENTOS tenho a tab PARCELAS e ligado a ela a tabela PARCELAS_BAIXA. pronto. Basicamente é isso. Para pegar o valor recebido, a receber, pago e a pagar, foi tranquilo. os totais que estão apertando. vamos pegar: Recebido||||||||| A Receber ||||||||||||||||||||||||||||||| Total ok __________ é o valor nominal - valor recebido___ aqui tenho que calcular o Recebido + a Receber, porém deu esse erro: Column unknown VALOR_RECEBIDO. Vejam o select SELECT DOCUMENTOS.VALORTOTAL AS VALOR_NOMINAL, COALESCE((SELECT sum(PARCELA_BAIXA.VALOR_TOTAL) FROM PARCELA_BAIXA WHERE(1 = 1) AND(PARCELA_BAIXA.EMPRESA = PARCELAS.EMPRESA) AND(PARCELA_BAIXA.CODIGO = PARCELAS.CODIGO) AND(PARCELA_BAIXA.PARCELA = PARCELAS.PARCELA)),0) AS VALOR_RECEBIDO, COALESCE( PARCELAS.VALOR - VALOR_PAGO, PARCELAS.VALOR ) AS VALOR_ABERTO, (VALOR_RECEBIDO + VALOR_ABERTO) AS TOTAL /* aqui estou com o problema */ FROM DOCUMENTOS INNER JOIN PARCELAS ON (DOCUMENTOS.EMPRESA=PARCELAS.EMPRESA) AND (DOCUMENTOS.CODIGO=PARCELAS.CODIGO) LEFT OUTER JOIN PARCELA_BAIXA ON (PARCELAS.EMPRESA=PARCELA_BAIXA.EMPRESA) AND (PARCELAS.CODIGO=PARCELA_BAIXA.CODIGO) AND (PARCELAS.PARCELA=PARCELA_BAIXA.PARCELA) INNER JOIN DOC_RECEBER ON (DOCUMENTOS.EMPRESA=DOC_RECEBER.EMPRESA) AND (DOCUMENTOS.CODIGO=DOC_RECEBER.CODIGO) WHERE (1 = 1) AND (DOCUMENTOS.LANCAMENTO_ORIGEM <> 'FAT') Obrigado pela ajuda! Daniel
×
×
  • Create New...