[SQL] SUM functie geeft verkeerde type

Pagina: 1
Acties:

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 00:50

hneel

denkt er het zijne van

Topicstarter
Ik ben bezig met een paar queries. Met de eerste bereken ik een SUM van een paar velden. Met de 2e doe ik een INSERT van het resultaat in een andere tabel.

(Het resultaat van de 1e query wordt gesaved naar een tijdelijke tabel via de functie DbiMakePermanent (Borland C++))

Het probleem is dat de velden van het type "Long Integer" zijn en dat de SUM een resultaat van het type "Number" oplevert. Als ik dan die INSERT doe krijg ik de foutmelding "Type mismatch in expression".

Wat is hier aan te doen? Ofwel moet ik het resultaat van die SUM naar een "Long Integer" kunnen converteren, ofwel ik moet die foutmelding bij de insert kunnen onderdrukken/negeren.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Laat dat ophalen van de sum en inserten eens zien?

'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.


  • hneel
  • Registratie: Maart 2001
  • Laatst online: 00:50

hneel

denkt er het zijne van

Topicstarter
Dit is de eerste.

SQL:
1
2
3
4
5
6
7
SELECT R."P/N Component",
       SUM(R."Quantity") AS Quantity
FROM Regist.DB R
WHERE R.Ordernumber = "Scanned"
AND R.Validate >= :param1
  AND R.Validate <= :param2
GROUP BY R."P/N Component"


Vervolgens wordt dat gesaved in de file "tmp_RegistSum.DB".

Dan wordt de volgende uitgevoerd:

SQL:
1
2
3
4
5
6
7
INSERT INTO Regist.DB ( Regist.DB."P/N Component",
                        Regist.DB."Quantity",
                        Regist.DB."Ordernumber" )
SELECT S."P/N Component"
       S."Quantity"
       "Backuped"
FROM tmp_RegistSum.DB S


PS, de database is Paradox. (Deze heeft wat beperkingen. O.a. geneste queries worden niet ondersteund).

[ Voor 255% gewijzigd door hneel op 29-05-2006 11:35 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 00:09

Janoz

Moderator Devschuur®

!litemod

Waarom werk je via een tmp bestand? Je kunt die select query toch ook wel rechtstreeks in die insert query zetten?

Daarnaast lijken mij die quotes om de kolomnamen wat vreemd, maar ik ken paradox dan ook niet.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • hneel
  • Registratie: Maart 2001
  • Laatst online: 00:50

hneel

denkt er het zijne van

Topicstarter
Ik insert ze in dezelfde tabel als waar ik ze uit lees. Ik weet niet of dat dan wel goed gaat, maar ik kan het allicht eens proberen.

(Die quotes zijn nodig als er een spatie in de kolomnaam staat)


Edit:

Nee, dit werkt ook niet. Ook dan zorgt die SUM voor een "Type mismatch in expression".

[ Voor 255% gewijzigd door hneel op 29-05-2006 11:44 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20-02 23:46

Creepy

Tactical Espionage Splatterer

En post de regel dan eens welke de Type Mismatch oplevert. Hoe zet je de variabelen in je query vanuit de code? Als je netjes parameters gebruikt en vervolgens met .AsInteger waarden zet en ophaalt dan zou het geen probleem mogen opleveren.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • lier
  • Registratie: Januari 2004
  • Nu online

lier

MikroTik nerd

Kan je misschien gebruik maken van CAST of CONVERT ?
Dus in je SELECT statement je SUM casten.

Eerst het probleem, dan de oplossing


  • hneel
  • Registratie: Maart 2001
  • Laatst online: 00:50

hneel

denkt er het zijne van

Topicstarter
lier schreef op maandag 29 mei 2006 @ 11:56:
Kan je misschien gebruik maken van CAST of CONVERT ?
Dus in je SELECT statement je SUM casten.
Bingo!

Met die CAST komt het goed. Die functie kende ik nog niet... Bedankt!
Pagina: 1