Ir para conteúdo
  • Cadastre-se

Marcelo Calvi Belanga

Membros Pro
  • Total de ítens

    285
  • Registro em

  • Última visita

  • Days Won

    2

Posts postados por Marcelo Calvi Belanga

  1. Boa tarde @alves_sp

    Nesse formato, quando insiro uma nova venda e novos itens, na sequencia já grava no banco usando o applyupdates, assim também não tenho problemas. E quando efetuar a exclusão do item, como executa o applyupdates, também atualiza no banco e também não temos problemas. Mas perco as funcionalidades do cacheupdates, por exemplo, vamos pensar que somente no final da inserção da venda completa eu queira aplicar no banco e no meio dessa edição o usuário resolve remover ítens apenas usando o delete. Caso o usuário remova todos os itens, ocorre o erro em cache e para que não ocorra, tenho que aplicar as mudanças no banco usando o applyupdates, basicamente da mesma forma que você faz, mas nesse momento, se a venda que ainda não foi gravada no banco, será gravada e então não consigo cancelar a venda, pois, a mesma já atribuiu sei ID. É claro que isso não me traz grandes problemas, mas gostaria de deixar o cache em master x detail funcionando perfeitamente.

    Vou continuar tentando e se conseguir uma solução, posto aqui.

    Se por acaso quiser ver ao vivo o que ocorre e trocar experiencias, me avisa que te adiciono no skype.

    Por hora muito obrigado pela ajuda.

    Abraços!

  2. @alves_sp, realmente deve funcionar, o meu também funciona, mas o fato de utilizar o applyupdates a cada delete, perdemos a função do cache nesse ocasião, correto? já fiz inúmeros testes, mas quando executo delete no ultimo registro da detalhe, e resolvo cancelar com cancelupdates, ai que gera a bagunça. No seu ocorria a mesma situação?

  3. Boa noite a todos.

    Estou com uma situação há algum tempo em tabelas detalhes. Uso master X detail com Firedac, Firebird e cacheupdate ativado. Estou utilizando também um FDSchemaAdapter, porém, estou com um problema ao remover itens do detalhe em cache. Se inicio uma nova venda e incluo vários ítens, quando necessito remover um dos ítens funciona normalmente, mas se resolver remover todos os ítens, quando removo o último, o cache bagunça retornando todos os itens anteriores e as vezes té duplicando os ítens. Para resolver isso, a cada delete, tenho que gravar em disco com fdsschema.applysupdates, porém nesse caso o cache updates não é utilizado de forma correta. Uso Delphi Berlim e consultando alguns conhecidos, me disseram que é um bug mesmo. Já testei no tokio e também ocorre o problema.

    Alguém já passou por isso e resolveu de alguma outra forma?

    Muito Obrigado...

  4. 2 horas atrás, bga_programador disse:

    Preciso de um help.

    Eu já consigo gravar o conteúdo de um arquivo xml no banco de dados Firebird e campo blob. O problema que esse conteúdo fica entre dois ' (apóstrofo). Tem alguma forma de gravar sem esses apóstrofos ?

    Como você faz a gravação? Eu faço a gravação em um blob e não grava entre aspas...

  5. Sim, minha TRIGGER é INSERT ou UPDATE.

    Esse pequeno exemplo seria de entrada "COMPRA", para VENDA é só fazer ao contrário...

    Se a compra é cancelada concorda que o campo CONFIRMADO muda de True para False? Como eu disse, existem várias formas e momentos de mexer no estoque.

    Então, algo parecido com isso

     

    ....continua

    --SE A COMPRA ESTA SENDO CANCELADA
      if ((OLD.CONFIRMADO='True') AND (NEW.CONFIRMADO='False')) then
      begin
        FOR SELECT CODIGOPRODUTO, QUANTIDADE FROM COMPRAITENS
        WHERE COMPRAITENS.NUMEROCOMPRA=NEW.NUMEROCOMPRA
        INTO :CODPRO, :QTDE DO
        begin
          UPDATE PRODUTOS SET PRODUTOS.QUANTIDADE = COALESCE(PRODUTOS.QUANTIDADE,0) - COALESCE(:QTDE,0)
          WHERE CODIGOPRODUTO = :CODPRO;

    ...continua

     

    • Obrigado 1
  6. Como eu disse anteriormente, disparo a TRIGGER somente na confirmação da minha venda. No INSERT ou UPDATE, verifico o estado de um campo chamado CONFIRMADO, na tabela MASTER e disparo essa TRIGGER através dele. Algo mais ou menos assim:

    --SE A COMPRA ESTA SENDO CONFIRMADA
      if ((OLD.CONFIRMADO='False') AND (NEW.CONFIRMADO='True')) then
      begin
        FOR SELECT CODIGOPRODUTO, QUANTIDADE FROM COMPRAITENS
        WHERE COMPRAITENS.NUMEROCOMPRA=NEW.NUMEROCOMPRA
        INTO :CODPRO, :QTDE DO
        begin
          UPDATE PRODUTOS SET PRODUTOS.QUANTIDADE = COALESCE(PRODUTOS.QUANTIDADE,0) + COALESCE(:QTDE,0)
          WHERE CODIGOPRODUTO = :CODPRO;

    .......continua.

    Varia muito da necessidade de cada ERP...

    • Obrigado 1
  7. Boa tarde,

    Já dei uma procurada no fórum e encontrei apenas um tópico falando vagamento do assunto no ano passado.

    Existe alguma função do ACBrSAT para validar o XML?

    No momento uso o aplicativo da TANCA para fazer verificações quando apresenta o erro desconhecido.

    Obrigado a todos.

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.