SQL bedrag positief maken geeft foutmelding boven de 1000

Status
Niet open voor verdere reacties.

xmir

Gebruiker
Lid geworden
12 mrt 2011
Berichten
212
Hallo,

Ik wil een bestaand bedrag in een tabel (format staat vast) wijzigen van negatief (-100) naar positief (100).
Nu kreeg ik dat voor elkaar door het te vermenigvuldigen met -1
Echter blijkt nu dat dit bij bedragen boven de 1000 die weergegeven worden als 1.000,00 een foutmelding oplevert en ik vermoed dat dat door de . in het duizendtal komt.
Om het plaatje compleet te maken moest ik er ook nog een to_char voorzetten omdat hij anders 100.00 retourneert (dan maakt hij er dus een engelse notatie van).

Aan de database en formats kan ik verder niks doen, ik gebruik slechts de inhoud om datamodellen te maken die in rapporten gebruikt worden.

Weet iemand hoe ik dit op kan lossen zodat het ook goed gaat met bedragen boven de 1000?

Vast dank voor het meedenken!!
 
Ik vrees voor je dat je veld met getallen is ingesteld als tekstveld, anders kan ik het niet echt verklaren. Al kun je een tekstveld niet echt vermenigvulden... Hoe is precies je werkwijze? (Bij voorkeur met de code)?
 
Hoi OctaFish,

Originele code in het datamodel:
, OSS_ADF_INSCHRIJFHIST.MED_OPEN_TOTAAL(OST_STUDENT.STUDENTNUMMER, OST_STUDENT_INSCHRIJFHIST.COLLEGEJAAR) UU_TOTAALBEDRAG_TERUG_NL

helaas een functie die ik niet in bv TOAD kan uitvoeren maar de uitkomst is een bedrag wat negatief kan zijn.
Het eerste testbedrag was -432,12 en dat moest voor in het rapport 432,12 worden.

Het positief krijgen lukte dmv:
, OSS_ADF_INSCHRIJFHIST.MED_OPEN_TOTAAL(OST_STUDENT.STUDENTNUMMER, OST_STUDENT_INSCHRIJFHIST.COLLEGEJAAR)*-1 UU_TOTAALBEDRAG_TERUG_NL

Echter kreeg ik toen de uitkomst 432.12 en dat moest 432,12 zijn

Dat lukt dmv:
, to_char(OSS_ADF_INSCHRIJFHIST.MED_OPEN_TOTAAL(OST_STUDENT.STUDENTNUMMER, OST_STUDENT_INSCHRIJFHIST.COLLEGEJAAR)*-1) UU_TOTAALBEDRAG_TERUG_NL

So far so good totdat ik ineens bij de uitdraai van het rapport (BI Publisher) de foutmelding kreeg ORA-01722: ongeldig getal en dat bleek om het bedrag 1.034,60 te gaan.
 
Opgelost

OPGELOST! Ik heb het veel eenvoudiger opgelost met een replace:

, REPLACE (OSS_ADF_INSCHRIJFHIST.MED_OPEN_TOTAAL(OST_STUDENT.STUDENTNUMMER, OST_STUDENT_INSCHRIJFHIST.COLLEGEJAAR), '-', '') UU_TOTAALBEDRAG_TERUG_NL


:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan