• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fynger

ajuda numa stored procedure, sql server

8 mensagens neste tópico

boas,

é o seguinte, tou com dificuldades em criar uma stored procedure...

preciso de fazer percorrer um numero de linhas de uma tabela dentro de datas e depois tratar cada linha,

por ex: em vez de aparecer o mesmo artigo repetido em x linhas, quero incrementar a quantidade desse artigo...

e dps retornar tudo para abrir num report...

alguem me consegue dar uma ajuda?

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

de input envio a data inicial a data final

e dps faço um select para tirar toda a informação para construir o meu report

mas antes preciso de tratar varios atributos..

eu tinha isto:

ALTER PROCEDURE dbo.XXX
@DT_INICIAL AS VARCHAR(20),
@DT_FINAL AS VARCHAR(20),
@ID_EMPRESA AS INTEGER
AS
BEGIN
SELECT --EP.Nome CabNome, EP.Descricao CabDescricao, EP.Contribuinte CabContribuinte, EP.CapitalSocial CabCapitalSocial, EP.Conservatoria CabConservartoria,

	F.DtDocumento, FP.Id_Artigo, FP.Descricao, FP.Quantidade, ((FP.Liquido) * (1 + (FP.ValorIva / 100)) / (1 + (FP.ValorIva / 100))) As ValorLiquido, ((FP.Liquido) * (1 + (FP.ValorIva / 100)) - ((FP.Liquido) * (1 + (FP.ValorIva / 100)) / (1 + (FP.ValorIva / 100)))) As ValorIva, ((FP.Liquido) * (1 + (FP.ValorIva / 100))) As Valor
	FROM FacturaClienteP FP
	LEFT JOIN FacturaCliente F ON (F.Id_FacturaCliente = FP.Id_FacturaCliente)
	LEFT JOIN Empresa EP ON (F.Id_Empresa = EP.Id_Empresa)		
WHERE F.Id_Empresa = @ID_EMPRESA AND
		F.DTDocumento BETWEEN CAST(@DT_INICIAL AS DATETIME) AND CAST(@DT_FINAL AS DATETIME)
ORDER BY F.DtDocumento, FP.Id_Artigo

END

mas como disse, há campos que preciso de tratar, artigos repetidos, o q está incorrecto...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para actualizar o melhor é fazeres update seleccionando as linhas correctas em vez de abrires um cursor for update.

Depois para retornar, basta retornares o resultado da query no final da função, creio que tens de retornar um ref cursor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não é actualizar que quero, quero é visualizar, quando digo tratar os dados, é por exemplo:

tenho os seguintes dados:

Id_Artigo - Quantidade - Valor - Data
5              - 1                  - 1,00 - 01-01-2007
5              - 1                  - 1,00 - 01-01-2007
5              - 1                  - 1,00 - 01-01-2007
5              - 1                  - 1,00 - 01-01-2007

quero fazer uma stored procedure para listar no crystal report em que em vez de aparecer como está aí,

quero que aparece artigo 5 Quantidade 4 valor 1,00

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, então tens de usar o SUM, com Group By.

Algo como:

select id_artigo, valor, sum(quantidade)

from tabela

group by id_artigo, valor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é isso mesmo, já está feito!

andei aqui dias devolta disto a por cursors e afinal é uma coisa tao simples :thumbsup:

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora