Ir para conteúdo
  • Cadastre-se

Élviro Cavalcanti

Membros
  • Total de ítens

    150
  • Registro em

  • Última visita

Posts postados por Élviro Cavalcanti

  1. 16 horas atrás, felipeiw disse:

    Élviro, mt obrigado pela resposta, você notou melhora na questão de velocidade, digo no seu sistema que ja estava rodando na versao 2.5 ?

     

    Felipe, notei uma melhora sim, nada absurda, mas melhorou sim.

  2. Eu migrei do firebird 2.0 para o 4.0, tive que fazer algumas coisas. Segue abaixo como fiz pra rodar tranquilo.

     

    Instruções para migrar para o firebird 4.0

    1 - Criar o backup em FBK ainda usando o Firebird 2.5
    2 - Zipar o backup
    3 - Desistalar o Firebird 2.5
    4 - Reiniciar o computador
    5 - Instalar o Firebird 4.0
    6 - Parar o serviço firebird 4.0 e substituir o arquivo firebird.conf que está dentro da pasta de instalação do firebird
    7 - Excluir dentro da pasta gds32.dll (849 kb) do windows system ou substituir ele pelo novo com tamanho 1.604kb
    8 - Ativar o serviço Firebird 4.0
    9 - Restaurar o backup, pode usar o Restaurar Backup.bat
     

  3. 3 minutos atrás, Carlos Júnior disse:

    Preciso emitir uma nota para produtor rural. O mesmo e pessoa fisica mas por ser produtor rural ele tem o IE.

    A nota é Saida: Devolução A1.

    Esta retornando o erro a baixo:

    1871 - Element '{http://www.portalfiscal.inf.br/nfe}CPF': This element is not expected. Expected is ( {http://www.portalfiscal.inf.br/nfe}CNPJ ).

    Bom dia Carlos, quando você informa que é produtor Rural, você informa a série 920 ?

     

  4. 2 horas atrás, douglas_k disse:

    na verdade eu quero que no RichEdit eu mostre o texto conforme uma string com html que vou passar, que tipo o texto seja exibido com a formação

    Eu to montando umas mensagens para usuário e to ja montando essa msg usando html, ai abro uma tela pra mostrar pro usuário e nessa tela quero mostrar essa mensagem formatada conforme a string que montei.

    Beleza, você poderia postar aqui o html ?

  5. 1 hora atrás, douglas_k disse:

    Bom dia pessoal,

       Vocês tem alguma function ou se existe alguma outra forma, eu monto uma string contendo formatação html, exemplo: <b>Erro:</b>Forma de pagamento inválida.

      Ai pego essa string e atribuo para um RichEdit. Tem como exibir esse texto formatado? Erro: Forma de pagamento inválida

    Pelo que entendi, você está querendo pegar algo dentro de um html ou xml por exemplo, você poderia usar o seguinte:

     

    function TfrmExemplo.obterNroResultado(const aXML: XMLString; aTag,
      aEndTag: string): string;
    var
      _Posini, _Posfim  : integer;
    Begin
      Result := '';
      _Posini:= Pos(aTag,aXML);
      _Posfim:= Pos(aEndTag,aXML);
      if  ( _Posini > 0 ) then
        begin
          inc(_PosIni, Length(aTag));
          Result:=Copy(aXML,_Posini+1,(_PosFim-_PosIni)-1);
        end;
    end;
     

    E no botão seria esse comando pra chamar o campo desejado, seria isso ?

      EditResultado.Text := obterNroResultado(mmXML.Text, '<nRec','</nRec');
     

  6. 10 minutos atrás, Luciano Ramos Palandi disse:

    Conforme o Juliomar citou estou fazendo a abertura da query assim  select * from, uso insert nas inserções, quando uso dm.q_prod.last esta demorando..., pesquisei sobre limitar a quantidade de registros e encontrei FIRST, mas teria outra forma, você tem um exemplo por favor?

    Mas explica qual a necessidade desse last, assim posso te ajudar melhor

  7. 9 minutos atrás, Luciano Ramos Palandi disse:

    Élviro, por favor, estou fazendo teste na SaveinCloud e por hora gostei, você teria uma dica para gerar performance, por exemplo se usar Last no cadastro de produtos esta levando cerca de 4 segundos, para filtros com descrição praticamente não tem diferença para local. sobre valores quanto você paga em média?

    Bom dia Luciano, você poderia me explicar melhor essa questão do last por exemplo, pra inserir os dados seria melhor insert na tabela, ou entendi errado alguma coisa, me explica melhor então.
    Eu uso uma rotina que fica monitorando no caso o tempo que leva pra cada processo, vou deixar aqui pra você, segue ela abaixo:

    var
      FrmPrincipal: TFrmPrincipal;
      t:Cardinal;  //Declaro essa variável que vai pegar o tempo.

     

            t := GetTickCount();
             

            Aqui coloco minha rotina

            t := GetTickCount() - t;
            Label25.Caption := 'Tempo de resposta : ' +  FormatFloat(',0 milisegundos', t);
     

  8. Bom dia, tenho um sistema usando o Firebird 4.0 com uma tabela de TRANSPORTADOR. Quando abro o sistema e nessa tabela tem dados não existe erro, mas quando a tabela de TRANSPORTADOR não tem dados, sempre apresenta um erro "Access violation at address 0070678D in module 'Controller.exe'. Read of address 000000EC" e simplesmente não conegue fazer mais nada. Alguém já passou por esse problema e conseguiu resolver? Uso o IBX.

  9. 17 horas atrás, Luciano Ramos Palandi disse:

    Perdão, entendi que você disse não ser bom criar um ini com as configuração...

    Élviro só uma dúvida por favor, você usa uma instancia só e hospeda todos os bancos?

    No meu servidor, tenho o caminho de cada banco separado, nesse caso todos os meus clientes que usam esse serviço, ficam com o banco na internet, todos separados.

  10. 13 horas atrás, Luciano Ramos Palandi disse:

    Senhores por favor gostaria da ajuda de vocês para a seguinte situação, estou migrando minha aplicação para nuvem, uso firebird 3.0 e um banco de dados para cada cliente, minha dúvida é usar um banco para todos utilizando por exemplo uma coluna com o código do cliente para filtrar ou manter cada um em seu respectivo banco, quem tiver forma de implementar mais adequada desde já agradeço. 

    Bom dia, eu trabalho com o servidor e um banco para cada cliente.

  11. Em 12/07/2022 at 18:27, felipeiw disse:

    tenho num banco de dados varias tabelas, porém apenas 1 delas quando tento acessa-la retornar o seguinte erro:

    Arithmetic overflow or division by zero has occurred.
    arithmetic exception, numeric overflow, or string truncation.
    Cannot transliterate character between character sets.

    tentando acessar esta tabela, pelo ibexpert, retorna esse erro também. eu poderia ate excluir essa tabela e cria-la novamente, mais excluir também retorna o mesmo erro.

    Abs

     

    Você pode usar essa rotina e tentar verificar se existe algum erro no banco, espero que lhe ajude!

    RecuperarFirebird.bat

  12. 8 minutos atrás, Élviro Cavalcanti disse:

    Eu possuo uma rotina de SNGPC que faz assa comunicação, posso disponibilizar ela pra vocês

    Segue abaixo a rotina que usava e enviava para o site, pode ser que ajude

     

    procedure TFrmSNGPC.BitBtn1Click(Sender: TObject);
    var
    i,x: Word;
    NCorpo,NMedicamento,NData: IXMLNode;
    XMLDoc: TXMLDocument;
    var dti,dtf:string;
    begin
    dti := formatdatetime('mm/dd/yyyy',DateEdit1.DATE);
    dtf := formatdatetime('mm/dd/yyyy',DateEdit2.DATE);

    dm.IBUsuario.close;
    dm.IBUsuario.SelectSQL.Clear;
    dm.IBUsuario.SelectSQL.Add('SELECT * FROM USUARIO');
    dm.IBUsuario.open;

    x:=1;
    // x:=10;
    // Cria o documento

    //Transformando a data
    eddataemissao.Text := copy(DateEdit1.Text, 7, 4) + '-' + copy(DateEdit1.Text, 4, 2)  + '-' +  copy(DateEdit1.Text, 1, 2);
    eddatasaida.Text := copy(DateEdit2.Text, 7, 4) + '-' + copy(DateEdit2.Text, 4, 2)  + '-' +  copy(DateEdit2.Text, 1, 2);

    eddataemissaoSalvar.Text := copy(DateEdit1.Text, 7, 4) + '_' + copy(DateEdit1.Text, 4, 2)  + '_' +  copy(DateEdit1.Text, 1, 2);
    eddatasaidaSalvar.Text := copy(DateEdit2.Text, 7, 4) + '_' + copy(DateEdit2.Text, 4, 2)  + '_' +  copy(DateEdit2.Text, 1, 2);


    //Busca todas as entradas no período
    dm.IBDetVenda.close;
    dm.IBDetVenda.SelectSQL.Clear;
    dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
    dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND REGISTROMSMANVISA IS NOT NULL');
    dm.IBDetVenda.open;

    XMLDoc:=TXMLDocument.Create(Application);
    with XMLDoc do
    begin
    Active:=True;
    Version:='1.0';
    Encoding:='ISO-8859-1';
    AddChild('mensagemSNGPC','urn:sngpc-schema');
    with DocumentElement do
    begin
    AddChild('cabecalho');
    ChildNodes.Last.AddChild('cnpjEmissor').NodeValue:=dm.IBUsuarioCPFCNPJ.text;
    ChildNodes.Last.AddChild('cpfTransmissor').NodeValue:=DM.IBUsuarioCPFRESPOSANVEL.Text; //Abrir no cadastro da empresa o CPF e nome do resposável
    ChildNodes.Last.AddChild('dataInicio').NodeValue:= eddataemissao.text; // FormatDateTime('yyyy-mm-dd',Date);
    ChildNodes.Last.AddChild('dataFim').NodeValue:= eddatasaida.Text; // FormatDateTime('yyyy-mm-dd',Date);
    end;
    NCorpo:=DocumentElement.AddChild('corpo');

    // *************************** MEDICAMENTO *********************************
    NMedicamento:=NCorpo.AddChild('medicamentos');
    // Loop das [Entradas] :: MEDICAMENTO
    //Busca todas as entradas no período
    dm.IBDetEntrada.close;
    dm.IBDetEntrada.SelectSQL.Clear;
    dm.IBDetEntrada.SelectSQL.Add('SELECT * FROM DETENTRADA');
    dm.IBDetEntrada.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('MEDICAMENTO') + ' AND REGISTROMSMANVISA IS NOT NULL');
    dm.IBDetEntrada.open;
    if dm.IBDetEntrada.IsEmpty then
    begin
    ShowMessage('Nada de entrada!');
    end
    else
    begin
    //for i:=1 to x do
    dm.ibdetentrada.First;
    While not dm.IBDetEntrada.eof do
    begin
    NData:=NMedicamento.AddChild('entradaMedicamentos');
    with NData do
    begin
    ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:='1';
    // [tipoOperacaoNotaFiscal]
    // 1 Compra // 2 Transferência // 3 Venda
    ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:='1';
    ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2);//'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03) não pode ser maior que a data do final do periodo informado
    ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:= dm.IBDetEntradaCNPJFORNECEDOR.text; //'09616205000170'; //**** O CNPJ do fornecedor (09.616.205/0001-70) não existe na base de dados da ANVISA.
    ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:= dm.IBUsuarioCPFCNPJ.text; //'02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
    ChildNodes['medicamentoEntrada'].ChildNodes['registroMSMedicamento'].NodeValue:= dm.IBDetEntradaREGISTROMSMANVISA.Text; //'1071402340048';
    ChildNodes['medicamentoEntrada'].ChildNodes['numeroLoteMedicamento'].NodeValue:= dm.IBDetEntradaNLOTE.Text; //'A0540';
    ChildNodes['medicamentoEntrada'].ChildNodes['quantidadeMedicamento'].NodeValue:= dm.IBDetEntradaQUANTIDADE.Text; //'10';

    // A data de recebimento do medicamento (2010-03-03 00:00:00) da nota fiscal (1) não pode ser maior que a data do final do período informado (2010-02-1Cool
    ChildNodes['dataRecebimentoMedicamento'].NodeValue:= copy(frmlogin.EdDataDia.Text, 7, 4) + '-' + copy(frmlogin.EdDataDia.Text, 4, 2)  + '-' +  copy(frmlogin.EdDataDia.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
    end;
    dm.IBDetEntrada.Next;
    end;
    end;


    //Busca todas as entradas no período
    dm.IBDetVenda.close;
    dm.IBDetVenda.SelectSQL.Clear;
    dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
    dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('MEDICAMENTO') + ' AND REGISTROMSMANVISA IS NOT NULL');
    dm.IBDetVenda.open;
    if dm.IBDetVenda.IsEmpty then
    begin
    ShowMessage('Nada de venda!');
    end
    else
    begin
    // Loop das [Saidas] :: MEDICAMENTO
    //for i:=1 to x do
    dm.ibdetvenda.First;
    while not dm.IBDetVenda.eof do
    begin
    NData:=NMedicamento.AddChild('saidaMedicamentoVendaAoConsumidor');
    with NData do
    begin
    // [tipoReceituarioMedicamento]
    // 1 Receita de Controle Especial em 2 vias (Receita Branca)
    // 2 Notificação de Receita B (Notificação Azul)
    // 3 Notificação de Receita Especial (Notificação Branca)
    // 4 Notificação de Receita A (Notificação Amarela)

    //Consulta a venda para pegar os dados do médico
    dm.IBVenda.close;
    dm.IBVenda.SelectSQL.Clear;
    dm.IBVenda.SelectSQL.Add('SELECT * FROM VENDAS');
    dm.IBVenda.SelectSQL.ADD('WHERE CODIGO = ' + QuotedStr(DM.IBDetVendaCODVENDA.Text) + '');
    dm.IBVenda.open;

    //Consulta cliente da venda para pegar os dados do cliente
    dm.IBClientes.close;
    dm.IBClientes.SelectSQL.Clear;
    dm.IBClientes.SelectSQL.Add('SELECT * FROM CLIENTES');
    dm.IBClientes.SelectSQL.ADD('WHERE CODIGO = ' + QuotedStr(DM.IBDetVendaCODCLI.Text) + '');
    dm.IBClientes.open;

    ChildNodes['tipoReceituarioMedicamento'].NodeValue:='1';
    ChildNodes['numeroNotificacaoMedicamento'].NodeValue:= dm.IBDetVendaREGISTROMSMANVISA.text; //'213213';
    ChildNodes['dataPrescricaoMedicamento'].NodeValue:= copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2);//'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data de prescricão (2010-03-03) não pode ser maior que a data do final do período informado
    ChildNodes['prescritorMedicamento'].ChildNodes['nomePrescritor'].NodeValue:= dm.IBVendaMEDICO.Text; //'XFULANO';
    ChildNodes['prescritorMedicamento'].ChildNodes['numeroRegistroProfissional'].NodeValue:= dm.IBVendaREGISTROMEDICO.Text; //'99999';
    // [conselhoProfissional]
    // CRM Conselho Regional de Medicina
    // CRMV Conselho Regional de Medicina Veterinária
    // CRO Conselho Regional de Odontologia
    ChildNodes['prescritorMedicamento'].ChildNodes['conselhoProfissional'].NodeValue:= dm.IBVendaCONSELHOMEDICO.Text; //'CRM';
    ChildNodes['prescritorMedicamento'].ChildNodes['UFConselho'].NodeValue:= dm.IBVendaUFCONSELHOMEDICO.Text;  //'SP';
    // [usoMedicamento]
    // 1 Humano
    // 2 Veterinario
    ChildNodes['usoMedicamento'].NodeValue:='1';
    ChildNodes['compradorMedicamento'].ChildNodes['nomeComprador'].NodeValue:= DM.IBVendaCLIENTE.Text; //'XCICLANO';
    // [tipoDocumento]
    // 1 CARTEIRA DE REGISTRO PROFISSIONAL
    // 2 CARTEIRA DE IDENTIDADE . . . existem mais
    ChildNodes['compradorMedicamento'].ChildNodes['tipoDocumento'].NodeValue:='2';
    ChildNodes['compradorMedicamento'].ChildNodes['numeroDocumento'].NodeValue:= DM.IBClientesRGINSC.Text; //'431053984';
    ChildNodes['compradorMedicamento'].ChildNodes['orgaoExpedidor'].NodeValue:= dm.IBClientesEMISSOR.text; //'SSP';
    ChildNodes['compradorMedicamento'].ChildNodes['UFEmissaoDocumento'].NodeValue:=  dm.IBClientesUFEMISSOR.Text; //'SP';
    ChildNodes['medicamentoVenda'].ChildNodes['registroMSMedicamento'].NodeValue:= dm.IBDetVendaREGISTROMSMANVISA.Text; //'1071402340048';
    ChildNodes['medicamentoVenda'].ChildNodes['numeroLoteMedicamento'].NodeValue:= dm.IBDetVendaNLOTE.Text; //'A0540'; // O lote (RGJ0400) do produto de número de registro (1.0100.0043.021-5 - LEXOTAN) não foi encontrado nem no inventário inicial nem nas transações de compras informadas
    ChildNodes['medicamentoVenda'].ChildNodes['quantidadeMedicamento'].NodeValue:= dm.IBDetVendaQUANTIDADE.Text; //'1'; // A quantidade vendida (3) do produto de número de registro (1.0100.0043.021-5 - LEXOTAN) do lote (RGJ0400) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
    ChildNodes['dataVendaMedicamento'].NodeValue := copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da venda (2010-03-03 00:00:00) não pode ser maior que a data do final do periodo informado.
    end;
    dm.IBDetVenda.Next;
    end;
    end;


    // Loop das [Transferencias] :: MEDICAMENTO
    for i:=1 to x do
    begin
    NData:=NMedicamento.AddChild('saidaMedicamentoTransferencia');
    with NData do
    begin
    ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
    ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '2';
    ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado
    ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:= '09616205000170'; //**** não pode haver a transferência entre estas duas empresas.**** O CNPJ da empresa de origem (99.999.999/0001-99) não existe na base de dados da ANVISA.
    ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:= '02326764000105'; // O CNPJ da empresa de origem (02.326.764/0001-05) não existe na base de dados da ANVISA.
    ChildNodes['medicamentoTransferencia'].ChildNodes['registroMSMedicamento'].NodeValue:= '1029802250061'; // AMYTRIL
    ChildNodes['medicamentoTransferencia'].ChildNodes['numeroLoteMedicamento'].NodeValue:= '09021207'; // O lote (153353) do produto de número de registro (1.0583.0259.002-9 - HIPOFAGIN S) não foi encontrado nem no inventário inicial nem nas transações de compras informadas.
    ChildNodes['medicamentoTransferencia'].ChildNodes['quantidadeMedicamento'].NodeValue:= '1'; // A quantidade transferida (2) do medicamento de número de registro (1.0583.0259.002-9 - HIPOFAGIN S) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
    ChildNodes['dataTransferenciaMedicamento'].NodeValue:='';// '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
    end;
    end;

    // [tipoOperacaoNotaFiscal]
    // 1 Compra // 2 Transferência // 3 Venda


    // Loop das [Perdas] :: MEDICAMENTO
    for i:=1 to x do
    begin
    NData:=NMedicamento.AddChild('saidaMedicamentoPerda');
    with NData do
    begin
    // [motivoPerdaMedicamento]
    // 1 Furto / Roubo
    // 2 Avaria
    // 3 Vencimento
    // 4 Apreensão / Recolhimento pela Visa
    ChildNodes['motivoPerdaMedicamento'].NodeValue:='3';
    ChildNodes['medicamentoPerda'].ChildNodes['registroMSMedicamento'].NodeValue:='1071402340048';
    ChildNodes['medicamentoPerda'].ChildNodes['numeroLoteMedicamento'].NodeValue:='A0540';
    ChildNodes['medicamentoPerda'].ChildNodes['quantidadeMedicamento'].NodeValue:='1'; // A quantidade perdida (2) do produto de número de registro (1.0100.0075.006-1 - ROHYPNOL) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
    ChildNodes['dataPerdaMedicamento'].NodeValue := '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da perda (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
    end;
    end;

    // *************************************************************************
    // ********************************* INSUMO ********************************
    NMedicamento:=NCorpo.AddChild('insumos');
    // Loop das [Entradas] :: INSUMO
    //Busca todas as entradas no período
    dm.IBDetEntrada.close;
    dm.IBDetEntrada.SelectSQL.Clear;
    dm.IBDetEntrada.SelectSQL.Add('SELECT * FROM DETENTRADA');
    dm.IBDetEntrada.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('INSUMO') + ' AND REGISTROMSMANVISA IS NOT NULL');
    dm.IBDetEntrada.open;
    dm.IBDetEntrada.First;
    While not dm.IBDetEntrada.eof do
    begin
    NData:=NMedicamento.AddChild('entradaInsumos');
    with NData do
    begin
    ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
    // [tipoOperacaoNotaFiscal]
    // 1 Compra
    // 2 Transferência
    // 3 Venda
    ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '1';
    ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
    ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:=  dm.IBUsuarioCPFCNPJ.text; //'09616205000170'; // O CNPJ do fornecedor (99.999.999/0001-99) não pode ser igual ao CNPJ de destino.
    ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjDestino'].NodeValue:= dm.IBFornecedorCPFCNPJ.Text; //'02326764000105'; // O CNPJ DO fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
    ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['codigoInsumo'].NodeValue:= dm.IBDetEntradaCODPRODUTO.text; //'00075';
    ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['numeroLoteInsumo'].NodeValue:=  dm.IBDetEntradaNLOTE.text; //'788cpf';
    ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= dm.IBFornecedorCPFCNPJ.Text; //'02326764000105';
    ChildNodes['substanciaInsumoEntrada'].ChildNodes['quantidadeInsumoEntrada'].NodeValue:= dm.IBDetEntradaQUANTIDADE.text; //'40000.0';
    ChildNodes['substanciaInsumoEntrada'].ChildNodes['tipoUnidadeEntrada'].NodeValue:= '1';
    ChildNodes['dataRecebimentoInsumo'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data de recebimento do insumo (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado (2010-02-18 00:00:00)
    end;
    dm.IBDetEntrada.Next;
    end;


    // Loop das [Saidas] :: INSUMO
    //Busca todas as entradas no período
    dm.IBDetVenda.close;
    dm.IBDetVenda.SelectSQL.Clear;
    dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
    dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('INSUMO') + ' AND REGISTROMSMANVISA IS NOT NULL');
    dm.IBDetVenda.open;
    DM.IBDETVENDA.First;
    While not dm.ibdetvenda.Eof do
    begin
    NData:=NMedicamento.AddChild('saidaInsumoVendaAoConsumidor');
    with NData do
    begin
    // [tipoReceituarioInsumo]
    // 1 Receita de Controle Especial em 2 vias (Receita Branca)
    // 2 Notificação de Receita B (Notificação Azul)
    // 3 Notificação de Receita Especial (Notificação Branca)
    // 4 Notificação de Receita A (Notificação Amarela)
    ChildNodes['tipoReceituarioInsumo'].NodeValue:= '2';
    ChildNodes['numeroNotificacaoInsumo'].NodeValue:= dm.IBDetVendaCODPRODUTO.text; //'9897651';
    ChildNodes['dataPrescricaoInsumo'].NodeValue:= copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2);  //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da prescricão (2010-03-03) não pode ser maior que a data do final do período informado.
    ChildNodes['prescritorInsumo'].ChildNodes['nomePrescritor'].NodeValue:= dm.IBVendaMEDICO.text; //'Dr. Antenor';
    ChildNodes['prescritorInsumo'].ChildNodes['numeroRegistroProfissional'].NodeValue:= dm.IBVendaREGISTROMEDICO.text; //'8888';
    // [conselhoProfissional]
    // CRM Conselho Regional de Medicina
    // CRMV Conselho Regional de Medicina Veterinária
    // CRO Conselho Regional de Odontologia
    ChildNodes['prescritorInsumo'].ChildNodes['conselhoProfissional'].NodeValue:= dm.IBVendaCONSELHOMEDICO.text; //'CRM';
    ChildNodes['prescritorInsumo'].ChildNodes['UFConselho'].NodeValue:= dm.IBVendaUFCONSELHOMEDICO.text; //'PR'; // A sigla da UF da notificação de receita azul não coincide com a sigla da UF do profissional prescritor.
    ChildNodes['usoInsumo'].NodeValue:= '1';
    ChildNodes['compradorInsumo'].ChildNodes['nomeComprador'].NodeValue:= dm.IBVendaCLIENTE.text; //'Manuela Danta';
    // [tipoDocumento]
    // 1 CARTEIRA DE REGISTRO PROFISSIONAL
    // 2 CARTEIRA DE IDENTIDADE . . . existem mais
    ChildNodes['compradorInsumo'].ChildNodes['tipoDocumento'].NodeValue:= '2';
    ChildNodes['compradorInsumo'].ChildNodes['numeroDocumento'].NodeValue:= dm.IBClientesRGINSC.Text; //'89786453';
    ChildNodes['compradorInsumo'].ChildNodes['orgaoExpedidor'].NodeValue:= dm.IBClientesEMISSOR.Text; //'SSP';
    ChildNodes['compradorInsumo'].ChildNodes['UFEmissaoDocumento'].NodeValue:= dm.IBClientesUFEMISSOR.Text; //'PR';
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].NodeValue:= '';
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['codigoInsumo'].NodeValue:= dm.IBDetVendaCODPRODUTO.text; //'02904';
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['numeroLoteInsumo'].NodeValue:= dm.IBDetVendaNLOTE.text; //'123dzp';
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= dm.IBFornecedorCPFCNPJ.text; //'02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeInsumoPorUnidadeFarmacotecnica'].NodeValue:= dm.IBDetVendaQUANTIDADE.text; //'5.0'; // A quantidade vendida (300) do insumo de número DCB (02904 - diazepam) do lote (123dzp) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
    // [unidadeDeMedidaDoInsumo]
    // 1 Miligrama
    // 2 Mililitro
    // 3 Unidade (U)
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['unidadeDeMedidaDoInsumo'].NodeValue:= '1';
    // [unidadeFarmacotecnica]
    // 1 Miligrama
    // 2 Cápsula
    // 3 Comprimido
    // 4 Mililitro
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['unidadeFarmacotecnica'].NodeValue:= '2';
    ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeUnidadesFarmacotecnicas'].NodeValue:= '60.0';
    ChildNodes['dataVendaInsumo'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da venda (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
    end;
    dm.ibdetvenda.Next;
    end;


    // Loop das [Transferencias] :: INSUMO
    for i:=1 to x do
    begin
    NData:=NMedicamento.AddChild('saidaInsumoTransferenci');
    with NData do
    begin
    ChildNodes['notaFiscalTransferenciaInsum'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
    // [tipoOperacaoNotaFiscal]
    // 1 Compra
    // 2 Transferência
    // 3 Venda
    ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '2';
    ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
    ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:= '09616205000170'; // O CNPJ do estabelecimento de origem (99.999.999/0001-99) não existe na base DO Corporativo da ANVISA.
    ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjDestino'].NodeValue:= '02326764000105'; // O CNPJ do estabelecimento de destino (99.999.999/0001-99) não existe na base de dados da ANVISA.
    ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['codigoInsumo'].NodeValue:= '02904';
    ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['numeroLoteInsumo'].NodeValue:= '15353';
    ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= '02326764000105';
    ChildNodes['substanciaInsumoTransferencia'].ChildNodes['quantidadeInsumoTransferencia'].NodeValue:= '20000.0'; // A quantidade transferida (20000) do insumo de número DCB (02904 - diazepam) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
    ChildNodes['substanciaInsumoTransferencia'].ChildNodes['tipoUnidadeTransferencia'].NodeValue:= '1';
    ChildNodes['dataTransferenciaInsumo'].NodeValue := '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
    end;
    end;
    // Loop das [Perdas] :: INSUMO
    for i:=1 to x do
    begin
    NData:=NMedicamento.AddChild('saidaInsumoPerda');
    with NData do
    begin
    // [motivoPerdaInsumo]
    // 1 Furto / Roubo
    // 2 Avaria
    // 3 Vencimento
    // 4 Apreensão / Recolhimento pela Visa
    ChildNodes['motivoPerdaInsumo'].NodeValue:= '2';
    ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['codigoInsumo'].NodeValue:= '02904';
    ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['numeroLoteInsumo'].NodeValue:= '786dpz';
    ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= '99999999000199'; // O CNPJ do fornecedor (99.999.999/0001-99) não foi encontrado na base de dados da ANVISA.
    ChildNodes['substanciaInsumoPerda'].ChildNodes['quantidadeInsumoPerda'].NodeValue:= '12345.0'; // A quantidade perdida (12345) do insumo de número DCB (02904 - diazepam) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
    ChildNodes['substanciaInsumoPerda'].ChildNodes['tipoUnidadePerda'].NodeValue:= '1';
    ChildNodes['dataPerdaInsumo'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da perda (2010-03-03) não pode ser maior que a data do final do período informado.
    ChildNodes['cnpjFornecedorInsumo'].NodeValue:='02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não foi encontrado na base de dados da ANVISA.
    end;
    end;
    // *************************************************************************

    //SaveToFile(ExtractFileDir(Application.ExeName)+'\SNGPC\Sngpc_'+FormatDateTime('dd_mm_yyyy',Date)+'.xml');
    SaveToFile(ExtractFileDir(Application.ExeName)+'\SNGPC\Sngpc_' + eddataemissaoSalvar.text + '_a_' + eddatasaidaSalvar.text + '.xml');
    end;
    XMLDoc.Active:=False;
    XMLDoc.Free;

    end;

    • Curtir 1
  13. Em 29/06/2022 at 12:11, nildglan disse:
    Pessoal em minha aplicação estou comitando tudo que abre a cada loop e mesmo assim da erro de conflito em transição
    firebird update conflicts with concurrent update
    como evitar isso?

    Possivelmente você está deixando alguma transação aberta e por isso não consegue efetuar o update.

  14. Aqui em PE cupons acima de 1.000,00 era preciso colocar o CPF ou CNPJ do comprador, na Paraíba esse valor é de 500,00 se não me engano, mas agora PE mudou esse valor, só coloquei o post pois minha aplicação tem como parâmetro esse valor, assim já avisa ao usuário que precisa informar os dados do cliente acima de X valor, caso alguém não tenha pego essa informação, deixei aqui registrado :)

    • Curtir 1
  15. Quando clico em novo, aciono os comandos

     

          DM.UFornecedor.close;
          DM.UFornecedor.SQL.Clear;
          DM.UFornecedor.SQL.Add('SELECT codigo, dtcadastro, nomerazao, fantasia, tipo, cpfcnpj, rginsc, ');
          DM.UFornecedor.SQL.Add('endereco, numero, complemento, bairro, cidade, uf, cep, codmunicipio, email, ');
          DM.UFornecedor.SQL.Add('site, fone, fone2, contato, fonecontato, celularcontato, emailcontato, ');
          DM.UFornecedor.SQL.Add('ramoatividade, bloqueado, dtalteracao, usuario, dtcontato, motivocontato,');
          DM.UFornecedor.SQL.Add('usuariocontato, tempocadastro, codusuario, obs FROM fornecedor');
          DM.UFornecedor.SQL.ADD('WHERE codigo = -1');
          DM.UFornecedor.open;

          DM.UFornecedor.Append;

     

    e direciono o foco para o DBEdit, mas ele não deixa nada ser digitado, e quando salvo na tabela ele salva com um registro vazio, como se estivesse funcionando normal o comando de novo e de salvar.
     

  16. Boa tarde pessoal, estou tendo uma situação curiosa no delphi 2010 usando o componente Unidac e Mysql, apenas uma tabela do meu banco (fornecedor) eu vejo os dados usando o MySQL Workbench, mas quando tento incluir um novo registro nessa tabela o dbedit não permite digitar nada, mesmo o DBGrid não consigo exibir os dados. Alguém já passou por esse problema? Lembrando que é apenas nessa tabela, mas demais estão normais!

  17. Bom dia pessoal, tenho um banco de dados Firebird hospedado no servidor em Linux na web, pela máquina usando o windows eu tenho acesso e trabalho normal com ele, mas quando tento acessar o banco via app, aparece uma mensagem de erro : 'failed to locate host machine. Undefined services gds_db/ tcp', estou usando o componente UniConnection. 
    Alguém já passou ou tem algo que possa ajudar?

×
×
  • 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.