2014-07-26 1 views
1

У меня проблема. Я использую этот запрос:Java UCanAccess не обнаруживает все предметы

SELECT prodeje.datum, 
     prodeje.prodejce, 
     prodeje.pocet, 
     prodeje.cena, 
     produkty.autor_music, 
     produkty.autor_text, 
     produkty.skladba, 
     produkty.isrc, 
     produkty.cd, 
     produkty.ean 
FROM prodeje 
     INNER JOIN produkty 
      ON prodeje.id_produktu = produkty.id 

Но он не возвращает все предметы. Должно быть 59 результатов, но он пропускает (случайно) 9 результатов. Когда я попробовал тот же запрос в Microsoft Access, он работал ... так что я в отчаянии.

Я использую драйвер UCanAccess JDBC.

+0

Попробуйте изменить 'INNER JOIN' для' LEFT JOIN' и посмотреть, восстановит ли он все результаты. –

+0

Можете ли вы загрузить файл базы данных Access, содержащий эти две таблицы, на сайт, например [wikisend.com] (http://wikisend.com/), а затем опубликовать ссылку для загрузки в комментарии здесь, чтобы мы могли попытаться воссоздать проблему? –

+0

Конечно, вот оно: http://wikisend.com/download/392154/data_prodej.mdb –

ответ

1

Наконец, (возможно) привидение поймано. Эта проблема уже сообщалась (но, к сожалению, никто не предоставил мне поврежденный mdb): http://sourceforge.net/p/ucanaccess/discussion/help/thread/0b85dea2/, и это не связано с движком SQL. Эта проблема на более низком уровне, чем UcanAccess (проблема с IO из-за ошибок формата в вашем mdb). Похоже, что Ms Access может работать нормально, несмотря на эти ошибки, а Jackcess (библиотека, используемая UCanAccess). Ваша версия mdb - 1997 (частично поддерживается только для чтения UCanAccess), и если вы конвертируете ее в более позднюю версию, все будет отлично работать с UCanAccess. Кроме того, использование средства MS Access «Ремонт и исправление» также должно устранить проблему.

+1

+1 Я согласен с тем, что это случай несколько поврежденного Access 97 файл. Я могу подтвердить, что если вы выполните «Ремонт», а затем «Компакт» в Access 97 (они были отдельными операциями в этой версии), то UCanAccess сообщит правильное количество строк в таблице [produkty]. (UCanAccess мог только «видеть» 38 строк до восстановления/сжатия в Access 97, но после этого он мог «видеть» все 54 строки.) –

+1

Эта проблема из-за несогласованности между метаданными таблицы и данными в поврежденном mdb/accdb имеет была решена в UCanAccess 2.0.9. – jamadei

Смежные вопросы