Ir para conteúdo
  • Cadastre-se

RibaSoft

Membros
  • Total de ítens

    142
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por RibaSoft

  1. Boa noite, graças a DEUS descobri, não sei exatamente o porque mas deu certo.

    Agradeço a explicação de ambos, não conhecia o "TNFe" da "pcnNFE", fico grato pelo conhecimento, mas como o "Record" já estava pronto deixei com ele mesmo, nas proximas vezes usarei o "TNFe".

    Então... usando o exemplo do @Fabrício G. Araújo, rodou normal e o meu dava erro, dai de pois de varios testes descobri que tirando o "bcOutros: Pag[I].TBAND := 99;" do case o erro parou.

    Dai ficou assim e funciona perfeitamente...

    if (Pag[I].TPAG = 3) or (Pag[I].TPAG = 4) then
            case auxNF.NotasFiscais.Items[0].NFe.pag[I].tBand of
              bcVisa: Pag[I].TBAND := 1;
              bcMasterCard: Pag[I].TBAND := 2;
              bcAmericanExpress: Pag[I].TBAND := 3;
              bcSorocred: Pag[I].TBAND := 4;
              bcDinersClub: Pag[I].TBAND := 5;
              bcElo: Pag[I].TBAND := 6;
              bcHipercard: Pag[I].TBAND := 7;
              bcAura: Pag[I].TBAND := 8;
              bcCabal: Pag[I].TBAND := 9;
              bcAlelo: Pag[I].TBAND := 10;
              bcBanesCard: Pag[I].TBAND := 11;
              bcCalCard: Pag[I].TBAND := 12;
              bcCredz: Pag[I].TBAND := 13;
              bcDiscover: Pag[I].TBAND := 14;
              bcGoodCard: Pag[I].TBAND := 15;
              bcGreenCard: Pag[I].TBAND := 16;
              bcHiper: Pag[I].TBAND := 17;
              bcJcB: Pag[I].TBAND := 18;
              bcMais: Pag[I].TBAND := 19;
              bcMaxVan: Pag[I].TBAND := 20;
              bcPolicard: Pag[I].TBAND := 21;
              bcRedeCompras: Pag[I].TBAND := 22;
              bcSodexo: Pag[I].TBAND := 23;
              bcValeCard: Pag[I].TBAND := 24;
              bcVerocheque: Pag[I].TBAND := 25;
              bcVR: Pag[I].TBAND := 26;
              bcTicket: Pag[I].TBAND := 27;
              else
                Pag[I].TBAND := 99;
            end;

    Se alguem puder explicar pq esse "bcOutros" deu problema nesse contexto fico muito feliz pois gosto de aprender td nos minimos detalhes, mas o problema já está resolvido e da minha porte pode fechar o tópico se necessário, muito obrigado mesmo pela dedicação de vcs. DEUS abençoe.

  2. @Fabrício G. AraújoMuito obrigado pela sua boa vontade em me ajudar, esse Pag[I].TPAG é um "Pag: array of TPagamentos;" e T pagamentos é

    "TPagamentos = record
        TPAG: integer;
        TBAND: integer;
        VPAG: currency;
        CAUT: string;
      end;"

    onde armazeno os dados extraidos do xml para depois inseri-los no banco de dados.

    Eu Determino o tamanho do array assim:

    C := auxNF.NotasFiscais.Items[0].NFe.pag.Count;
        {$Hints off}
        SetLength(Pag, C);
        {$Hints on}       

    o auxNF é "auxNF: TACBrNFe;" eu gosto de criar todos os componentes em tempo de execução.

    esse codigo funcionar normalmente quando a tag "TBand" existe dentro da tag "Tpag", só dá problema quando a tag "TBAnd" não existe.

    E o erro e "access" é exatamente na linha "case auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tBand of" ou seja quando tento ler a informação tBand, não chega a ir na linha onde meu array está.

    Fico muito grato pela atenção, eu estava em um grupo de Lazarus tentando ajudar o máximo de gente possivel, mas o pessoal começou a abusar muito, tipo querendo se aproveitar da minha boa vontade, eu só peço ajuda depois de muito tentar e realmente não conseguir. e entendo pq as vezes o pessoal não quer ajudar ou dá uns "coice" por aq. 😢

  3. Então..

    Logo após esse meu codigo esta exatamente assim dentro de um for ou seja o mesmo "I" que passa no ...Items[I].tPag da violation no ...Items[I].tBand e só dá esse problema quando no xml o tband esta ausente.

    case auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tPag of
            fpDinheiro: Pag[I].TPAG := 1;
            fpCheque: Pag[I].TPAG := 2;
            fpCartaoCredito: Pag[I].TPAG := 3;
            fpCartaoDebito: Pag[I].TPAG := 4;
            fpCreditoLoja: Pag[I].TPAG := 5;
            fpValeAlimentacao: Pag[I].TPAG := 10;
            fpValeRefeicao: Pag[I].TPAG := 11;
            fpValePresente: Pag[I].TPAG := 12;
            fpValeCombustivel: Pag[I].TPAG := 13;
            fpBoletoBancario: Pag[I].TPAG := 15;
            fpDepositoBancario: Pag[I].TPAG := 16;
            fpPagamentoInstantaneo: Pag[I].TPAG := 17;
            fpTransfBancario: Pag[I].TPAG := 18;
            fpProgramaFidelidade: Pag[I].TPAG := 19;
            fpSemPagamento: Pag[I].TPAG := 90;
            else
              Pag[I].TPAG := 0;
          end;

    if (Pag[I].TPAG = 3) or (Pag[I].TPAG = 4) then
            case auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tBand of
              bcVisa: Pag[I].TBAND := 1;
              bcMasterCard: Pag[I].TBAND := 2;
              bcAmericanExpress: Pag[I].TBAND := 3;
              bcSorocred: Pag[I].TBAND := 4;
              bcDinersClub: Pag[I].TBAND := 5;
              bcElo: Pag[I].TBAND := 6;
              bcHipercard: Pag[I].TBAND := 7;
              bcAura: Pag[I].TBAND := 8;
              bcCabal: Pag[I].TBAND := 9;
              bcAlelo: Pag[I].TBAND := 10;
              bcBanesCard: Pag[I].TBAND := 11;
              bcCalCard: Pag[I].TBAND := 12;
              bcCredz: Pag[I].TBAND := 13;
              bcDiscover: Pag[I].TBAND := 14;
              bcGoodCard: Pag[I].TBAND := 15;
              bcGreenCard: Pag[I].TBAND := 16;
              bcHiper: Pag[I].TBAND := 17;
              bcJcB: Pag[I].TBAND := 18;
              bcMais: Pag[I].TBAND := 19;
              bcMaxVan: Pag[I].TBAND := 20;
              bcPolicard: Pag[I].TBAND := 21;
              bcRedeCompras: Pag[I].TBAND := 22;
              bcSodexo: Pag[I].TBAND := 23;
              bcValeCard: Pag[I].TBAND := 24;
              bcVerocheque: Pag[I].TBAND := 25;
              bcVR: Pag[I].TBAND := 26;
              bcTicket: Pag[I].TBAND := 27;
              bcOutros: Pag[I].TBAND := 99;
            end; 

  4. Olá à todos, depois de muito tentar não consegui achar uma solução,  ao importar um xml de nfe pelo componente acbrnfe, da access violation em um xml de TPAG = 3 "Cartão de Crédito" que não possui a tag TBand.

    Tentei usar o if assigned(auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tBand)then antes de tentar acessar o valor de tBand mas ele não aceita, tem alguma forma correta de verificar se essa tag existe antes de tentar acessá-la?

  5. Olá, estou com um problema de Vazamento de memória no preview do Fortes Report, estou usando o lazarus 2.4.6, windows 10x64.

    Esse vazamento não ocorria antigamente, ao menos eu nunca tinha percebido, começou a ocorrer depois que formatei o pc e passei do windows 11 para o windows 10.

    Pesquisei bastante na net, e achei pessoas relatando isso a muito tempo atraz, mas sem solução e alguns desistindo do fortes.

    O vamento se encontra exatamente aq...

    SentToPrinter := False;
      with TRLPreviewForm.Create(nil) do
      begin
        Preview.Pages := APages;
        if DefaultZoomFactor = ZoomFactorFullWidth then
          Preview.ZoomFullWidth
        else if DefaultZoomFactor = ZoomFactorFullPage then
          Preview.ZoomFullPage
        else if DefaultZoomFactor = ZoomFactorMultiplePages then
          Preview.ZoomMultiplePages
        else if DefaultZoomFactor > 0 then
          Preview.ZoomFactor := DefaultZoomFactor;
        UpdateComboBoxZoom;
        Position := APosition;
        WindowState := AWindowState;
        BorderIcons := ABorderIcons;
        HelpFile := AHelpFile;
        HelpContext := AHelpContext;
        if ACaption <> '' then
          Caption := ACaption;
        FormStyle := AFormStyle;
        if AShowModal then
          ShowModal
        else if Visible then
          BringToFront
        else
          Show;
      end;

    no RLPreviewForm

    image.thumb.png.d7f5e033dc4a786ab29d3dbc2351c8b0.png

    image.png.20ab13e3087cc50ab5ebc77fef97d12c.png

    obs. já reinstalei o Fortes e uso o tortoise pelo link https://github.com/fortesinformatica/fortesreport-ce/trunk

    Desde já agradeços a todos que puderem me ajudar.

  6. Olá a todos, dei uma boa pesquisada e não achei nada a respeito, nem no site do FPDF em PHP, pelo contrário, oq vi foi comentárioos de que não dava pra fazer, ou gente que tentou e não conseguiu.

    Para negrito existe a procedure SetFont, porém como proceder dentro de uma frase (String), onde somente uma palavra deve ser negrita?

    Eu costumo utilizar a procedure MultiCell, para paragrafos com multiplas linhas, e o SetFont antes de cada multicell, mas como fazer no meio sem perder a identação?

    Perdoem minha leiguisse 🫣

    • Curtir 1
  7. 1 hora atrás, armando.boza disse:

    Essa opção eu não testei, mas se estraga as mensagens traduzidas ai já não resolve.

    Tentei ajustar a codificação das units mas mesmo assim não obtive sucesso.

    Vc testou com o Demo tb?

    Então, o problema é que o comportamento difere para strings escritas diretas no codigo e strings passadas pelos Edits, dai criei um teste e usei conforme o Demo, dai só obtive sucesso, da forma que mensionei.

    Mas pelo que entendi o Juliomar vai dar uma olhada pra gente. 🤗.

    • Curtir 1
  8. Aqui também estou brigando com a acentuação, a unica forma que da certo é ir em

    projeto >> opções de projeto >> Adiçoes e Sobreposiçoes 

    e clicar em "Usar codificação do sistema", o problema é que dai bagunça algumas mensagens traduzidas do lazarus tipo "não" fica "n?o"

    Estou usando windows11x64 com lazarus 2.4.6

    • Curtir 1
  9. Sim, pelo que entendi parece ser algo do tipo mesmo.

    Vou dar um exemplo aqui.

    Se eu pego dados de um campo no PC1 eu consigo pegar os mesmos dados no PC2, nesse momento é como se eu tivesse conectado com os dois PCs ao mesmo campo, mas no momento em que eu fizer uma alteração através de um desses dois pcs o outro não consegue fazer mais nada (deadlock) a não ser queu feche a conexão e conecte novamente nesse campo, oq faz todo sentido.

    Dai pensei em colocar um fechamento de conexão em um evento antes de um open, ou execute, mas dai vai zoar td em casos que tenho que fazer mais de uma alteração em tabelas diferentes antes de dar um commit. 

    Acredito que meu problema seja falta de conhecimento em processos em banco de dados mesmo, dai consegui resolver dessa vez, fechando a conexão manualmente em cada caso. Talvez não seja uma gambiarra como eu disse e sim o jeito certo a se fazer, mas como não tenho o conhecimento necessário não sei dizer se é gambiarra ou não.

    Agradeço o interesse em me ajudar, muito obrigado. 🤗

  10. Sim, na verdade a 4 anos atraz desisti de fazer meu sistema funcinar em rede por causa de não funcionar direito, dai falei que podia fechar o topico, pois havia desistido, mas agora 4 anos depois, vi que não tem jeito, vou ter que fazer meu sistema funcionar em rede, dai pesquisando novamente o mesmo assunto cai nesse topico e só depois de fazer novamente a mesma pergunta percebi que era o topico que eu tinha criado a muito tempo atraz e não consegui apagar a pergunta, dai deixei a explicação da minha confusão.

    Eu esperava alguma configuração no componente mas percebi em em alguns selects eu não posso pegar dados novos do banco, e em outros sim como o return do insert por exemplo que, dai estou desconectando do banco de dados em alguns lugares do codigo e em outros não.

    ou seja acredito continuar na gambiarra, mas depois de 4 anos de estudo, a gambiarra ta menos feia e mais funcional.

    Mas uma vez peço desculpas pela confusão.

    DEUS abençoe 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.

The popup will be closed in 10 segundos...