質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

受付中

Access SQL IIfが長すぎて更新、テーブル作成ができない

nyk.
nyk.

総合スコア3

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

2回答

0評価

0クリップ

158閲覧

投稿2022/05/07 03:55

編集2022/05/12 16:19

すいません、初心者な為記述がわかりにくかったら申し訳ありません。

複数ある管理番号の内、一番最後のカラムに入力された管理番号を「最終管理番号」に取得したいです。

【抽出結果】

開始日ロット番号最終管理番号管理番号①管理番号②管理番号③管理番号④管理番号⑤
2022/04/25 12:40:006017410000160290020001473300100016029002
2022/04/26 12:00:0060159100001471700300014717003
2022/04/27 21:30:00600311000016459004000156680020001566800100016459004
2022/04/28 8:00:005344770C2116347017C2116347017
2022/04/28 14:50:005683670C2200123060C2200064066C2200123060
2022/04/28 10:30:00585689020220427002202204150192022042700120220427002

上記の「抽出結果」の内、最終的には「開始日」「ロット番号」「最終管理番号」のみのテーブルを作成(例:T00_test)し、別のテーブルとのクエリに利用したく考えています。

そこで
①以前作っていたテーブル(例:T00_test)の中身を削除、
②更新クエリにて新たに取得した内容(上記結果の内、「開始日」を「2022/04/28」のみに条件付けした上で)を反映
しようと考えました。

ところが「更新クエリ」を実行した所で画像のようなエラーが出ました。
(IIf(IsNull([t10_0361],~が見つかりません。パラメータや別名が正しいこと、無効な文字や区切り記号が含まれていないこと、また名前が長すぎないことを確認して下さい)
イメージ説明

※参考として、そのときの「SQLビュー」での文を載せておきます。
【SQL文】

SELECT     t10_seijs1.t10_0310 AS 開始日     , t10_seijs1.t10_0170 AS ロット番号     , IIf(IsNull([t10_0361]),[t10_0360]       ,IIf(IsNull([t10_0362]),[t10_0361]         ,IIf(IsNull([t10_0363]),[t10_0362]           ,IIf(IsNull([t10_0364]),[t10_0363],[t10_0364])))) AS 最終管理番号     , t10_seijs1.t10_0360 AS 管理番号①     , t10_seijs1.t10_0361 AS 管理番号②     , t10_seijs1.t10_0362 AS 管理番号③     , t10_seijs1.t10_0363 AS 管理番号④     , t10_seijs1.t10_0364 AS 管理番号⑤ FROM    t10_seijs1 WHERE     (((t10_seijs1.t10_0310) Like "2022/04/28*")) ORDER BY     t10_seijs1.t10_0170;

おそらく「IIF」の使い方が悪いのだろうとは思いますが、
どうにもならなくなってしまいました。
みなさまのお知恵を拝借させてください。よろしくお願い致します。

※追記
みなさま連絡ありがとうございます。
参考にしながら以下のSQLを作りました。

【SQL文】

INSERT INTO M00_枝番判定前準備_最終管理番号 ( t10_0310, t10_0170, 最終管理番号 ) SELECT t10_seijs1.t10_0310   , t10_seijs1.t10_0170   , Switch(IsNull([t10_0361]),[t10_0360]       ,IsNull([t10_0362]),[t10_0361]       ,IsNull([t10_0363]),[t10_0362]       ,IsNull([t10_0364]),[t10_0363]       ,True,[t10_0364]) AS 式1 FROM    t10_seijs1;

実行した所、「最終管理番号」カラムが空のままで、他のカラムは抽出できました。
イメージ説明

ただ実行する前に「データシートビュー」を使用すると「最終管理番号」も表示されます。
イメージ説明

何故こうなるのか調べてみたのですが、これといったサイトが見つけられませんでした。

もし可能であれば、修正方法を教えていただけたら幸いです。

※M00_枝番判定前準備_最終管理番号

t10_0310t10_0170最終管理番号
日付/時刻型短いテキスト(フィールドサイズ7)短いテキスト(フィールドサイズ255)

※t10_seijs1

t10_0310t10_0170t10_0360t10_0361t10_0362t10_0363t10_0364
日付/時刻型短いテキスト(フィールドサイズ7)短いテキスト(フィールドサイズ11)短いテキスト(フィールドサイズ11)短いテキスト(フィールドサイズ11)短いテキスト(フィールドサイズ11)短いテキスト(フィールドサイズ11)

※※t10_seijs1のデータ自体は件数がたくさんあるのでサンプルをどのように出せばいいのか分かりません。
例えば、最初の【抽出結果】の表のデータが近いかと思います。

申し訳ないのですが、よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。