我有一個VB.Net應用程序。我將它與MS Access數據庫連接起來。現在我必須執行查詢。我的查詢是:Update table1 set field1=replace(field1,'|','"')
表達式中未定義的函數'替換'
此查詢似乎從Access數據庫的查詢分析器工作正常,但是當我做同樣的形式VB.Net代碼時,它會引發錯誤,指出「未定義的函數」替換表達式「
我正在使用OLEDB連接和命令。我正在使用「執行查詢」功能。
任何人都可以幫助我嗎?
我有一個VB.Net應用程序。我將它與MS Access數據庫連接起來。現在我必須執行查詢。我的查詢是:Update table1 set field1=replace(field1,'|','"')
表達式中未定義的函數'替換'
此查詢似乎從Access數據庫的查詢分析器工作正常,但是當我做同樣的形式VB.Net代碼時,它會引發錯誤,指出「未定義的函數」替換表達式「
我正在使用OLEDB連接和命令。我正在使用「執行查詢」功能。
任何人都可以幫助我嗎?
不幸的是,當您從您的VB.Net應用程序連接到Access數據庫時,根本沒有使用Access查詢引擎。你正在使用Jet。在Access中可用的某些功能(如替換爲)在Jet中不可用。
經典解決方案是使用的組合IIF,INSTR等(這些是可用)。是的,它不如取代玩,但你必須學會不做。
這個問題目前被接受的答案已經過時了。使用
Provider=Microsoft.ACE.OLEDB.12.0
下面的C#代碼工作得很好:
cmd.CommandText =
"UPDATE table1 SET field1 = Replace(field1, '|', '\"')";
cmd.ExecuteNonQuery();
換句話說,該Replace()
功能可能造成與舊的「噴氣機」 OLEDB驅動程序問題(或許更早版本的「ACE」驅動程序),但對於Access 2010的版本,這不再是一個問題。
是否有某個版本的VS需要運行Microsoft.Ace.OLEDB.12?如果沒有,那麼我可以在哪裏添加到我的項目? – 2016-03-07 18:47:11
沒有特定版本的Visual Studio是必需的,你不應該需要添加任何額外的引用到你的項目。只需使用'System.Data.OleDb'對象和一個包含'Provider = Microsoft.ACE.OLEDB.12.0'的連接字符串即可。 (並確保已安裝的Access數據庫引擎版本的「bitness」與您的應用程序的「bitness」匹配:64位或32位。) – 2016-03-07 19:30:15
我沒有看到Ace.OLEDB.12.0作爲選項導入我的班級。我將System.Data.OleDb導入到我的類中 – 2016-03-07 19:40:19
我很新的SQL查詢。 Iam困惑於找到在Jet中接受的替換函數的替代方案。任何幫助? – Rajdeep 2011-06-14 09:58:18
不,CASE不可用。 – 2011-06-15 22:57:01
@HansUp,感謝捕捉。編輯相應 – hawbsl 2012-05-30 08:50:40