Ошибка SQLSTATE [07002]: поле COUNT неверно в приложении, но запрос работает нормально при тестировании непосредственно в MS Access

#java #android #sql #ms-access

#java #Android #sql #ms-access

Вопрос:

Я получаю эту ошибку при выполнении следующего запроса в моем коде, но запрос отлично работает при тестировании его непосредственно в ms Access.

«Ошибка SQLSTATE [07002]: поле COUNT неверно: -3010 [Microsoft] [ODBC Драйвер Microsoft Access] Слишком мало параметров. Ожидаемый 1.»

 select top 50 MainOrder.OrderNumber, OrderComponent.ArticleNumber, SupplierOrderMain.*, IIf(IsNull(InvoiceItems.Amount),0,InvoiceItems.Amount) AS expr1, IIF(IsNull(Customer.CustomerName),'N/A',Customer.CustomerName) AS expr2  
from Customer RIGHT JOIN (((InvoiceItems RIGHT JOIN OrderComponent ON InvoiceItems.OrderComponent = OrderComponent.ID) LEFT JOIN  MainOrder ON OrderComponent.OrderNumber = MainOrder.OrderNumber) RIGHT JOIN SupplierOrderMain ON OrderComponent.ID = SupplierOrderMain.OrderComponentID)  ON Customer.CustomerNumber = MainOrder.CustomerNumber 
where (Status = 'Status 1' or Status = 'Status 2')
order by MainOrder.OrderNumber desc, OrderComponent.ArticleNumber desc, SupplierOrderMain.Deadline desc

  

Ответ №1:

Попробуйте использовать собственный SQL «Is Null»:

 select top 50 
    MainOrder.OrderNumber, 
    OrderComponent.ArticleNumber, 
    SupplierOrderMain.*, 
    IIf(InvoiceItems.Amount Is Null,0,InvoiceItems.Amount) AS expr1, 
    IIF(Customer.CustomerName Is Null,'N/A',Customer.CustomerName) AS expr2  
  

и, возможно, Status — это зарезервированное слово:

 where ([Status] = 'Status 1' or [Status] = 'Status 2')
  

Комментарии:

1. К сожалению, это ничего не изменило, но спасибо, что пытались мне помочь 🙂