• 締切済み

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

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

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

以下のような内容のモジュールを作成して、 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

  • yaasan
  • ベストアンサー率22% (2710/12228)
回答No.2

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

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

変換の方法はいくらでもありますが、その前に一つ確認。 変換するデータは、  フィールドAにある"ABC"ってデータを、"1000"に変換でOKなのでしょうか?  それとも、フィールドAにある、"ABC-BBD"の"ABC"を、"1000"に変換なのでしょうか?  前者なら、テーブル毎に UPDATE テーブル名 SET テーブル名.フィールドA = '1000' を実行すれば変換出来ます。後者は、書くのが面倒なので割愛。後者の場合には、補足下さいね(^^;

katukoyo
質問者

補足

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

関連するQ&A

  • Access(アクセス)での文字列の置換について

    商品データベースをCSVでダウンロードし、一括で変更しようとしています。 Excelでは1つのセルに911文字以上のテキストが入っていると置換ができないようなんですが、アクセスではどうなのでしょう。 ちなみに、置換したいフィールドにはhtmlが入っていて、1000文字を超すフィールドもたくさんあります。 また、Excelはバージョンによって、ダブルクォーテーションを含むCSVデータ(htmlなど)は上手く1フィールドとして認識できないようです。アクセスもそのような不具合があるのかも教えていただきたいです。 よろしくお願いします。

  • テーブルを使った置換

    Access2002 Accessでクエリ実行時に特定の文字列を置換したいと思っています。 今までは置換する文字列が1つだけだったので、replace関数を使って直接置換する文字列を書いていたのですが、置換する文字列が今後増えてきそうなのでテーブルで管理したいと思っています。 置換用テーブル 元 ,置換後 000022,002078 000218,002403 000447,002703 クエリは単純な選択クエリなのですが、上記のようなテーブルを使ってクエリ実行時に文字を置換する方法がわかりません。 よろしくお願いします。

  • 文字列の置換について

    MySQLデータベース内の文字列を、別の文字列に書き換えたいんです。 例えば、文字列"http://www.xxx.com" を文字列"http://www.yyy.com"に書き換えます。 SQL文で操作して、一気にデータベースの各テーブルに入った大量の文字列を全部置換させたいんです、そのSQL文どういうふうに書きますか? ご存じの方がいっらしゃいましたら、どうぞお教え下さい。

    • ベストアンサー
    • MySQL
  • AccessのデータをVBを使って置換する

    (1)VisualBasic6.0を用いて、Access2000のデータベースに接続します。 (2)データベースの中のテーブル(テーブル名:T-カレンダー)にあるフィールド(フィールド名:コード)に保存されているデータの一部分を置換したい。(⇒途中のアルファベットを変更したい。)(例;置換前:123FFF789 置換後:123III789)  テーブルを直接開いて、フィールドにカーソルをあわせて、”編集メニュー”の『検索と置換』から行っても出来るのですが、Accessを触らないでVBから作ったフォームから変更(置換)をさせたい。  ◇フォームに2つテキストボックスを作って、「検索する文字列」と「置換後の文字列」を入力し、『変換』ボタンを押したら、データが置換される、という流れ。   一回きりの置換でなくて、何回でも同じフィールド内のデータを置換したい。   SQLのREPLACE関数を用いて出来るかな、とは思っているのですが、どのように作成すればよろしいのでしょうか。  また他のやり方でシンプルな方法があればお教えください。

  • PHPソースファイルの文字列置換をしてから、

    PHPソースファイルの文字列置換をしてから、 そのスクリプトを実行する方法を実行しようとしている のですが、うまくいきません。 似たような質問(http://oshiete.nikkeibp.co.jp/qa5496696.html) を参考にして、文字列置換自体はうまくいったのですが、 phpファイル実行時にまったく関係の無いはずの DBアクセスでエラーが発生してしまいました。 変換前前のphpファイルに置換後の文字列を手で入れて、 データベース実行するとうまくいきます。 しかしながら、phpファイルの文字列置換をstr_replaceで実行し、別名保存した後 includeしても、うまくいかないといった状況です。 ちなみに置換後のphpファイル内で $置換後文字列 = "test"; echo $置換前文字列; とすると、置換前文字列が置換後文字列に きちんと変わっているようで、 "test"と出力されます。 もしかすると、原因は違う所に潜んでいるのかもしれませんが、 どこを調べれば良いのか検討がつかず困っております。 どなたか解決手段の分かる方がいらっしゃれば教えて頂けませんでしょうか? -------------------------------------------------------------- 尚、ファイル構成は top |-change (1.php) |-database (2.php) |-search (検索画面[データベース検索の入り口。form action ="./3.php"],3.php) |-base (4.php,5.php[tempファイル]) となっており、 それぞれの中身は 1.文字列置換実行用のphpファイル(1.php):  1-1.file_get_contentsで4のphpファイルを取得  1-2.str_replaceを用いて文字列置換  1-3.文字列置換したファイルをfwriteで4.phpと同じディレクトリに保存(5.php)  1-4.5.phpをincludeする。  1-5.5.phpをunlinkする。 2.データベースアクセス(mysql)用関数を含むphpファイル(2.php):  ↓エラーの原因と思われる関数  function connect() { global $host,$user_id,$passwd,$con; $con = mysql_connect($host,$user_id,$passwd); } 置換前phpファイルを手動で文字列置換した場合には  同ファイル内で設定したglobal変数の値がきちんと格納されており、  データベース実行がうまくいきます。  置換後phpファイルでは$host等に値が格納されていないため、  データベース実行がうまくいきません。  グローバル変数の中身は同ファイル内で定義しています。 3.検索を実行した時に呼び出されるphpファイル(3.php):  3-1.include("../change/1.php"); 3-2.1.phpの関数の実行 4.文字列置換前のphpファイル(4.php): /*呼び出し元のディレクトリ位置でないとincludeに失敗する*/ 4-1.include("../database/2.php");  4-2.2.phpのデータベースアクセス関数を実行する。 5.文字列置換後のphpファイル(5.php): 3-2の1.php関数の実行により、一時的に生成される。

    • ベストアンサー
    • PHP
  • [Linux] ubuntuでコマンド中の文字列を置換して実行する。

    bashを利用しております。 #mv /abc /abc0 && mv /abc2 /abc 上記コマンドを実行した後、abcという文字列をxyzに置換 (内容的には#mv /xyz /xyz0 && mv /xyz2 /xyzと同一)し、 コマンドを手動で実行する方法を探しています。 ヒストリ置換を用いて 「直前に実行したコマンドのabcという文字列をxyzという文字列に置換して実行する」 にはどのようにすればいいのでしょうか? また、もっといい方法がございましたら、 教えていただけますでしょうか? よろしくお願いいたします。

  • 長い文字列の置換を出来るエディタを教えてください。

    数式Texのコマンドなんですが、1000文字の文字列を1500文字の文字列に置換しようとしたところ、255バイト以上のデータはきられてしまい、正常に置換できませんでした。 秀丸、Wordのソフトウェアや複数行置換のフリーウェアを探したのですが、正常に置換できませんでした。 このように1000文字を1500文字への置換等、長い文字列を置換できるソフトウェアがあれば教えてください。

  • 文字列一括置換ソフトを探してます

    文字列一括置換ソフトを探してます・・・って書くと、Vectorに行けばいっぱいあると言われそうですが、ちょっと条件が特殊です。 ・複数(多分500~1000個)のテキストファイルの指定文字列を一括置換したい(ここまでは普通) ・対象の文字列の置換パターンが3万件(苦笑) ワイルドカードなどではなく、3万の単語を別の3万の単語に置換したいのです。 (プログラムの変数を、ネーミングルールを変えたために総入れ替えする・・・と考えて頂ければ分かっていただけるでしょうか) 10件くらいのパターンを連続して置換するソフトは見つかったのですが、3万件となると・・・。 (そもそも3万件のリストをよく作ったもんだ) UNIXにsedというコマンドがあるというのは聞いたことがあるのですが、Windows(&DOS)しか触ったことがないので、どうすれば良いのか分かりません(私はプログラマじゃありません)。 なお、同じネタでエクセルのワークシートのセルを置換する必要があるのですが、こちらは自作マクロで対応しています。 もし適当なソフトが見つからなければ、エクセルマクロの作成を検討しています。 (マクロでテキストファイルの読み込みはやったことがあるのですが、書き出しは多分やったことがない) 置換リストはエクセルで作成しているので、リストはソフトに応じた形式で準備できると思います。 以上、よろしくお願いいたします。

  • テキスト置換ソフトで、特定の文字列が●個出てくるごとに置換できるもの知りませんか?

    以下のような機能をもつ テキストファイルの置換ソフトを探しています。 特定の文字列が●個出てくるごとに、 その●個目の部分だけを置換する機能です。 たとえば、 abc abc abc abc abc abc abc abc という文字列があるとして、 手動ではなく一括で以下のように置換をしたいのです。 abc ABC abc ABC abc ABC abc ABC この例では、abcが2つ登場するごとに、ABCという文字列に置換されていますね。このように特定の文字列(この例ではabc)が●個出てくるごとに、その●個目の部分だけを置換するというような機能を持つ(できれば)フリーソフトなどをご紹介いただければありがたいです。 秀丸エディタなどのテキストエディタでは、おそらくできないと思うのですが、もしできるのであれば、そのやり方を教えていただいても構いません。 よろしくお願いいたします。

  • 【Access】文字の置換の方法???

    Accessのテーブルに入力したメールアドレスのデータの一部の文字だけを「置換」の方法を使って変更したいのですが、ワイルドカードの使い方がよくわかりません。 たとえば… 「aaaaaa@t.vodafone.ne.jp」「bbbbb@t.vodafone.ne.jp」「ccccc@t.vodafone.ne.jp」などのデータの@より前の文字列はそのままで「@t.vodafone.ne.jp」だけを「@docomo.ne.jp」に一度に変更したいのです。 置換のダイアログボックスの「検索する文字列」と「置換後の文字列」に入力する文字列を教えて下さい。

専門家に質問してみよう