Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Estou querendo fazer a comparação Data_Quitacao. Mas ele está dando este erro.
Alguém poder me dizer o que estou fazendo de errado.
Seque o Script.
O Erro NoConcatenate "QVD" Comparação.
O Erro:
Erro de sintaxe, cláusula FROM faltando ou colocada na posição errada:
Incremental:
NoConcatenate
LOAD Tipo_Conta,
Ordem_Plano_Contas3,
CodigoFilial,
NomeFilial,
Pagar_Receber,
Ano,
Dia,
Trimestre,
Mes,
AnoMes,
Situacao,
CodigoPlanoContas2,
NomePlanoContas2,
NomePlanoContas3,
CodigoPlanoContas3,
Data_Efetivado,
Valor_Quitado,
Exclui_DRE,
Sequencia,
Descricao,
Tela_Origem,
Tela_Quitacao,
Data_Emissao,
Data_Quitacao,
CodigoCliente,
Data_Vencimento,
NomeCliente,
Valor_Total,
CodigoPlanoContas1,
Tipo_Recebido_Pago,
NomePlanoContas1,
Ordem
SQL SELECT *
FROM "S9_Real".dbo."View_Contas_Receber"
where Data_Quitacao >= #10/07/2015 00:00:00#
Incremental:
NoConcatenate
LOAD Tipo_Conta,
Ordem_Plano_Contas3,
CodigoFilial,
NomeFilial,
Pagar_Receber,
Ano,
Dia,
Trimestre,
Mes,
AnoMes,
Situacao,
CodigoPlanoContas2,
NomePlanoContas2,
NomePlanoContas3,
CodigoPlanoContas3,
Data_Efetivado,
Valor_Quitado,
Exclui_DRE,
Sequencia,
Descricao,
Tela_Origem,
Tela_Quitacao,
Data_Emissao,
Data_Quitacao,
CodigoCliente,
Data_Vencimento,
NomeCliente,
Valor_Total,
CodigoPlanoContas1,
Tipo_Recebido_Pago,
NomePlanoContas1,
Ordem
SQL SELECT *
FROM "S9_Real".dbo."View_Contas_Receber"
where Data_Quitacao >= #10/07/2015 00:00:00#
Inserir um registro no banco de dados e não deu certo...
Não entendi, pode explicar melhor?
Por que na hora de gerar o registro ele gerar duas vezes
Veja este exemplo abaixo são 413 mil registros
ele faz a comparação e dobrar para 827 mil registros.
E isto mesmo?
V
Isso esta ocorrendo porque você esta fazendo uma releitura da tabela para pegar a maior data.
Sort_Movimento:
LOAD *
Resident Receber
Order by Data_Quitacao;
LET 'vUpdateDate' = Peek('Data_Quitacao', -1,'Sort_Movimento');
DROP Table Receber;
Neste caso você não precisa fazer um LOAD *, bastaria fazer um LOAD MAX(Data_Quitacao)
Ola Agnaldo,
So para confirmar se eu entendi corretamente o seu script.
Primeiro voce esta carregando os dados existentes em Receber.qvd:
Receber:
LOAD Tipo_Conta,
Ordem_Plano_Contas3,
CodigoFilial,
NomeFilial,
Pagar_Receber,
Ano,
Dia,
Trimestre,
Mes,
AnoMes,
Situacao,
CodigoPlanoContas2,
NomePlanoContas2,
NomePlanoContas3,
CodigoPlanoContas3,
Data_Efetivado,
Valor_Quitado,
Exclui_DRE,
Sequencia,
Descricao,
Tela_Origem,
Tela_Quitacao,
Data_Emissao,
Data_Quitacao,
CodigoCliente,
Data_Vencimento,
NomeCliente,
Valor_Total,
CodigoPlanoContas1,
Tipo_Recebido_Pago,
NomePlanoContas1,
Ordem
FROM
(qvd);
Em seguida voce precisa identificar a ultima Data_Quitacao e esta fazendo um LOAD RESIDENT para poder ordenar os dados pelo campo Data_Quitacao:
Sort_Movimento:
LOAD *
Resident Receber
Order by Data_Quitacao;
LET 'vUpdateDate' = Peek('Data_Quitacao', -1,'Sort_Movimento');
DROP Table Receber;
Entao, conforme o Yuri apontou o LOAD RESIDENT esta duplicando os registros, eu acredito que voce pode contornar esse problema de duas formas:
1. Da forma que o Yuri sugeriu, utilizando LOAD MAX(Data_Quitacao) e nesse caso voce nao precisaria eliminar a tabela Receber:
Sort_Movimento:
LOAD MAX(Data_Quitacao) as Max_Data_Quitacao
Resident Receber
Order by Data_Quitacao;
LET 'vUpdateDate' = Peek('Max_Data_Quitacao', -1,'Sort_Movimento');
2. Adicionar o parametro NOCONCATENATE na tabela Sort_Movimento:
Sort_Movimento:
NOCONCATENATE
LOAD * Resident Receber
Order by Data_Quitacao;
LET 'vUpdateDate' = Peek('Max_Data_Quitacao', -1,'Sort_Movimento');
DROP Table Receber;
Seguindo o script, para a carga incremental eu acredito que neste caso voce queira concatenar ao qvd existente somente os dados onde a data de quitacao for maior que a maxima data existente em Receber.qvd:
Incremental:
Concatenate(Receber)
LOAD Tipo_Conta,
Ordem_Plano_Contas3,
CodigoFilial,
NomeFilial,
Pagar_Receber,
Ano,
Dia,
Trimestre,
Mes,
AnoMes,
Situacao,
CodigoPlanoContas2,
NomePlanoContas2,
NomePlanoContas3,
CodigoPlanoContas3,
Data_Efetivado,
Valor_Quitado,
Exclui_DRE,
Sequencia,
Descricao,
Tela_Origem,
Tela_Quitacao,
Data_Emissao,
Data_Quitacao,
CodigoCliente,
Data_Vencimento,
NomeCliente,
Valor_Total,
CodigoPlanoContas1,
Tipo_Recebido_Pago,
NomePlanoContas1,
Ordem;
SQL SELECT *
FROM "S9_Real".dbo."View_Contas_Receber"
where Data_Quitacao >= '$(vUpdateDate)';
Espero ter ajudado.
Cesar
Inserir um Registro para a comparação:
Conforme a ajuda do Yuri e do Cesar,
Gostaria de agradecer.
Como ficou o script correto:
Receber:
LOAD Tipo_Conta,
Ordem_Plano_Contas3,
CodigoFilial,
NomeFilial,
Pagar_Receber,
Ano,
Dia,
Trimestre,
Mes,
AnoMes,
Situacao,
CodigoPlanoContas2,
NomePlanoContas2,
NomePlanoContas3,
CodigoPlanoContas3,
Data_Efetivado,
Valor_Quitado,
Exclui_DRE,
Sequencia,
Descricao,
Tela_Origem,
Tela_Quitacao,
Data_Emissao,
Data_Quitacao,
CodigoCliente,
Data_Vencimento,
NomeCliente,
Valor_Total,
CodigoPlanoContas1,
Tipo_Recebido_Pago,
NomePlanoContas1,
Ordem
FROM
(qvd);
Sort_Movimento:
LOAD MAX(Data_Quitacao) as Max_Data_Quitacao
Resident Receber
Order by Data_Quitacao;
LET vUpdateDate = Date(Floor(Peek('Max_Data_Quitacao', -1,'Sort_Movimento') ), 'DD/MM/YYYY');
Incremental:
Concatenate(Receber)
LOAD Tipo_Conta,
Ordem_Plano_Contas3,
CodigoFilial,
NomeFilial,
Pagar_Receber,
Situacao,
CodigoPlanoContas2,
NomePlanoContas2,
NomePlanoContas3,
CodigoPlanoContas3,
Data_Efetivado,
Valor_Quitado,
Exclui_DRE,
Sequencia,
Descricao,
Tela_Origem,
Tela_Quitacao,
Data_Emissao,
Data_Quitacao,
CodigoCliente,
Data_Vencimento,
NomeCliente,
Valor_Total,
CodigoPlanoContas1,
Tipo_Recebido_Pago,
NomePlanoContas1,
Ordem;
SQL SELECT *
FROM "S9_Real".dbo."View_Contas_Receber"
where Data_Quitacao >= '$(vUpdateDate)';