[SQL 2005] Conversion failed when converting ...

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ben al even bezig om een query goed aan de praat te krijgen.

Ik krijg steeds onderstaande melding:
Conversion failed when converting the varchar value '2.4' to data type int.

Ik weet waar het probleem in zit, maar ik weet niet hoe je het op moet lossen. Misschien dat hier iemand het weet?

code:
1
- ((Quantity_Requested_in_Stock_UM * Sales_Price_in_Stock_UM * 100) / (100 + extra_invoice_vat_code))


Het zit hem in "extra_invoice_vat_code" (BTW). Als ik hier 6 of 19 invul, dan werkt het wel, maar het moet vanuit de tabel komen.

Ik heb het al geprobeert met een CAST: (100 + CAST(extra_invoice_vat_code) AS INT) en met CONVERT (100 + CONVERT(int, extra_invoice_vat_code)), maar dat werkt niet

Heeft iemand een idee?

[ Voor 4% gewijzigd door Verwijderd op 18-01-2010 11:49 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan 2.4 niet in een int stoppen aangezien een int alleen gehele getallen kan bevatten. Je zult je dus even in de verschillende data types moeten verdiepen, en het juiste type kiezen om je data op te slaan.

Verder lijkt het me ook nogal gek om de data in je database als text op te slaan als het klaarblijkelijk gewoon getallen moeten zijn.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Een INT kan geen decimalen bevatten. Je zult dus het datatype van de kolom moeten aanpassen of er alleen gehele getallen in stoppen.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In de tabel van extra_invoice_vat_code komt geen 2.4 voor, enkel 0 of 6 of 19

de uitkomst van de berekening als waarschijnlijk 2.4 en dan gaat hij verder rekenen.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dan moet je gaan debuggen. Ergens komt er een varchar/string '2.4' voor die niet naar int geconverteerd kan worden. Ik zou zeggen schrijf alle stappen in de berekening in een aparte variabele, en stap er met de debugger doorheen. Dan zie je snel genoeg waar het mis gaat.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Woy schreef op maandag 18 januari 2010 @ 12:25:
Dan moet je gaan debuggen. Ergens komt er een varchar/string '2.4' voor die niet naar int geconverteerd kan worden. Ik zou zeggen schrijf alle stappen in de berekening in een aparte variabele, en stap er met de debugger doorheen. Dan zie je snel genoeg waar het mis gaat.
Zo werkt hij wel

code:
1
(CAST(100 as INT) + CAST([Sales_PriceLists].[extra_invoice_vat_code] AS money))

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Maar het slaat nergens op. Waarom cast je de int literal 100 naar een int?

Als ik jou was zou ik eens een goed boek of een cursus aanschaffen, want blijkbaar heb je de basis datatypes nog niet helemaal begrepen. Het casten van [extra_invoice_vat_code] naar money is ook al vreemd, want dat hoort al van dat type ( of vergelijkbaar ) te zijn.

[ Voor 65% gewijzigd door Woy op 18-01-2010 12:45 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En vervolgens is het optellen van een int en een money-datatype ook alleen maar mogelijk vanwege (nog) een impliciete cast.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Data Type Precedence

Vraag is ook waar je integer vandaan komt. Er was een reden om integer alleen te gebruiken in omgevingen waar de performance heel nauw luisterde, gebruik liever numeric (decimal).

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.

Pagina: 1