• ベストアンサー

Access 置換を更新クエリで組めませんか?

フィールドに「123万円」とあるのを、万円を除いた数字だけ(123)にしたいです。 置換しようとしたところ、1件ずつだとうまくいきますが、『すべて置換』を選択すると エラーがでます。件数が多いため、1件ずつ置換なんてしていられません。 更新クエリで置換することはできないのでしょうか?

  • dra96
  • お礼率49% (310/624)

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

質問内容のような更新なら UPDATE テーブル名 SET テーブル名.フィールド名 = Mid([フィールド名],1,InStr([フィールド名],"万")-1); これでも出来ます。 万の文字の位置を求めてその前までを切り出し左から数えて"万"の文字以降を切り捨てて更新します。 #4の方の=REPLACE(フィールド名, '万円', '')でも同じ様な結果です。 #3の方の=left([フィールド名],len([フィールド名])-2)を更新クエリに変更すれば UPDATE テーブル名 SET テーブル名.フィールド名 = left([フィールド名],len([フィールド名])-2) となります。この場合もし万円の後ろにスペースがあるとスペースも数えられてしまい桁ずれしますがスペース等無ければ同じ結果です。 メニューの編集にある置換ですが検索する文字列を 万円 置換後の文字列を何も入力せずブランクで 探す場所でフィールドを指定し検索の条件にフィールドの一部分で出来るはずですが・・出来ない場合はそのフィールド全部を指定するようにテーブルのフィールド名をクリックしフィールド全体を指定してやれば出来るはずです。

その他の回答 (4)

  • s___o
  • ベストアンサー率35% (108/306)
回答No.4

以下のSQL文で「万円」を削除できます。 UPDATE TEST SET AMT = REPLACE(AMT, '万円', ''); テーブル名:TEST フィールド名:AMT

noname#60992
noname#60992
回答No.3

=left([フィールド名],len([フィールド名])-2) のような形で書けば右2文字が削除されますが、 ためしに、選択クエリで実行してみて値が正しければ、更新に作り変えてください。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

#1のmshr1962です。 すみません。ひとつ漏らしてました。 Access2000以降の場合は、検索条件は「フィールドの1部分」にしてください。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

通常は「万円」を「」(ブランク)に置換で大丈夫なはずですが? もしかして「123万円」を「123」に置換してますでしょうか?

