2016-04-08 2 views
0

Возможно, довольно простой ответ на этот вопрос, но я вытягиваю свои волосы, пытаясь решить мою проблему. Я использую Access 2007.Access 2007 CInt Query Issue

Мой запрос приведен ниже:

SELECT Pricing.* 
FROM OrderReceipt_be 
INNER JOIN Pricing ON CInt(OrderReceipt_be.[Pricing Table Option Code]) = Pricing.ID 
WHERE OrderReceipt_be.[PO_Number] = PONumber(); 

По какой-то причине [PO_NUMBER] поле хранится в виде текста на мой ключ, который долгое внутр. Вот почему я пытаюсь преобразовать его в целое число.

Однако, когда я запускаю мой запрос я получаю ошибку

"Ошибка компиляции. В выражении запроса CInt (OrderReceipt_be. [Цены Таблица Код опции]) = Pricing.ID".

Я провел несколько фундаментальных исследований, и кажется, что наиболее распространенной проблемой является то, что мне не хватает справочной библиотеки. Однако, пройдя весь список, я не вижу ссылок, отмеченных как «Отсутствующие», поэтому это должно быть что-то другое. Я также попытался отключить и снова включить все библиотеки ссылок, чтобы узнать, помогает ли это, но пока ничего.

Любые мысли?

+0

идентификаторы обычно Long Int, так что вы хотите 'CLng' вместо' CInt'. Но это, вероятно, не вызывает проблемы. – Andre

ответ

0

Если вы можете иметь коды Null, попробуйте:

SELECT Pricing.* 
FROM OrderReceipt_be 
INNER JOIN Pricing ON Val(Nz(OrderReceipt_be.[Pricing Table Option Code])) = Pricing.ID 
WHERE OrderReceipt_be.[PO_Number] = PONumber(); 

или попробовать обратное преобразование:

SELECT Pricing.* 
FROM OrderReceipt_be 
INNER JOIN Pricing ON OrderReceipt_be.[Pricing Table Option Code] = CStr(Pricing.ID) 
WHERE OrderReceipt_be.[PO_Number] = PONumber();