ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

gravar dados via query

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Qua Abr 19, 2017 11:40 pm    Assunto: gravar dados via query Responder com Citação

boa noite amigos

estou com duvida em relacao a uma rotina de duas query onde a primeira pega todos os dados do banco local e joga tudo para segunda do servidor do tipo do banco do pdv gravar no banco da retaguarda. entao constriui uma rotina que ja esta lendo pois eu peguei esta rotina na net e deu certo ate uma parte, a parte final onde ela deveria gravar os dados no banco da retaguarda nao esta ocorrendo e apresenda o seguinte erro

SQL Server Error: unknown ISC error 0

isso ocorre depois que le o primeiro registro da seguinte rotina que segue abaixo

Qr_Local.Close;
Qr_Local.sql.clear;
Qr_Local.sql.add('select * from CUPOMPAGO');
Qr_Local.open;

Qr_Local.first;//Coloca o cursor no primeiro registro
while not Qr_Local.eof do // Vai ler todos os registros até chegar no fim da query, se a query estiver vazia ele nem vai fazer nada
begin
Qr_Servidor.close;
Qr_Servidor.sql.clear;
Qr_Servidor.sql.add('insert into CUPOMPAGO (');
Qr_Servidor.sql.add('COD_CUPONS,');
Qr_Servidor.sql.add('COMANDA,');
Qr_Servidor.sql.add('CAIXA,');
Qr_Servidor.sql.add('TERMINAL,');
Qr_Servidor.sql.add('DATA,');
Qr_Servidor.sql.add('HORA,');
Qr_Servidor.sql.add('OPERADOR,');
Qr_Servidor.sql.add('VENDEDOR,');
Qr_Servidor.sql.add('DINHEIRO,');
Qr_Servidor.sql.add('CARTAOC,');
Qr_Servidor.sql.add('CARTAOD,');
Qr_Servidor.sql.add('CHEQUE,');
Qr_Servidor.sql.add('CHEQUEP,');
Qr_Servidor.sql.add('VALE,');
Qr_Servidor.sql.add('OUTRO,');
Qr_Servidor.sql.add('TIQUETE,');
Qr_Servidor.sql.add('FIADO,');
Qr_Servidor.sql.add('CREDIARIO,');
Qr_Servidor.sql.add('DESCONTO,');
Qr_Servidor.sql.add('ACRESCIMO,');
Qr_Servidor.sql.add('TROCO,');
Qr_Servidor.sql.add('TOTAL,');
Qr_Servidor.sql.add('OPERACAO_FISCAL,');
Qr_Servidor.sql.add('CPF_CNPJ,');
Qr_Servidor.sql.add('CHAVE_CFE,');
Qr_Servidor.SQL.add('CUPOM_SAT');

Qr_Servidor.sql.add(') values (');

Qr_Servidor.sql.add(':COD_CUPONS,');
Qr_Servidor.sql.add(':COMANDA,');
Qr_Servidor.sql.add(':CAIXA,');
Qr_Servidor.sql.add(':TERMINAL,');
Qr_Servidor.sql.add(':DATA,');
Qr_Servidor.sql.add(':HORA,');
Qr_Servidor.sql.add(':OPERADOR,');
Qr_Servidor.sql.add(':VENDEDOR,');
Qr_Servidor.sql.add(':DINHEIRO,');
Qr_Servidor.sql.add(':CARTAOC,');
Qr_Servidor.sql.add(':CARTAOD,');
Qr_Servidor.sql.add(':CHEQUE,');
Qr_Servidor.sql.add(':CHEQUEP,');
Qr_Servidor.sql.add(':VALE,');
Qr_Servidor.sql.add(':OUTRO,');
Qr_Servidor.sql.add(':TIQUETE,');
Qr_Servidor.sql.add(':FIADO,');
Qr_Servidor.sql.add(':CREDIARIO,');
Qr_Servidor.sql.add(':DESCONTO,');
Qr_Servidor.sql.add(':ACRESCIMO,');
Qr_Servidor.sql.add(':TROCO,');
Qr_Servidor.sql.add(':TOTAL,');
Qr_Servidor.sql.add(':OPERACAO_FISCAL,');
Qr_Servidor.sql.add(':CPF_CNPJ,');
Qr_Servidor.sql.add(':CHAVE_CFE,');
Qr_Servidor.SQL.add(':CUPOM_SAT');

Qr_Servidor.sql.add(')');

