webForumDet fria alternativet

Function-problem

4 svar · 583 visningar · startad av freddyk

freddykMedlem sedan okt. 2006103 inlägg
#1

Varför fungerar itne denna function? REturnerar 0 när jag vill att den ska returnera TotBeloppInkMoms

TotBeloppEx fungerar. Ger 16666
Moms blir fel. 0 istället för korrekta 0.15
TotBeloppInk blir också 0 vilket är.... fel ;)

Någon som ser vart jag missar?

Tack på förhand...

ALTER FUNCTION [dbo].[TotBelopp] ( @fakturaID int ) 
RETURNS DECIMAL
AS
BEGIN

DECLARE @TotBeloppEx    INT
DECLARE @Moms			decimal(24,6)
DECLARE @TotBeloppInk	decimal(24,6)

SET @TotBeloppEx = 0
SET @Moms = 0
SET @TotBeloppInk = 0

BEGIN
	SET @TotBeloppEx = (SELECT (SUM(fakturaRadTotal)) FROM dbo.malte_faktura_fakturaRad WHERE dbo.malte_faktura_fakturaRad.fakturaID = @fakturaID)

	SET @Moms = (SELECT dbo.malte_faktura_faktura.fakturaMomsOmr FROM dbo.malte_faktura_faktura WHERE dbo.malte_faktura_faktura.fakturaID = @fakturaID)

	SET @TotBeloppInk = (@TotBeloppEx * @Moms)
END

RETURN @Moms

END
headbugMedlem sedan sep. 2006858 inlägg
#2

Nu var det ett tag sen jag höll på med T-SQL men jag har för mig att om du multiplicerar en INT med en DECIMAL så blir båda INT, dvs 0.15 blir 0 och därför skiter det sig.

Testa och se :)

freddykMedlem sedan okt. 2006103 inlägg
#3

ah... ok.... ska prova.... finns det ngn funktion i SQL som omvandlar INT till Decimal? som man kan köra i min function? :)

spangoMedlem sedan juni 20006 147 inlägg
#4

Vad sägs om att deklarera TotBeloppEx som decimal istället?

freddykMedlem sedan okt. 2006103 inlägg
#5

hahaha.... tja.... varför göra det så enkelt! :P

Tack Spango!

*ibland föder min idioti sig själv* :D

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb