Microsoft Access 掲示板

更新クエリでエラー / 6

12 コメント
views
6
名前なし 2025/07/15 (火) 17:52:58 73cf0@63c3a

sk様

的確なご指摘ありがとうございます。
確かに "-" が見つからなかった場合の扱いは設定されておらず、結果演算フィールドは空のままです。
私はこれがエラーと認識できていなかったのが現実です。
選択クエリでデータシートが表示されていたので、大丈夫なものと思い込んでいました。
ある特定のフォーマットの注文番号だけ処理できていればそれでよかったので、浅はかでした。

今回は大変勉強になりました。
全ての条件でデータを発生させることができない演算フィールドの扱いには注意したいと思います。
皆さま、ご回答ありがとうございました。

通報 ...
  • 8
    sk 2025/07/16 (水) 09:24:20 修正 88328@64ac3 >> 6

    確かに "-" が見つからなかった場合の扱いは設定されておらず、結果演算フィールドは空のままです。

    演算フィールド[発注番号]が Null を返している場合については問題ないはずです。

    IIf(Left([機種],1)<>"○",IIf(Left([注文番号],1)="B",Mid([注文番号],2,InStr(12,[注文番号],"-",0)-2),Left([注文番号],InStr(11,[注文番号],"-",0)-1)),[注文番号])

    hiroton さんと私が指摘しているのは、[発注番号]が以下のような結果を返しているレコードが
    [Q_手配内訳2]に 1 件以上含まれていないか、ということです。

    画像1

    • [機種]の値が "○" でも Null でもなく、かつ次に示すいずれかの条件に該当する。
    1. [注文番号]の値が Null である(結果、Left 関数の第 2 引数に Null が渡されてエラーが発生する)。

    2. [注文番号]の値の最初の 1 文字が "B" ではなく、かつ 11 文字目以降に "-" が含まれていない(結果、Left 関数の第 2 引数に -1 が渡されてエラーが発生する)。

    3. [注文番号]の値の最初の 1 文字が "B" であり、かつ 12 文字目以降に "-" が含まれていない(結果、Mid 関数の第 3 引数に -2 が渡されてエラーが発生する)。

    上記のケースに該当する場合に、エラー値が返されないように[発注番号]の式を組み直すか、[注文番号]の値を適切なものに書き換えるか、もしくは該当するレコード自体が[Q_手配内訳2]の結果に含まれないようになされば、[Q_手配内訳2]と[T_指定日インポート]を[発注番号]同士で結合できるようになるでしょう。