-PR-
締切済み

アクセスDBファイルの複数テーブルの文字列を簡単に置換するには?

  • 困ってます
  • 質問No.10013
  • 閲覧数510
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 0% (0/11)

アクセスのデータベースファイル内30テーブルほどの
データがあります。
そのデータ内にあるひとつの文字(例えばABC)という
文字列があり,それを別の文字列(例:1000)に一括して
置き換えたいのですが,今のところ,一つ一つテーブルを
開いて置換コマンドを使って文字列を入力しています。
しかし、データベース内にあるABCと言う変数は計算に
使用するためその都度変更する必要があるため、とても面倒に感じています。
アクセスだけでこの作業はできるのでしょうか。
もし、できなければ外部プログラムでなにか良いものが
あるでしょうか。ご教授ください。
よろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 33% (427/1283)

変換の方法はいくらでもありますが、その前に一つ確認。
変換するデータは、
 フィールドAにある"ABC"ってデータを、"1000"に変換でOKなのでしょうか?
 それとも、フィールドAにある、"ABC-BBD"の"ABC"を、"1000"に変換なのでしょうか?

 前者なら、テーブル毎に
UPDATE テーブル名 SET テーブル名.フィールドA = '1000'
を実行すれば変換出来ます。後者は、書くのが面倒なので割愛。後者の場合には、補足下さいね(^^;
補足コメント
katukoyo

お礼率 0% (0/11)

皆さん,早速の回答,有り難うございました。
説明不足だったのですが、
"ABC-BBD"の"ABC"を、"1000"に変換する
ということをしたかったのです。
すいませんでした。
投稿日時 - 2000-10-06 08:53:06


  • 回答No.2
レベル14

ベストアンサー率 17% (759/4255)

mnabeさんと重なるところがありますが、変換するデータが
"ABC"という文字列を"1000"という文字列に変換するので
あれば、クエリーの中にある更新クエリーで抽出条件を
"ABC"にして、レコードの更新を"1000"にすると一度に
変換できます。それをテーブルごとに作成しマクロで順番
にクエリーを動かしていけば、初めに作成するときは時間
がかかりますが、二度目からはマクロ一つ動かすだけで
できますよ。

 また、文字列"ABC-BBD"の中の"ABC"を"1000"に変換して
"1000-BBD"にしたい場合はmnabeさん同様に補足をください。
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

以下のような内容のモジュールを作成して、
ReplaceField をマクロなどに登録して実行してください。

どうやってマクロに登録するの?とか
やってみたけど動かない… とかがあれば、補足をお願いします。



Public Function ReplaceField()
  'TODO:置換するテーブル名、置換するフィールド名を適当に書き換えてください。
  Dim FndStr As String
  Dim RepStr As String
  FndStr = InputBox("検索する文字列を入力して下さい")
  RepStr = InputBox("置換後の文字列を入力して下さい")
  Call ReplaceFieldSub("置換するテーブル名1", "置換するフィールド名", FndStr, RepStr)
  Call ReplaceFieldSub("置換するテーブル名2", "置換するフィールド名", FndStr, RepStr)
  Call ReplaceFieldSub("置換するテーブル名3", "置換するフィールド名", FndStr, RepStr)
  Call ReplaceFieldSub("置換するテーブル名4", "置換するフィールド名", FndStr, RepStr)
  Call ReplaceFieldSub("置換するテーブル名5", "置換するフィールド名", FndStr, RepStr)
End Function

Private Function ReplaceFieldSub(TableName As String, FieldName As String, FndStr As String, RepStr As String) As Long
  Dim SQL As String
  SQL = "UPDATE " & TableName _
    & " SET " & FieldName & " = ReplaceStr([" & FieldName & "],'" & FndStr & "','" & RepStr & "');"
  CurrentDb.Execute SQL
End Function

Public Function ReplaceStr(ByRef SrcString As Variant, FndStr As String, RepStr As String) As String
  Dim StrPos As Long, SrcStart As Long
  Dim RepLen As Long, FndLen As Long, SrcLen As Long, DiffLen As Long
  ReplaceStr = CStr(Nz(SrcString, ""))
  SrcStart = 1
  RepLen = Len(RepStr): FndLen = Len(FndStr): DiffLen = RepLen - FndLen
  FndLen = FndLen - 1: SrcLen = Len(ReplaceStr)
  Do
    StrPos = InStr(SrcStart, ReplaceStr, FndStr, vbBinaryCompare)
    If StrPos = 0 Then Exit Do
    ReplaceStr = Left$(ReplaceStr, StrPos - 1) & RepStr _
    & Right$(ReplaceStr, SrcLen - StrPos - FndLen)
    SrcLen = SrcLen + DiffLen: SrcStart = StrPos + RepLen
  Loop
End Function
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