Qr_Servidor.parambyname('COD_CUPONS').AsInteger := Qr_Local.fieldbyname('COD_CUPONS').AsInteger;
Qr_Servidor.parambyname('COMANDA').AsString := Qr_Local.fieldbyname('COMANDA').AsString;
Qr_Servidor.parambyname('CAIXA').AsString := Qr_Local.fieldbyname('CAIXA').AsString;
Qr_Servidor.parambyname('TERMINAL').AsInteger := Qr_Local.fieldbyname('TERMINAL').AsInteger;
Qr_Servidor.parambyname('DATA').AsDateTime := Qr_Local.fieldbyname('DATA').AsDateTime;
Qr_Servidor.parambyname('HORA').AsDateTime := Qr_Local.fieldbyname('HORA').AsDateTime;
Qr_Servidor.parambyname('OPERADOR').AsString := Qr_Local.fieldbyname('OPERADOR').AsString;
Qr_Servidor.parambyname('VENDEDOR').AsString := Qr_Local.fieldbyname('VENDEDOR').AsString;
Qr_Servidor.parambyname('DINHEIRO').AsCurrency := Qr_Local.fieldbyname('DINHEIRO').AsCurrency;
Qr_Servidor.parambyname('CARTAOC').AsCurrency := Qr_Local.fieldbyname('CARTAOC').AsCurrency;
Qr_Servidor.parambyname('CARTAOD').AsCurrency := Qr_Local.fieldbyname('CARTAOD').AsCurrency;
Qr_Servidor.parambyname('CHEQUE').AsCurrency := Qr_Local.fieldbyname('CHEQUE').AsCurrency;
Qr_Servidor.parambyname('CHEQUEP').AsCurrency := Qr_Local.fieldbyname('CHEQUEP').AsCurrency;
Qr_Servidor.parambyname('VALE').AsCurrency := Qr_Local.fieldbyname('VALE').AsCurrency;
Qr_Servidor.parambyname('OUTRO').AsCurrency := Qr_Local.fieldbyname('OUTRO').AsCurrency;
Qr_Servidor.parambyname('TIQUETE').AsCurrency := Qr_Local.fieldbyname('TIQUETE').AsCurrency;
Qr_Servidor.parambyname('FIADO').AsCurrency := Qr_Local.fieldbyname('FIADO').AsCurrency;
Qr_Servidor.parambyname('CREDIARIO').AsCurrency := Qr_Local.fieldbyname('CREDIARIO').AsCurrency;
Qr_Servidor.parambyname('DESCONTO').AsCurrency := Qr_Local.fieldbyname('DESCONTO').AsCurrency;
Qr_Servidor.parambyname('ACRESCIMO').AsCurrency := Qr_Local.fieldbyname('ACRESCIMO').AsCurrency;
Qr_Servidor.parambyname('TROCO').AsCurrency := Qr_Local.fieldbyname('TROCO').AsCurrency;
Qr_Servidor.parambyname('TOTAL').AsCurrency := Qr_Local.fieldbyname('TOTAL').AsCurrency;
Qr_Servidor.parambyname('OPERACAO_FISCAL').AsString := Qr_Local.fieldbyname('OPERACAO_FISCAL').AsString;

// verifica se o campo CPF_CNPJ tem informacao
if Qr_Local.fieldbyname('CPF_CNPJ').AsString = Null then
begin
Qr_Servidor.parambyname('CPF_CNPJ').AsString :=' '
end;

if Qr_Local.fieldbyname('CPF_CNPJ').AsString = ' ' then
begin
Qr_Servidor.parambyname('CPF_CNPJ').AsString :=' '
end;

if Qr_Local.fieldbyname('CPF_CNPJ').AsString <> ' ' then
begin
Qr_Servidor.parambyname('CPF_CNPJ').AsString := Qr_Local.fieldbyname('CPF_CNPJ').AsString;
end;


// verifica se o campo CPF_CNPJ tem informacao
if Qr_Local.fieldbyname('CHAVE_CFE').AsString = Null then
begin
Qr_Servidor.parambyname('CHAVE_CFE').AsString := ' '
end;

if Qr_Local.fieldbyname('CHAVE_CFE').AsString = ' ' then
begin
Qr_Servidor.parambyname('CHAVE_CFE').AsString := ' '
end;

if Qr_Local.fieldbyname('CHAVE_CFE').AsString <> ' ' then
begin
Qr_Servidor.parambyname('CHAVE_CFE').AsString := Qr_Local.fieldbyname('CHAVE_CFE').AsString;
end;


// verifica se o campo CUPOM_SAT tem informacao
if Qr_Local.fieldbyname('CUPOM_SAT').AsInteger = Null then
begin
Qr_Servidor.parambyname('CUPOM_SAT').AsInteger := 0
end;

