2010-12-09 20 views
0

我在VBSCRIPT 中構建應用程序,我的應用程序的要求是過濾保存在excel文件中的數據,並獲取特定列的總記錄數和總和。我輸入的excel文件是由另一個腳本生成的programmaticaly。 但是當我運行我的腳本,我得到一個錯誤說如何在Excel文件上進行SQL查詢而不考慮MS Office的版本?

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

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

我的應用程序的要求是,它應該有足夠能力接受來自Excel的任何格式或版本writen輸入。 我用下面的驅動語句。

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 
+0

你有沒有考慮OLEDB:http://www.connectionstrings.com/excel? – Fionnuala 2010-12-09 14:50:15

回答

0

爲了解決多種類型的數據源,你應該使用一個數據抽象層,比如Hibernate,wchich可用於.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的工作(如果你還沒有與它之前的工作),但它絕對有回報。它讓你幫忙做的事情先以正確的方式,

格爾茨, J.

+0

但我的應用程序的需要是,我不能使用點網。我必須嚴格遵守vbscript。我不能使用任何其他框架。 – Pertz 2010-12-10 09:12:39

相關問題