プロが教える店舗&オフィスのセキュリティ対策術

ACCESSで更新クエリを作成して実行したら
「…個のフィールドで型変換エラーが発生したためレコードを更新できませんでした。」
となってしまいます。

「医薬品コード(-)」というフィールドに「医薬品コード」フィールドの文字から( )で囲まれた部分を省いた文字を更新するクエリを作りたいのです。
更新クエリのレコードの更新セルに入力しているのは

Left([医薬品コード],InStr([医薬品コード],"(")-1)

です。

更新するフィールドの設定は
値要求:いいえ、空文字列の許可:はい、インデックス:いいえ、Unicode圧縮:いいえ

型変換エラーの原因はなんでしょうか?

A 回答 (2件)

"("が見つからなかった場合と元がNullの場合の対処が抜けてます。



[医薬品コード]フィールドに"("がない場合、InStr関数はFalse(0)を返します。
Left([医薬品コード],InStr([医薬品コード],"(")-1)

Left([医薬品コード],0-1)
となりLeft関数で長さ-1はエラーとなります。

[医薬品コード]フィールドがNullの場合、InStr関数はNullを返します。
Left([医薬品コード],InStr([医薬品コード],"(")-1)

Left(Null,Null-1)
となりNull-1が型変換エラーとなります。

Left([医薬品コード],InStr([医薬品コード] & "(","(")-1)
とすればいいと思います。
そうすれば最後尾に追加した"("は文字長さ+1桁-1桁で元の文字長さの指定となります。
    • good
    • 1
この回答へのお礼

大変わかりやすく、しかも迅速な回答で驚きました!
ありがとうございました。うまくできました。

お礼日時:2011/07/12 13:27

括弧がないデータ(and/orブランクのデータ)があるんじゃないかな?


だとすると、抽出条件を
InStr([医薬品コード],"(")<>0
とすることで解決できるかな?
    • good
    • 1
この回答へのお礼

そのとおりでした!知識不足でお恥ずかしいです。ありがとうございました!

お礼日時:2011/07/12 13:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A