Vbscript 如何在Excel文件上进行SQL查询,而不考虑MS Office的版本?

Vbscript 如何在Excel文件上进行SQL查询,而不考虑MS Office的版本?,vbscript,Vbscript,我正在用VBSCRIPT构建一个应用程序 我的应用程序的要求是过滤保存在excel文件中的数据,并获取特定列的总记录计数和总和。作为输入的excel文件是由另一个脚本通过编程生成的。 但是当我运行脚本时,我得到一个错误 " [Microsoft][ODBC Excel Driver] Data type mismatch in criteria expression. Line (35): "objAdRs.Open strSQLStatement, objAdCon, 1, 3". " 我

我正在用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语句以编程方式保存和创建工作簿。 保存:

要创建:

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

为了处理多种类型的数据源,您应该使用一个数据抽象层,比如Hibernate,顺便说一句,它可用于.NET

以下是受支持的格式/数据库 其中包含多个版本的Excel

如果发布了新版本的Excel,那么您只需找到(编写?)一个新的驱动程序并将其插入Hibernate,而无需将客户机代码重新写入数据抽象层。同样,如果您决定将数据存储在另一种类型的数据库中,那么您只需要更改配置,而不是重新编写一大堆代码

以下是NHibernate网站:

以下是VS的教程:

学习使用NHibernate可能需要一些时间(如果您以前没有使用过),但肯定会有回报。这会让你先用正确的方式做事

格里茨,
J.

您考虑过OLEDB吗?但我的应用程序的需求是我不能使用网络。我必须严格遵守vbscript只。我不能使用任何其他框架。在这种情况下,我会坚持使用NHibernate解决方案,围绕它创建一个包装器接口,并使用interop从vbscript调用它。请查找“interop vbscript.NET”以帮助您完成此操作。另一种选择是公开web服务并使用vbscript连接到它。这似乎有点牵强,但互操作可能会变得非常混乱。下面是从vbscript中使用SOAP的指针:
set objOutputWorkbook = objOutputExcel.WorkBooks.Add
set objOutputWorksheets = objOutputWorkbook.WorkSheets