if Qr_Local.fieldbyname('CUPOM_SAT').AsInteger <0>= 0 then
begin
Qr_Servidor.parambyname('CUPOM_SAT').AsInteger := Qr_Local.fieldbyname('CUPOM_SAT').AsInteger;
end;
Qr_Servidor.ExecSQL;
Qr_Local.Next; //Passa para o próximo registro

ProgressBar1.Position:=ProgressBar1.Position+1;
end;

e o erro acontece quando passa pela linha : QR_SERVIDOR.EXECSQL;

alguem consegue me mostrar onde esta meu erro e porque nao esta gravando no banco da retaguarda.

obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
leo_cj
Mestre
Mestre


Registrado: Sábado, 26 de Março de 2011
Mensagens: 881

MensagemEnviada: Qui Abr 20, 2017 9:11 am    Assunto: Responder com Citação

Já tentou executar esse insert direto no banco de dados passando os mesmos valores dos parâmetros pra ver se o erro também ocorre?

Está usando qual banco? Firebird?

da uma olhada nesses dois links:
http://forum.devmedia.com.br/viewtopic.php?t=95034
http://tracker.firebirdsql.org/browse/CORE-1442?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Qui Abr 20, 2017 9:22 am    Assunto: gravar dados via query Responder com Citação

leo_cj escreveu:
Já tentou executar esse insert direto no banco de dados passando os mesmos valores dos parâmetros pra ver se o erro também ocorre?

Está usando qual banco? Firebird?

da uma olhada nesses dois links:
http://forum.devmedia.com.br/viewtopic.php?t=95034
http://tracker.firebirdsql.org/browse/CORE-1442?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel


bom dia leo_cj

nao tentei fazer o insert, pois na rotina ja nao esta com insert?

e estou usando firebird sim
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
leo_cj
Mestre
Mestre


Registrado: Sábado, 26 de Março de 2011
Mensagens: 881

MensagemEnviada: Qui Abr 20, 2017 9:25 am    Assunto: Responder com Citação

sim, a rotina já está com o insert, porém, ao fazer esse mesmo insert direto via banco, nos possibilita determinar se o erro está no delphi ou no sql.

Por isso, o insert deve ser feito utilizando os mesmos valores que são passados pelo delphi.

Dê uma olhada também nos links que passei, faz anos que não utilizo o firebird, mas pelo que vi nos links, o erro ocorre geralmente quando o banco de dados não está disponível.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Qui Abr 20, 2017 9:36 am    Assunto: gravar dados via query Responder com Citação

leo_cj escreveu:
sim, a rotina já está com o insert, porém, ao fazer esse mesmo insert direto via banco, nos possibilita determinar se o erro está no delphi ou no sql.

Por isso, o insert deve ser feito utilizando os mesmos valores que são passados pelo delphi.

Dê uma olhada também nos links que passei, faz anos que não utilizo o firebird, mas pelo que vi nos links, o erro ocorre geralmente quando o banco de dados não está disponível.


na verdade nao estou conseguindo enchegar onde esta o erro e ja te li o link que voce recomendou mas ainda nada, consegue me mostrar o erro
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
leo_cj
Mestre
Mestre


Registrado: Sábado, 26 de Março de 2011
Mensagens: 881

MensagemEnviada: Qui Abr 20, 2017 10:06 am    Assunto: Responder com Citação

A instrução SQL está correta aparentemente, restando as seguintes possibilidades:

- Valor dos parâmetros podem estar errados
- Configuração de Componente errada
- Banco de dados indisponível

já realizou esse mesmo insert direto pelo banco de dados?

durante a execução do banco, coloque um breakpoint na linha
Citação:
Qr_Servidor.ExecSQL;


antes de executar essa linha, pegue o select
Citação:
Qr_Servidor.sql.SaveToFile(Caminho do seu Arquivo)


pegue também o valor dos parâmetros que foram passados para a query

com isso, você poderá replicar a instrução insert no banco de dados.

após fazer isso, nos informe aqui se o insert funciona ou não quando executado diretamente no banco
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 10398

MensagemEnviada: Qui Abr 20, 2017 11:17 am    Assunto: Responder com Citação

Bom dia,

sevensystemjundiai, desconfio que da forma como estão aqueles Ifs para passar os valores para os parâmetros CPF_CNPJ, CHAVE_CFE e CUPOM_SAT, existem casos em que não está sendo passado nenhum valor para eles e isso talvez esteja provocando esse erro.
Experimente fazer uns testes removendo aqueles Ifs e deixando o código da seguinte forma:

Código:
Qr_Servidor.parambyname('CPF_CNPJ').AsString := Trim(Qr_Local.fieldbyname('CPF_CNPJ').AsString);
Qr_Servidor.parambyname('CHAVE_CFE').AsString := Trim(Qr_Local.fieldbyname('CHAVE_CFE').AsString);
Qr_Servidor.parambyname('CUPOM_SAT').AsInteger := Qr_Local.fieldbyname('CUPOM_SAT').AsInteger;


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-comercial_ou_industrial-galpão
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Qui Abr 20, 2017 3:18 pm    Assunto: gravar dados via query Responder com Citação

