前提
Accessで氏名のフィールドに含まれている
カタカナの小文字を大文字に変えたいと思っております
リュ → リユ
ッ → ツ
など
https://asbepartners.com/strconv/
こちらのサイトを参考にしたのですがデータの変更がされません
実現したいこと
小文字から大文字への置換
発生している問題・エラーメッセージ
ローカルウィンドウ上の変数は希望した動作になっていますが データが置換されない状況です
該当のソースコード
VBA
1Public Function HanKanaConv() 2 3 On Error Resume Next 4 5 Dim motoString As String 6 Dim dbs As Database 7 Dim rst As Recordset 8 Dim i As Integer 9 Dim P As Integer 10 Dim C As String 11 Set dbs = CurrentDb 12 13 Set rst = dbs.OpenRecordset("テスト", dbOpenDynaset) 14 15 Set rst = rst.OpenRecordset 16 17 Const HanKanaS = "ァィゥェォャュョッ" 18 Const HanKanaL = "アイウエオヤユヨツ" 19 20 HanKanaConv = motoString 21 22 '件数カウント 0件以外で処理続行 23 If rst.EOF Then 24 rst.Close 25 Exit Function 26 Else 27 Do Until rst.EOF 28 motoString = rst!氏名カナ 29 For i = 1 To Len(motoString) 30 '取得した1文字を変数Cにセット 31 C = Mid(motoString, i, 1) 32 33 '変数Cが変換対象文字であれば変換対象文字列における文字位置を戻す 34 P = InStr(1, HanKanaS, C, vbBinaryCompare) 35 36 '変数Cが変換対象文字であれば変換後対象文字列の同じ位置の文字に置き換える 37 If P > 0 Then 38 Mid(motoString, i) = Mid(HanKanaL, P, 1) 39 rst!氏名カナ = motoString 40 rst.Update 41 End If 42 Next i 43 rst.MoveNext 44 Loop 45 46 rst.Close 47 Set rst = Nothing 48 Set dbs = Nothing 49 End If 50End Function
試したこと
Mid(motoString, i) = Mid(HanKanaL, P, 1)
この時点で変数motoStringは変換されているので一旦rst!氏名カナをクリアしようかとも思ったのですが
rst!氏名カナ = ""としてもクリアされないためそもそも構文が違うのではと
rst!氏名カナ = motoString
rst.Update
補足情報(FW/ツールのバージョンなど)
windows10
MS Access2016

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/12 08:16