台灣最大程式設計社群網站
線上人數
1131
 
會員總數:246209
討論主題:189782
歡迎您免費加入會員
討論區列表 >> ASP >> MDB 資料庫中有特定文字的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
MDB 資料庫中有特定文字的問題
價值 : 300 QP  點閱數:1214 回應數:6
樓主

阿弟
初學者
107 58
1607 152
發送站內信

Access MDB 資料庫 ( PROFILE 資料表 )
欄位名稱   P_NAME
資料類型   文字
索引     是(可重複)
Unicode編碼 是
------------------------------------------------------------
ASP網頁編碼為 ~~
<% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
......
該欄位中只要存入日文的【バ】這個特定字~~
假設存入的字串是【ABCバ】好了...當SQL指令~
select * from PROFILE where P_NAME like '%AB%'
就會出現錯誤訊息~
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e07'
[Microsoft][ODBC Microsoft Access Driver] 記憶體不足
.
.
煩請個位先進們 不吝指教 ~~

搜尋相關Tags的文章: [ 記憶體不足 ] ,
本篇文章發表於2014-04-11 22:33
1樓
不錯的參考

風燭殘年
捐贈 VP 給 風燭殘年 檢舉此回應
試著使用 parameter 應該就可以避免該問題.

sql = "select * from PROFILE where P_NAME like '%' + ? + '%'"
set cmd = server.createobject("ADODB.Command")
cmd.activeconnection = yourConnection
cmd.commandText = SQL
cmd.Parameters.Append( cmd.CreateParameter("P_NAME", adVarWChar, , 512, "ABCバ") )

參考網頁
ADO CreateParameter Method
Append and CreateParameter Methods Example
本篇文章回覆於2014-04-11 23:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿弟
檢舉此回應
糟糕~ 弟子愚昧、有看沒有懂ㄋㄟ~~
我的網頁並不是ASP.NET...適用嗎?
---------------------------------------------------------
真正的Code是這樣的~
.
strDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("../database/standard.mdb")
Set objDBConn = Server.CreateObject("ADODB.Connection")
objDBConn.Open strDSN
strSQL = "select * from PROFILE where P_NAME like '%" & Request.QueryString("SP_CODE") & "%' order by ID"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objDBConn, adOpenStatic, adLockReadOnly, adCmdText
.
請教要如何套用到您所謂的 parameter 呢?
.
有其它比較簡單的方法嗎? 煩請個位先進們 再次不吝指教 ~~
本篇文章回覆於2014-04-11 23:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

風燭殘年
捐贈 VP 給 風燭殘年 檢舉此回應
strDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("../database/standard.mdb")
Set objDBConn = Server.CreateObject("ADODB.Connection")
objDBConn.Open strDSN
set objCMD = server.createobject("ADODB.Command")
objCMD.activeconnection = objDBConn
objCMD.commandText = "select * from PROFILE where P_NAME like '%' + ? + '%' order by ID"
objCMD.CommandType = adCmdText
objCMD.parameters.append(objCMD.createParameter("P_NAME", adVarWChar, adParamInput, 255, Request.QueryString("SP_CODE")))
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open objCMD 或 objRS = objCMD.execute()

試試這樣吧...很久沒寫了有點忘了..
ASP.NET 的話就不會再用 Recordset 了, 會使用 DataReader 讀取或是轉入 DataSet/DataTable 再來處理.
本篇文章回覆於2014-04-12 02:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

香帥
檢舉此回應
可用以下方式替代解決

測試網址在
http://ap.a168a.com/blueshop/ado/select2c.asp
執行結果如下圖
本篇文章回覆於2014-04-12 11:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

阿弟
檢舉此回應
整個運用及測試網址在這兒 ...
http://www.blowmoldingmachine.com.tw/Test/ProReport.asp

整個檔案在 ...
http://www.blowmoldingmachine.com.tw/Test/Test.rar

---------------------------------------------------------------------------
行之有年的功能~
只要欄位中有個日文的【バ】這個特定字~ 就掛了~
select * from PROFILE where P_NAME like '%B%'
再也平凡不過的 select ... 怎麼會遇到特定字就瓦解了呢??

煩請個位先進們 再次不吝指教 ~~
本篇文章回覆於2014-04-12 23:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

香帥
檢舉此回應
請參考小鋪早期的討論去試看看各種解法
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20050520162923OLB
本篇文章回覆於2014-04-13 01:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.