- ベストアンサー
ACCESS更新クエリで型変換エラー
ACCESSで更新クエリを作成して実行したら 「…個のフィールドで型変換エラーが発生したためレコードを更新できませんでした。」 となってしまいます。 「医薬品コード(-)」というフィールドに「医薬品コード」フィールドの文字から( )で囲まれた部分を省いた文字を更新するクエリを作りたいのです。 更新クエリのレコードの更新セルに入力しているのは Left([医薬品コード],InStr([医薬品コード],"(")-1) です。 更新するフィールドの設定は 値要求:いいえ、空文字列の許可:はい、インデックス:いいえ、Unicode圧縮:いいえ 型変換エラーの原因はなんでしょうか?
- みんなの回答 (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桁で元の文字長さの指定となります。
その他の回答 (1)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
括弧がないデータ(and/orブランクのデータ)があるんじゃないかな? だとすると、抽出条件を InStr([医薬品コード],"(")<>0 とすることで解決できるかな?
お礼
そのとおりでした!知識不足でお恥ずかしいです。ありがとうございました!
お礼
大変わかりやすく、しかも迅速な回答で驚きました! ありがとうございました。うまくできました。