ここから本文です

Accessの更新クエリで苦慮しています。 添付画像左のリストでコード欄の先頭から3...

tru********さん

2018/7/1317:44:45

Accessの更新クエリで苦慮しています。
添付画像左のリストでコード欄の先頭から3行目の"a"を"b"に置換させたいと考えています。

少数であればエクセルのreplace関数でできますが、
実際は何百万のリストを置換させないといけないので、Accessを使っています。

添付画像下の式で構文をクエリ>レコードの更新に記入して実行しましたが、”更新クエリですべてのレコードを更新できません”と表示され、変換できませんでした。
(9個のフィールドで型変換エラーと出ます。)

式:Replace([コード],3,1,"b")

※エクセル上でのreplace関数と同じ感覚で式を作りました。
(先頭から3列目の文字列を1文字"b"に変える)

リストをAccessにインポートするときの型はいずれも短いテキストでインポートしています。

解消方法についてご教示ください。

B&quot,Replace関数,A&quot,エクセル,更新クエリ,REPLACE,レコード

閲覧数:
62
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

bla********さん

2018/7/1319:29:53

・「型変換エラー」は、そのメッセージの通り、レコードの当該フィールド([コード])の「型」に変換できないレコードが含まれているので「エラー」になっているという意味です。
・つまり、変換しようとしたレコードに、「Replace([コード],3,1,"b")」を行おうとした際、「Replace([コード],3,1,"b")」で処理できない、[コード]フィールドを持つ、レコードが9レコード含まれているという意味です。

⇒[コード]列に空白(Null)のレコードが含まれているのではないかと推察いたします。
#フィールドの型宣言(テキスト)をしていても、「Nullを許さない」と定義していないのではないかと推察しました。

⇒[コード]列に「空白(Null)のレコード」がないかを確認してはいかがでしょうか。

参考になれば幸いです。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

m3_********さん

2018/7/1617:51:35

> 式:Replace([コード],3,1,"b")
>
> ※エクセル上でのreplace関数と同じ感覚で式を作りました。
> (先頭から3列目の文字列を1文字"b"に変える)

これが間違いの元です。

エクセルのワークシート関数の Replace と
VBA の Replace は 全然別物です。

Replace 関数
https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/article...


エラーメッセージに関しては、
「コード」に Null のものが存在する、ということでしょうから、
抽出条件に「Is Not Null」を設定して回避できます。
Null なら変換の必要はないですし。


で、クエリで使用できる VBA の関数では
ご希望の機能のものはありません(と思います)。

他の関数を組み合わせて実現する例です。

UPDATE Sheet1 SET コード = Left([コード],2) & "b" & Mid([コード],4)
WHERE Len([コード])>=3

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる