-
Total de ítens
150 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por Élviro Cavalcanti
-
-
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
-
Boa tarde, fui postar uma dúvida sobre SQL aqui no site e mostrou como usuário bloqueado, será alguma instabilidade no site ?
-
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 ?
-
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 ?
-
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');
-
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
-
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);
-
Boa tarde, tive que apagar a tabela "transportador" e criando outra com o nome "transportadora" só assim consegui que tudo voltasse ao normal, até agora fiquei sem entender, mas segue ....
-
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.
-
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.
-
35 minutos atrás, Luciano Ramos Palandi disse:
Juliomar estou estudando a questão da API, Élviro estou usando firedac, por favor como você esta fazendo a conexão para cada um?
Assim como Juliomar colocou, da mesma forma que uma conexão numa rede local
-
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.
-
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!
-
1 hora atrás, Juliomar Marchetti disse:
por favor não cole, anexe arquivos pois o tópico fica confuso e na pesquisa de futuros quando necessário
Opa, peço desculpas, vou anexar a partir de agora!
- 1
-
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;
- 1
-
Eu possuo uma rotina de SNGPC que faz assa comunicação, posso disponibilizar ela pra vocês
-
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çãofirebird update conflicts with concurrent updatecomo evitar isso?
Possivelmente você está deixando alguma transação aberta e por isso não consegue efetuar o update.
-
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
- 1
-
Bom dia pessoal, aqui em PE a NFCe que antes era até 1.000,00 sem identificação, agora está passando com valor até 5.000,00, caso alguém tenha essa trava no sistema, pode alterar essa quantidade.
-
Boa tarde, peço desculpas pela demora em concluir esse post, resolvido Juliomar, eu removi a unit completa do formulário de Fornecedores e importei de uma outra fazendo apenas os ajustes do componente, resolvido ! Fico grato mais uma vez !
-
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.
-
Já sim, fiz a exclusão e criei outra, adicionei os comandos e mesmo assim continua dando o mesmo bloqueio, estou tentando saber o que é pois como é numa tabela específica fica mais complicado de achar onde está o problema.
-
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!
-
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?
atualizar firebird
em Banco de Dados
Postado
Felipe, notei uma melhora sim, nada absurda, mas melhorou sim.