Bom dia... Criei a tabela de faturamento da universidade onde trabalho, de acordo com as regras repassadas pela contabilidade. Porém quero deixar a contabilidade executar essa rotina de acordo com as datas que eles precisam. Então criei um forma dentro do programa contabil, onde a contabilidade informa as datas (último dia) dos meses em que ela precisa do faturamento condensado para análise. Isso está funcionando; entretanto, como poderão ser vários meses a cada execuação, a única maneira de pegar todos as datas foi criando o cursor para selecionar as datas, criar aquelas que faltam e então repassar como parâmetros para as procedures.
/* Declaração das variáveis a serem utilizadas na transação */
declare @REF_INI as datetime;
declare @REF_FIN as datetime;
declare @PER_INI as datetime;
declare @PER_FIN as datetime;
/* Seleciona data salva em formato texto pelo aplicativo e converte para valor de data => REFERENCIA INICIAL */
set @REF_INI =
(select convert(datetime,
convert(varchar(04), substring(descricao, 7, 4)) + '-' +
convert(varchar(02), substring(descricao, 4, 2)) + '-' +
convert(varchar(02), substring(descricao, 1, 2)))
from
gconsist
where
codcoligada = 1
and aplicacao = 'C'
and codtabela = 'REFERENCIA'
and codcliente = 1)
/* Seleciona data salva em formato texto pelo aplicativo e converte para valor de data => REFERENCIA FINAL */
set @REF_FIN =
(select convert(datetime,
convert(varchar(04), substring(descricao, 7, 4)) + '-' +
convert(varchar(02), substring(descricao, 4, 2)) + '-' +
convert(varchar(02), substring(descricao, 1, 2)))
from
gconsist
where
codcoligada = 1
and aplicacao = 'C'
and codtabela = 'REFERENCIA'
and codcliente = 2)
/* Seleciona as datas relacionadas para a execuação das procedures - CURSOR das datas */
/* Essa data refere-se ao fim de cada período - cada mês - de acordo com a necessidade da contabilidade */
declare ATUALIZA_FATURAMENTO_GERAL cursor for
(select
convert(datetime,
convert(varchar(04), substring(descricao, 7, 4)) + '-' +
convert(varchar(02), substring(descricao, 4, 2)) + '-' +
convert(varchar(02), substring(descricao, 1, 2)))
from
gconsist
where
codcoligada = 1
and aplicacao = 'C'
and codtabela = 'FATURAMENT')
open ATUALIZA_FATURAMENTO_GERAL
fetch next from ATUALIZA_FATURAMENTO_GERAL into @PER_FIN
while @@fetch_status = 0
begin
/* Cria a data inicial do período, de acordo com a data final selecionada no CURSOR => PERIODO INICIAL */
set @PER_INI = convert(datetime,
convert(varchar(04), datepart(year, @PER_FIN)) + '-' +
convert(varchar(02), datepart(month, @PER_FIN)) + '-01')
/* 9 Procedures a serem executadas com os parametros selecionados/criados */
exec FAT_1_SALDOANTERIOR @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_2_MENSAL @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_3_BAIXAS @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_4_ANTEC_FAT_MES_BX_ANT @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_5_ANTEC_FAT_POST_BX_MES @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_6_ACORDOS_TOTAIS @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_7_ACORDOS_FAT_POST_BX_MES @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_8_ACORDOS_FAT_MES_BX_ANT @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
exec FAT_9_SALDO_ANTERIOR @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
go
/* Próxima data, caso exista */
fetch next from ATUALIZA_FATURAMENTO_GERAL into @PER_FIN
end
close ATUALIZA_FATURAMENTO_GERAL
deallocate ATUALIZA_FATURAMENTO_GERAL
A linha que o SQL Server Management Studio acusa erro é a destacada acima... Só se não seja possível trabalhar com variáveis para executar procedures, pois na sintaxe não encontrei erro.
Erro 2
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@REF_INI".
declare @REF_INI as datetime;
Então... esse é mais esquisito ainda... Ele acusa erro na linha da declaração da variável.... :wacko:
Mas enfim... Alguém já executou procedures com parâmentros selecionado/armazendos dentro de váriaveis?!?!
Fico no aguardo.
OBS.: Não tenho acesso ao código fonte do aplicativo, razão pela qual as procedures foram desenvolidas e as datas salvas em formato TEXTO já que o programa trata isso como "CAMPO COMPLEMENTAR"
Pergunta
andreluis1411
Bom dia... Criei a tabela de faturamento da universidade onde trabalho, de acordo com as regras repassadas pela contabilidade. Porém quero deixar a contabilidade executar essa rotina de acordo com as datas que eles precisam. Então criei um forma dentro do programa contabil, onde a contabilidade informa as datas (último dia) dos meses em que ela precisa do faturamento condensado para análise. Isso está funcionando; entretanto, como poderão ser vários meses a cada execuação, a única maneira de pegar todos as datas foi criando o cursor para selecionar as datas, criar aquelas que faltam e então repassar como parâmetros para as procedures.
Mas acontece os seguintes erros:
Erro 1
Msg 102, Level 15, State 1, Line 49
Incorrect syntax near '@PER_FIN'.
exec FAT_1_SALDOANTERIOR @REF_INI, @REF_FIN, @PER_INI, @PER_FIN
A linha que o SQL Server Management Studio acusa erro é a destacada acima... Só se não seja possível trabalhar com variáveis para executar procedures, pois na sintaxe não encontrei erro.
Erro 2
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@REF_INI".
declare @REF_INI as datetime;
Então... esse é mais esquisito ainda... Ele acusa erro na linha da declaração da variável.... :wacko:
Mas enfim... Alguém já executou procedures com parâmentros selecionado/armazendos dentro de váriaveis?!?!
Fico no aguardo.
OBS.: Não tenho acesso ao código fonte do aplicativo, razão pela qual as procedures foram desenvolidas e as datas salvas em formato TEXTO já que o programa trata isso como "CAMPO COMPLEMENTAR"
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.