我想將< = 1000個字符的結果拆分爲大小爲255的數組,然後使用該字段更新數據庫中的字段。VBA +字符串拆分
VBA中的字符串最多支持255個字符,那麼我該怎麼做呢?
我正在使用MS-Access 2007作爲我的數據庫,要更新的字段類型是備忘錄,所以它可以存儲超過255個字符,我已經檢查了這一點。
這是我的查詢是什麼樣子
Coalsce(""SELECT (parentdesc & '/' & keyword) FROM All_Keywords_Mapping where item_id=" & rs1![item_id] & """, ""\;"")
Coalsce的是,我寫了一個函數,它,我得到這樣一個結果:
「ABC/123 \; BCD/123 \; Bcs/sdasdas \; Casad/sdads \; Fea/dasd adsad \; Fea/Zero \; Lo/somer-tet \;「
現在我正在將此結果更新到另一個表中的字段以及字段數據類型備註。當結果超過255個字符時,我得到一個更新查詢錯誤,所以我調試了它,現在檢查結果的長度是否只是更新,它工作得很好,但是當它超過時,我無法做任何事情。
我coalsce功能
Function Coalsce(strSql As String, strDelim As String, ParamArray NameList() As Variant)
Dim db As Database
Dim rs As DAO.Recordset
Dim strList As String
Set db = CurrentDb
If strSql <> "" Then
Set rs = db.OpenRecordset(strSql)
Do While Not rs.EOF
strList = strList & rs.Fields(0) & strDelim
rs.MoveNext
Loop
strList = Mid(strList, Len(strDelim))
Else
strList = Join(NameList, strDelim)
End If
Coalsce = strList
End Function
我查詢
strSql = Select DISTINCT " & rs1![item_id] & " as item_id, FindReplace(Coalsce(""SELECT (desc & '/' & kw) FROM AKM where item_id=" & rs1![item_id] & """, ""\;""), ""/"", ""\/"") as res
Set rs2 = db.OpenRecordset(strSql, dbOpenDynaset)
DoCmd.RunSQL ("Update data_Query set res=" & rs2.Fields("res").Value)
你想把字符串放在文本字段中嗎?字符串變量不應該是問題,除非您將其聲明爲另一種類型。 – JeffO 2011-04-27 13:22:38
請發佈提供錯誤的代碼段以及任何聲明('Dim'語句)。正如已經指出的那樣,'String'變量不限於255個字符。 – 2011-04-27 15:42:28
這不是「發佈你的代碼」,因爲你沒有向任何Coalsce(?Coalesce?)顯示任何變量聲明或代碼。當你不會告訴我們你在做什麼時,我們怎麼能說出你做錯了什麼? (你還沒有顯示你正在嘗試使用的更新聲明。) – 2011-04-27 15:53:10