[MS-Sql] CONVERT var-char->money onzin?

Pagina: 1
Acties:
  • 145 views sinds 30-01-2008
  • Reageer

  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 12-05 16:32
Ik een database uit MS_ACCESS geconverteerd naar MS_SQL.

Krijg ik opeens in mijn ASP code de error:

Microsoft OLE DB Provider for SQL Server error '80040e07'

Disallowed implicit conversion from data type varchar to data type money, table xxxxxx.dbo.tbl_orders', column 'order_amount_subtotal'. Use the CONVERT function to run this query.

/xxxxx.asp, line 397

De error komt bijv. bij een "INSERT INTO tbl_orders (order_amount_subtotal) VALUES ('0')"

Ik begrijp niet echt waarom ik nu ineens een zogenaamde CONVERT functie zou moeten gebruiken zoals hieronder in de link staat... (Is het soms i.p.v. de quotes die ik dan niet meer om de '0' hoef te gebruiken ??)
http://msdn.microsoft.com...tsqlref/ts_ca-co_2f3o.asp

...don't know what should be here...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

De foutmelding zegt toch al genoeg? MSSQL kan blijkbaar niet impliciet van een string naar een money-type converteren. Je kunt dan de conversie expliciet doen (met CAST of CONVERT) of gewoon een numerieke waarde inserten (zonder quotjes dus).

日本!🎌


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Waarom zet je quotes rond een numerieke waarde?
Quotes mag je enkel rond alfanumerieke waardes zetten. Als jij quotes zet rond 0, dan is die 0 niet het cijfer 0, maar het karakter 0. (Het DBMS ziet die 0 dan dus niet meer als een cijfer, maar als een karakter/string.
Het Money datatype aanvaardt enkel numerieke gegevens.

https://fgheysels.github.io/


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 12-05 16:32
Ja,... maar als ik nou 1 EURO 33 wil inserten, dan moest ik in ACCESS '1,33' doen.

Als ik die quotjes weg laat, dan gaat hij namelijk het VELD 1 en daana het VELD 33 inserten. Ofwel, je krijgt een melding dat het aantal velden dan niet klopt.

Hoe moet ik dat dan nu inserten ? En hoe deden jullie dat dan in Access ?

...don't know what should be here...


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Het decimale scheidingsteken is niet de komma, maar het punt.

code:
1
INSERT INTO tabel (bedrag) VALUES ( 1.33 )

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
whoami schreef op 06 januari 2004 @ 09:44:
Het decimale scheidingsteken is niet de komma, maar het punt.
Dat hangt af van de installatie van sqlserver en de regional settings. Als je bv datum formats op dd-mm-yyyy zet, dan kan hij niet overweg met mm/dd/yyyy strings. (althans sqlserver 7). Normaliter echter installeer je geen NL sqlserver op een NL windows server, dus is het safe om de '.' te kiezen. :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

het decimaal scheidingsteken in je code is altijd een punt. Pas als je er een string van maakt, is het afhankelijk van je landinstellingen (van de gebruiker waar de SQL server service mee aanmeldt). Een komma als decimaal scheidingsteken zou betekenen dat je iets als
SQL:
1
...VALUES (1,33, 1,44)
zou kunnen opschrijven en dat kan natuurlijk nooit kloppen ;)

日本!🎌


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

_Thanatos_ schreef op 06 januari 2004 @ 11:07:
Een komma als decimaal scheidingsteken zou betekenen dat je iets als
SQL:
1
...VALUES (1,33, 1,44)
zou kunnen opschrijven en dat kan natuurlijk nooit kloppen ;)
Dat kan best kloppen voor een tabel met 4 integers ;)

Professionele website nodig?


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 12-05 16:32
VROEGER... voordat SQL werd gebruikt, maar access...

Was er een NEDERLANDSE Access database, als je dan in ASP het onderstaande deed:

var_a = rs("total_amount")


Dan kreeg je wel degelijk "5,56" terug (zie duidelijk,.. de comma)


Maar begrijp ik het goed dat je dus WEL altijd in -punten- moet INSERTEN ?

...don't know what should be here...


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Roel Broersma schreef op 06 januari 2004 @ 21:47:
VROEGER... voordat SQL werd gebruikt, maar access...
:?
SQL is een taal, Access gebruikt SQL, SQL Server gebruikt SQL, ....
Was er een NEDERLANDSE Access database, als je dan in ASP het onderstaande deed:

var_a = rs("total_amount")


Dan kreeg je wel degelijk "5,56" terug (zie duidelijk,.. de comma)
Omdat jij in je regional settings in Windows, een komma hebt gedefinieerd als decimaal scheidingsteking, en Access naar die settings gaat gaan kijken om te weten hoe hij de data moet formatten.

https://fgheysels.github.io/


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 12-05 16:32
Whoami, met vroeger bedoelde ik VOORDAT de data werd geconverteerd naar SQL (zie topic start).


Als ik hem uitlees en een COMMA terugkrijg als scheidingsteken.
(even tussendoor, in SQL SERVER kan ik PER database language settings e.d. aanpassen), dan zou je toch ook zeggen dat ik hem met een COMMA als scheidingsteken moet invoeren ?

...don't know what should be here...

Pagina: 1