Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Currency
Message
General information
Forum:
Visual Basic
Category:
Coding, syntax & commands
Title:
Miscellaneous
Thread ID:
00516007
Message ID:
00516455
Views:
9
>>>>>I'm having to do a SQL Select on an Access 95 database.
>>>>>
>>>>>One of the fields is type Currency.
>>>>>
>>>>>The value passed over to compare it to is of type Numeric.... so I get an operator/operand type mismatch.
>>>>>
>>>>>What is an easy way to compare the two?
>>>>>
>>>>>Thanks
>>>>
>>>>Can you show some code? It supposed to work. Maybe can you try to explicitly convert using CCUR.
>>>
>>>Here is some of the code...
>>>*******************************************************************
>>>
>>> sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ;
>>> m_sMdbPath + "pccw.mdb;Persist Security Info=False"
>>>
>>> oConn = CREATEOBJECT("ADODB.Connection")
>>> oConn.OPEN(sConn)
>>>
>>>*Select the cursor tfipost
>>> SELECT tfipost
>>>*Look at all it's records
>>> SCAN
>>> DO chktrans WITH tfipost.ship_id, tfipost.ordertotal, m_lcMerchantNumber ,oConn
>>> ENDSCAN
>>>
>>> oConn.CLOSE
>>> RELEASE oConn
>>>
>>>ENDIF Post-Authorization
>>>
>>>***************************************************************************************
>>>* *
>>>* *
>>>***************************************************************************************
>>>PROCEDURE chkTrans
>>> PARAMETER m_ship_id, m_ordertotal, m_lcMerNum, m_oConn
>>>
>>>SUSPEND
>>>
>>> lsShip_id = PADR(ALLTRIM(STR(m_ship_id)),10)
>>> lsOrderTotal = STR(m_ordertotal,6,2)
>>>*-- Get orders for Post-Authorization.
>>>
>>> sSQL = "SELECT trans.* " + ;
>>> "FROM trans " + ;
>>> "WHERE trans.ticket = '" + lsShip_id + "' " + ;
>>> "AND trans.tid = '" + m_lcMerNum + "' " + ;
>>> "AND trans.amount = '" + lsOrderTotal + "' "
>>>
>>>
>>> oHeader = CREATEOBJECT("ADODB.Recordset")
>>> oHeader.OPEN(sSQL, m_oConn)
>>>
>>>*****************
>>>Crashes on the OPEN statement....
>>>
>>>with error
>>>"OLE (Dispatch exception code 0 from Microsoft Jet Database Engine : Data type mismatch in criteria expression....
>>>
>>>*******************
>>>
>>>The error has been pinned down to the Currency value in TRANS.amount and the string value in lsOrderTotal.
>>>
>>>I"m going to try some of the Numeric to Currency Functions to see if they help.
>>>Tommy
>>
>>Don't put quote around the amount:
>>"AND trans.amount = " + lsOrderTotal
>
>Turned out the quote was making it behave as a string instead of a numeric in the Open Statement.... there was the mismatch.
>
>Tommy

In this case, convert your field to string:
STR(trans.amount,6,2)
Éric Moreau, MCPD, Visual Developer - Visual Basic MVP
Conseiller Principal / Senior Consultant
Moer inc.
http://www.emoreau.com
Previous
Reply
Map
View

Click here to load this message in the networking platform