Как выполнить SQL-запрос к файлу Excel независимо от версии MS Office? - PullRequest
0 голосов
/ 09 декабря 2010

Я создаю приложение в VBSCRIPT требование моего приложения состоит в том, чтобы отфильтровать данные, сохраненные в файле Excel, и получить общее количество записей и сумму определенного столбца. Файл Excel, который я беру в качестве входных данных, программно генерируется другим скриптом. но когда я запускаю свой скрипт, я получаю сообщение об ошибке

" [Microsoft][ODBC Excel Driver] Data type mismatch in criteria expression.

Line (35): "objAdRs.Open strSQLStatement, objAdCon, 1, 3". "

требование моего приложения состоит в том, что оно должно быть достаточно устойчивым, чтобы принимать входные данные из Excel, написанные в любом формате или версии. я использовал следующую инструкцию драйвера.

Set objAdCon = CreateObject("ADODB.Connection")
objAdCon.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ="&strFileName & ";Readonly=True"

и обрабатывать набор записей по этим строкам

Set objAdRs = CreateObject("ADODB.Recordset")
objAdRs.CursorLocation=3
objAdRs.Open strSQLStatement, objAdCon, 1, 3

все работает нормально, если я сначала сохраняю файл на моем компьютере ..

и приложение, которое создает файл, использует инструкцию foll для программного сохранения и создания книги. сохранить:

objExcelMain.ActiveWorkbook.Save

создать:

set objOutputWorkbook = objOutputExcel.WorkBooks.Add
set objOutputWorksheets = objOutputWorkbook.WorkSheets

1 Ответ

0 голосов
/ 09 декабря 2010

Чтобы обратиться к более чем одному типу источника данных, вы должны использовать слой абстракции данных, такой как Hibernate, который, кстати, доступен для .NET.

Вот поддерживаемые форматы / базы данных http://community.jboss.org/wiki/SupportedDatabases В нем несколько версий Excel.

Если будет выпущена новая версия Excel, тогда вам нужно только найти (написать?) Новый драйвер и подключить его к Hibernate, а не переписывать код клиента на уровень абстракции данных. Точно так же, если вы решите сохранить свои данные в базе данных другого типа, вам нужно всего лишь изменить свою конфигурацию, а не переписывать весь набор кода.

Вот сайт NHibernate: http://community.jboss.org/wiki/NHibernateforNET

Вот учебник для VS: http://community.jboss.org/wiki/usingnhibernatewithvisualstudionet

Может потребоваться некоторое время, чтобы научиться работать с NHibernate (если вы раньше не работали с ним), но это определенно окупается. Это поможет вам сделать все правильно,

Greetz, J.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...