imex escreveu:
Bom dia,

sevensystemjundiai, desconfio que da forma como estão aqueles Ifs para passar os valores para os parâmetros CPF_CNPJ, CHAVE_CFE e CUPOM_SAT, existem casos em que não está sendo passado nenhum valor para eles e isso talvez esteja provocando esse erro.
Experimente fazer uns testes removendo aqueles Ifs e deixando o código da seguinte forma:

Código:
Qr_Servidor.parambyname('CPF_CNPJ').AsString := Trim(Qr_Local.fieldbyname('CPF_CNPJ').AsString);
Qr_Servidor.parambyname('CHAVE_CFE').AsString := Trim(Qr_Local.fieldbyname('CHAVE_CFE').AsString);
Qr_Servidor.parambyname('CUPOM_SAT').AsInteger := Qr_Local.fieldbyname('CUPOM_SAT').AsInteger;


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-comercial_ou_industrial-galpão


imex nao deu certo, mesmo com sua orientacao
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 10398

MensagemEnviada: Qui Abr 20, 2017 8:14 pm    Assunto: Responder com Citação

Que tipo de componente é Qr_Local e Qr_Servidor?
O erro ocorre logo no primeiro registro?
O início da mensagem de erro é mesmo "SQL Server Error: ..."?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Qui Abr 20, 2017 10:34 pm    Assunto: gravar dados via query Responder com Citação

imex escreveu:
Que tipo de componente é Qr_Local e Qr_Servidor?
O erro ocorre logo no primeiro registro?
O início da mensagem de erro é mesmo "SQL Server Error: ..."?


boa noite imex

sim o erro acontece na leitura do primeiro registro e o é : SQL
Server Error : Unknown ISC erro 0

e o tipo de componente é TSQLQuery da aba DbExpress
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Qui Abr 20, 2017 10:37 pm    Assunto: gravar dados via query Responder com Citação

imex escreveu:
Que tipo de componente é Qr_Local e Qr_Servidor?
O erro ocorre logo no primeiro registro?
O início da mensagem de erro é mesmo "SQL Server Error: ..."?


boa noite imex

sim o erro acontece na leitura do primeiro registro e o é : SQL
Server Error : Unknown ISC erro 0

e o tipo de componente é TSQLQuery da aba DbExpress
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Sáb Abr 22, 2017 3:44 pm    Assunto: Re: gravar dados via query Responder com Citação

sevensystemjundiai escreveu:
imex escreveu:
Que tipo de componente é Qr_Local e Qr_Servidor?
O erro ocorre logo no primeiro registro?
O início da mensagem de erro é mesmo "SQL Server Error: ..."?


boa noite imex

sim o erro acontece na leitura do primeiro registro e o é : SQL
Server Error : Unknown ISC erro 0

e o tipo de componente é TSQLQuery da aba DbExpress



boa tarde a todos

conforme dicas com a relacao a abertura do banco de dados do componente e uma luz que foi data por todos onde eu nao estava ligando meu componente ao banco, entao a conexao deu certo a gravacao dos registros via QUERY que deixou minha rotina 2 terços mais rapdia e acredito que nao ira perder as informaces como esta ocorrendo anteriormente.

muito obrigado a todos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
sevensystemjundiai
Novato
Novato


Registrado: Quarta-Feira, 19 de Abril de 2017
Mensagens: 8
Localização: jundiai-sp

MensagemEnviada: Sáb Abr 22, 2017 3:46 pm    Assunto: Re: gravar dados via query Responder com Citação

sevensystemjundiai escreveu:
sevensystemjundiai escreveu:
imex escreveu:
Que tipo de componente é Qr_Local e Qr_Servidor?
O erro ocorre logo no primeiro registro?
O início da mensagem de erro é mesmo "SQL Server Error: ..."?


boa noite imex

sim o erro acontece na leitura do primeiro registro e o é : SQL
Server Error : Unknown ISC erro 0

e o tipo de componente é TSQLQuery da aba DbExpress



boa tarde a todos

conforme dicas com a relacao a abertura do banco de dados do componente e uma luz que foi data por todos onde eu nao estava ligando meu componente ao banco, entao a conexao deu certo a gravacao dos registros via QUERY que deixou minha rotina 2 terços mais rapdia e acredito que nao ira perder as informaces como esta ocorrendo anteriormente.

muito obrigado a todos




RESOLVIDO
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB