2015-09-25 2 views
0

В настоящее время я работаю над приложением VB, которое ежедневно читает новый лист excel из сетевой папки и копирует данные в базу данных. Я застрял в ошибке при попытке сначала использовать метод fill() моего dataAdapter. Ошибка: «System.Data.OleDb.OleDbException (0x80040E09): невозможно обновить. База данных или объект доступны только для чтения». Вот фрагмент кода, в котором произошла ошибка (последняя строка):VB.Net System.Data.OleDb.OleDbException Объект только для чтения

 Dim dt2 As DataTable 
     Dim myAdapter2 As Data.OleDb.OleDbDataAdapter 
     dt2 = New DataTable() 
     myAdapter2 = New Data.OleDb.OleDbDataAdapter(xls_sql, My.Settings.xlsfile) 
     myAdapter2.Fill(dt2) 

Мой запрос является основным:

xls_sql = "SELECT * FROM [" & FN & "]" 

и вот моя установка строки соединения:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\;Extended Properties='text;HDR=Yes;FMT = Delimited' 

Сотрудник предложил мне изменить свойства на

="Excel 8.0;HDR=Yes;IMEX=1"; 
+0

_ "' Коллега предложил ... использовать IMEX = 1" _ вы пробовали это? Если да, и это сработало, не стоит сомневаться, если нет, упомяните об этом. Если вы еще не пробовали, попробуйте. –

+0

О, да, извините, не набрал достаточно. Я попробовал и дал такую ​​же ошибку –

+0

Ваш файл находится в сети. И каталог, в котором он находится, может не иметь полных прав доступа из учетной записи пользователя, которая запускает код. Или сам файл доступен только для чтения –

ответ

0

Обнаружена проблема. Пришлось редактировать раздел реестра для Microsoft Jet Engine, так как в настоящее время он принимает только несколько типов файлов - не включая .xls.

https://support.microsoft.com/en-us/kb/245407#/en-us/kb/245407

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