関連するQ&A

  • ACCESS【更新クエリの中断ができない】

    ACCESS初心者です。質問がわかりにくかったらすみません。 ACCESSの更新クエリで、レコードのカンマをスペースに置き換える式を作りました。 クエリを実行すると、 ”更新クエリを実行すると、テーブルのデータが更新されます” と、メッセージが表示され”はい”で次に進むと ”*件のレコードが更新されます。”と正確な件数が表示されます。 ただ、ここでやはり中断したいと思い、”いいえ”を選択しても、 レコードは更新されてしまいます。何故でしょうか?教えてください。 ______________________ フィールド:     型名 テーブル:      データ統合 レコードの更新:  Replace([型名],","," ") 抽出条件:     Like"*,*"

  • アクセスでの置換について(クエリ)

    アクセスでの置換について(クエリ) クエリを使って置換をしようと思うのですが、 うまく出来ません。 変更したい文字はHTMLなんですが </tbody></table><br><br> という文字を <br><br><table> に置換したいです。 ■まずは、アクセス初心者なので、 ちゃんと抽出できるか確かめるために、 選択クエリで抽出条件に In (</tbody></table><br><br>) といれましたが、エラーが出てしまいます。 どなたか、わかるかたいたら教えてください。 よろしくお願いします。

  • 更新クエリー

    ACCESS2000です。 Aというテーブル(レコード件数500件くらい)のValue1というフィールドをBというテーブル(レコード件数1件)のValue1というフィールドの値で全件更新したいのですが、どのようなSQLを書けばよいのでしょうか。 基本的なことだと思いますがよろしくお願いいたします。

  • Accessで複数(200件程)の置換

    Accessで一つのフィールドの文字を置換えたいです。 置換えるものが数件なら更新クエリで Replace(Replace([フィールド1],"あ","a"),"い","i") とネストすればいいだけだと思いますが、置換えたいものが200件程あり、置換元のレコードも17万件程あります。 どの方法が簡潔で負荷も少ないでしょうか? いろいろなサイトを見ましたが、結局どれがいいか分からずじまいです。 ベストな方法を教えて下さい。 よろしくお願いします。

  • Accessの更新クエリについて質問です。

    よろしくお願いします。 集計したクエリを元に更新クエリを実行すると、更新できません。 やりたい作業としては、売上データテーブルのレコード数を得意先ごとにカウントして、得意先マスタテーブルのレコード件数フィールドを更新する作業です。 追加クエリで一度テーブルに追加してから、テーブル同士で更新も考えたんですが、レコード数が多いためにDBのサイズが爆発的に増えて廃案になりました。 何か良い方法があれば教えてください。

  • ACCESSの更新クエリのエラー

    更新クエリを使い条件にあ合ったレコードの値を削除して空白にしたいと思います。 しかし抽出条件を入力し、レコードの更新に空白のまま実行すると「クエリには、出力フィールドがひとつ以上必要です」と言うエラーが出ます。 このような場合クエリではどう対処したらいいのでしょうか。 よろしくお願いします。

  • アクセス クエリ-について

    テーブルには、 フィールド1 ------------------ エクセルaaa aaaエクセルaaa aaaエクセル ------------------ というレコードが入っていて、 ------------------------------------------------------ UPDATE テーブル1 SET テーブル1.フィールド1 = "Excel" WHERE (((テーブル1.フィールド1) Like "*エクセル*")); ------------------------------------------------------ という更新クエリ作り、実行すると、テーブルのデータが フィールド1 ------------------ Excel Excel Excel ------------------ になってしまいます。 やりたい事は、 フィールド1 ------------------ Excelaaa aaaExcelaaa aaaExcel ------------------ にしたいのですが、更新クエリじゃ無理なのでしょうか? 手動でテーブルで検索ダイアログを開いてフィールドの一部分のみ置換するしかないのですか? 最終的には、 ------------------------------------------------------ Sub 更新クエリ() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim 置換前 As String Dim 置換後 As String Dim SQL As String cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source= " & CurrentProject.FullName rs.Open "T置換", cn, adOpenKeyset, adLockOptimistic For i = 1 To rs.RecordCount 置換前 = rs("置換前") 'エクセル 置換後 = rs("置換後") 'Excel SQL = "UPDATE テーブル1 SET テーブル1.フィールド1 = ""Excel"" WHERE (((テーブル1.フィールド1) Like ""*エクセル*""));" DoCmd.RunSQL SQL rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ------------------------------------------------------ のようにして、置換用テーブルのレコードを一つ一つ取得して、 テーブル1の値を置換していきたいのです。 何か対策があればご回答よろしくお願いします。

  • アクセスの更新クエリについて

    アクセスの更新クエリにおいて、各レコードで繰り返し同じ数を入力しなければならないフィールドが3つあります。その3つをパラメータを設定し、更新クエリを設定して実行しようとすると2つまではパラメータで聞いてくるのですが、1つだけ聞いてきません。アドバイス宜しくお願い致します。

  • 更新クエリのキー違反がどれだかを調べる方法は

    更新クエリのキー違反がどれだかを調べる方法はないですか? 「更新クエリですべてのレコードを更新できません。 0個のフィールド型変換エラー、2件のレコードでキー違反、 0件レコードでロック違反、0件レコードで入力規則違反が発生したためレコードを更新できませんでした」 となるのですが、 「2件のレコードでキー違反」がどれなのかって元テーブルをじっくり眺めて探すしかないのでしょうか? 手作業と目で探してるのですが、見つけられません・・・

  • アクセスのクエリで

    あるテーブルはエクセルからインポートしていますが、全てのフィールドが空白というレコードが多数存在します。 これをクエリで(他に方法があればどの様な方法でもよいです)全てのフィールドが空白のレコードは表示しない様にする事はできますか? これを更新クエリにして、新しく全て空白のフィールドのレコードが無いテーブルを新たに作ろうと考えています。 教えて下さい。よろしくお願いします。

専門家に質問してみよう