Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3216 / 9994 ←次へ | 前へ→

【10040】Re:フィールドのデータの一部を置き換えたいのですが教えてください
回答  小僧  - 07/11/30(金) 12:02 -

引用なし
パスワード
   ▼TAKE さん、VBWASURETA さん:
こんにちは。

まずワーク用のテーブルとして W_Temp1 を用意します。

Create Table W_Temp1(F1 Varchar(50) CONSTRAINT PKEY PRIMARY KEY)


後は下記を標準モジュールにでも書いて実行させてみて下さい。

Sub 半角だけ取り出す()
'要参照 Microsoft DAO x.x Object Library
Const T_Name = "テーブル名"
Const F_Name = "フィールド名"

Dim strSQL As String
Dim RS As DAO.Recordset

  strSQL = "DELETE FROM W_Temp1"
  CurrentDb.Execute strSQL, dbFailOnError

  Set RS = CurrentDb.OpenRecordset(T_Name, dbOpenSnapshot)
    Do Until RS.EOF
      If Len(RS(F_Name)) * 2 <> _
       LenB(StrConv(RS(F_Name), vbFromUnicode)) Then
        Call widthcheck(RS(F_Name))
      End If
    RS.MoveNext
  Loop
  RS.Close: Set RS = Nothing
  
  MsgBox "終了"

End Sub


Function widthcheck(strData As String)
Dim i As Long
Dim strWord As String
Dim FLG As Long

  For i = 1 To Len(strData)
    If LenB(StrConv(Mid(strData, i, 1), vbFromUnicode)) = 1 Then
      strWord = strWord & Mid(strData, i, 1)
    Else
      If strWord <> "" Then
        FLG = True
      End If
    End If
    
    If FLG Or i = Len(strData) Then
      CurrentDb.Execute "INSERT INTO W_Temp1(F1)" _
                & "VALUES('" & strWord & "');"
      strWord = ""
      FLG = False
    End If
  Next i

End Function


> Lenで文字数を算出しその文字数だけLoopして
> Midで一文字ずつ半角を&で追加して
> 全角がきたらテーブルに出力したいのです。

もう1点、全角がこなくても文字列が終了の場合は
テーブルへの追加条件になりますよね。


また既にテーブルへ登録されているかのチェック時間を省く為、
重複不可のインデックス(上記例では主キー)を張って
Execute メソッドでSQL を発行させています。

ご参考になれば幸いです。

856 hits

【9987】フィールドのデータの一部を置き換えたいのですが教えてください TAKE 07/11/16(金) 17:23 質問[未読]
【9988】Re:フィールドのデータの一部を置き換えたい... Gin_II 07/11/16(金) 17:32 回答[未読]
【9990】Re:フィールドのデータの一部を置き換えたい... TAKE 07/11/19(月) 9:35 質問[未読]
【9998】Re:フィールドのデータの一部を置き換えたい... 小僧 07/11/21(水) 10:08 回答[未読]
【10024】Re:フィールドのデータの一部を置き換えた... TAKE 07/11/29(木) 9:51 質問[未読]
【10026】Re:フィールドのデータの一部を置き換えた... 小僧 07/11/29(木) 14:12 発言[未読]
【10027】Re:フィールドのデータの一部を置き換えた... VBWASURETA 07/11/29(木) 15:18 発言[未読]
【10029】Re:フィールドのデータの一部を置き換えた... TAKE 07/11/29(木) 18:04 質問[未読]
【10030】Re:フィールドのデータの一部を置き換えた... VBWASURETA 07/11/29(木) 19:23 発言[未読]
【10033】Re:フィールドのデータの一部を置き換えた... 小僧 07/11/30(金) 9:34 発言[未読]
【10034】Re:フィールドのデータの一部を置き換えた... VBWASURETA 07/11/30(金) 9:46 発言[未読]
【10035】Re:フィールドのデータの一部を置き換えた... 小僧 07/11/30(金) 9:57 発言[未読]
【10036】Re:フィールドのデータの一部を置き換えた... VBWASURETA 07/11/30(金) 10:31 発言[未読]
【10037】Re:フィールドのデータの一部を置き換えた... TAKE 07/11/30(金) 10:47 質問[未読]
【10038】Re:フィールドのデータの一部を置き換えた... VBWASURETA 07/11/30(金) 11:24 回答[未読]
【10039】Re:フィールドのデータの一部を置き換えた... VBWASURETA 07/11/30(金) 11:46 発言[未読]
【10040】Re:フィールドのデータの一部を置き換えた... 小僧 07/11/30(金) 12:02 回答[未読]
【10054】Re:フィールドのデータの一部を置き換えた... TAKE 07/12/4(火) 13:49 お礼[未読]

3216 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free