標題:
[發問]
如何在SQL語法中引用REPLACE 取代雙引號呢?
[打印本頁]
作者:
dechiuan999
時間:
2011-6-21 07:18
標題:
如何在SQL語法中引用REPLACE 取代雙引號呢?
各位大大好:
小弟有一陣列轉換的問題,
一直百思不解。特請敎各位大大。
小弟是想直接利用Transpose轉置方式來逹成
陣列的轉換。但因資料庫內部份字串會在雙引號內。
如此,影響到TRANSPOSE陣列的轉換。
請問在SQL語法中如何引用REPLACE將
雙引號更改為單引號呢?
語法如下:
Sub AA()
Dim myCon As New ADODB.Connection
Dim myRst As New ADODB.Recordset
Dim myCnc As String
Dim myCmd As String
Dim myFileName As String
Dim s1%, s2%
Dim mPath$
Dim mData, mData1
Dim mSht As Worksheet
mPath = "D:\TEMP"
myFileName = "TEMP-A.xls" '測試檔
myCnc = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & mPath & "\" & myFileName & ";"
myCmd = "SELECT 編號,分類,名字,國文,數學,合計 FROM [F_Data01$]" '如何在此語法內引用REPLACE來取代編號、分類、名字內的雙引號呢?
myCon.Open "Provider=MSDASQL;" & myCnc
myRst.Open Source:=myCmd, ActiveConnection:=myCon
mData = myRst.GetRows 'A欄因部份字串有雙引號因而無法取出資料
s1 = UBound(mData, 1)
s2 = UBound(mData, 2)
Set mSht = Worksheets(1)
mData1 = Application.Transpose(mData) '無法轉置 執行階段錯誤13 ,型態不符合。
With mSht
.Range("a1").Resize(s2, s1) = mData1 '無法轉置 執行階段錯誤13 ,型態不符合。
End With
myRst.Close
myCon.Close
Set myRst = Nothing
Set myCon = Nothing
End Sub
備註:雙引號在字串內並非有一定規則
感恩各位大大!
作者:
luhpro
時間:
2011-6-23 00:42
回復
1#
dechiuan999
我不確定對 SQL 語法來說是否可行,
不過對於 ExcelVba 中的字串來說 " 是可以用 chr(34) 來代替的.
例如 :
要設定 Test$ 的內容為 abc"CD"se 時可用
Test = "abc" & chr(34) & "CD" & chr(34) & "se"
來指定
作者:
dechiuan999
時間:
2011-6-23 06:19
謝謝你的回覆。
小弟因資料庫為access資料庫,
無法直接在excel資料表內先行改變。
所以希望可在sql語法中對access資料庫內能將此雙引號
變更為單引號。如此可避免影響到陣列的轉換
。如果無法突破此問題時;
則又要去須改原始程式了。
感恩大大!
作者:
kimbal
時間:
2011-6-23 20:25
本帖最後由 kimbal 於 2011-6-23 20:28 編輯
ACCESS的話可以試試這樣,前8個雙引號, 後4個
SELECT
replace(編號,"""""""","""") ,
分類,名字,國文,數學,合計 FROM [F_Data01$]"
作者:
dechiuan999
時間:
2011-6-24 06:40
本帖最後由 dechiuan999 於 2011-6-24 07:04 編輯
謝謝版主大大。
小弟依版主大大的指示,
測試結果仍有Error出現。
其內容如下:
執行階段錯誤'-2147217900 (80040e14)'
運算式中未定義的'replace'函數
另小弟突然想到直接在access資料庫
先將員工資料表的姓名加雙引號之後
利用查詢及replace取消雙引號就可
取得正確資料。其語法如下:
SELECT 員工.記錄編號, 員工.員工編號, 員工.部門, 員工.職稱, Replace(員工.姓名,"""","") AS Expr1, 員工.性別
FROM 員工;
因此表示引用 replace 是可行的
感恩版主大大!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)