いい記事を見つけたので共有します
文字置換用のリストがあって
例えば
φ→ファイとか
×(かける)→xとか
変換元と置換後がリストになっています
ある部品帳で品番項目を全体置換したい場合
リストが少ない場合は手動で良いのですが
数十行あるとか毎回やるとか萎えてきます
https://hatenachips.blog.fc2.com/blog-entry-331.html
決め手は直積クエリです
2つのテーブルの行数×行数分に展開されます
頭いいなぁ
最初は置換リストの値の分だけ繰り返しSQLを発行してみましたが
遅かったです
Function ReplaceWordList()
Dim fldName() As String
Dim i As Integer
Dim rstD As Recordset
‘ Set rstS = CurrentDb.OpenRecordset(“select * from M02文字置換マスタ order by 置換元 desc”)
‘ Do
‘ currentdb.excute (“update T02変換後リスト set 図番 = (replace(nz([図番]),'” & rstS![置換元] & “‘,'” & rstS![置換後] & “‘)), ” & _
‘ ” 名称 = (replace(nz([名称]),'” & rstS![置換元] & “‘,'” & rstS![置換後] & “‘)), ” & _
‘ ” 材質 = (replace(nz([材質]),'” & rstS![置換元] & “‘,'” & rstS![置換後] & “‘)), ” & _
‘ ” 備考 = (replace(nz([備考]),'” & rstS![置換元] & “‘,'” & rstS![置換後] & “‘)); “)
‘ rstS.MoveNext
‘ Loop Until rstS.EOF かなり遅い
‘ Set rstS = Nothing
fldName = Split(“図番,名称,材質,備考”, “,”)
For i = 0 To UBound(fldName)
CurrentDb.Execute (“UPDATE M02文字置換マスタ, T02変換後リスト SET T02変換後リスト.” & fldName(i) & ” = Replace([” & fldName(i) & “],[置換元],[置換後]) ” & _
“WHERE (((T02変換後リスト.” & fldName(i) & “) Like ‘*’ & [置換元] & ‘*’));”)
Next i
End Function
かなり早くなりました
置換 リスト 複数 一括 ACCESS