次の方法で共有

Accessでテーブルの指定ID範囲のみデータを確認・更新したい!

Anonymous
2019-09-01T13:25:02+00:00

Accessでテーブルの指定ID範囲のみデータを確認・更新したい!

Access2013で製造番号で出荷管理を行います。

テーブルは主に下記が対象です。

T製造番号

(予め製造台数が決まっているので 製造台数分の製造番号は入力済み。

出荷種別 出荷ID 出荷日 出荷先は最初は空欄です。)

製造番号(短いテキスト 5桁)

出荷種別(空欄or出荷or返品)

出荷ID(短いテキスト 5桁)

出荷日

出荷先

T出荷履歴

出荷ID(短いテキスト 5桁)

開始製造番号(短いテキスト 5桁)

終了製造番号(短いテキスト 5桁)

台数

出荷種別(出荷 返品)

出荷日

出荷先

クエリは 選択クエリはQ製造番号 Q出荷履歴、更新クエリはQ製造番号更新 を作成しました。

フォームでQ出荷履歴へ入力を行います。

複数台を同じ出荷先に出荷する為

開始製造番号(例 00001)

終了製造番号(例 00050)

台数(例 50台 開始終了製造番号から計算・自動入力)

出荷処理種類(出荷or返品 を入力)

出荷日 (例 2019/08/31)

出荷先 (例 A社)

この時 「開始製造番号」が出荷済みかは T製造番号の「出荷種別」で確認出来ます。

下記2項目の処理で悩んでいます。

【質問その1 指定範囲の出荷種別確認】

「終了製造番号」更新後に、「開始~終了」までの指定範囲に「空欄・出荷・返品」のいずれかが入力されているか確認し、「出荷」が入力されていれば「〇〇番が出荷済みです」でフォームへ戻る。「空欄or返品」ならばそのまま入力を進める。

【質問その2 指定範囲の製造番号全てに出荷履歴内容を書き込む】

Q出荷履歴の内容を入力後に「保存」をクリックでQ出荷履歴レコードを保存。

同時にQ製造番号更新を使用し 指定範囲の製造番号全てに「出荷種別 出荷ID 出荷先 出荷日」を書き込みたい。

多分 選択クエリや更新クエリの「製造番号」の抽出範囲(?)を動的に変更できれば良いのでは?と思われますが、どうしたら良いかわかりません。

上記各々VBAで処理したいと思っております。

ご教授くださいます様、お願い致します。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2019-09-03T08:44:59+00:00

> 出荷種別(空欄or出荷or返品)

> 出荷種別(出荷 返品)

> 出荷処理種類(出荷or返品 を入力)

> この時 「開始製造番号」が出荷済みかは T製造番号の「出荷種別」で確認出来ます。

[T製造番号]及び[T出荷履歴]の[出荷種別]のデータ型は何なのでしょうか。

> 選択クエリはQ製造番号 Q出荷履歴

> フォームでQ出荷履歴へ入力を行います。

[Q製造番号]が[T製造番号]を元に作成された選択クエリ、

[Q出荷履歴]が[T出荷履歴]を元に作成された選択クエリであると

仮定して、これらの選択クエリを作成された目的は何なのでしょうか。

(何か特別な理由があるわけではないなら、その連結フォームの

レコードソースは[T出荷履歴]でもよいはず)

> 【質問その1 指定範囲の出荷種別確認】

> 「終了製造番号」更新後に、「開始~終了」までの指定範囲に

> 「空欄・出荷・返品」のいずれかが入力されているか確認し、

> 「出荷」が入力されていれば「〇〇番が出荷済みです」でフォームへ戻る。

> 「空欄or返品」ならばそのまま入力を進める。

連結テキストボックス[開始製造番号]の更新後処理イベント、または

連結テキストボックス[終了製造番号]の更新後処理イベントが発生した時、

「テーブル[T製造番号]に格納されているレコードのうち、

フィールド[製造番号]の値がフォームのカレントレコードの

連結テキストボックス[開始製造番号]の値から

連結テキストボックス[終了製造番号]の値までの範囲に含まれ、

かつフィールド[出荷種別]の値が "出荷"(という文字列、

もしくはそれを意味するコードや番号)であるレコード」の件数を求め、

もしその件数が 1 件以上だった場合はメッセージボックスを表示する。

ということでしょうか。

> 更新クエリはQ製造番号更新 を作成

[Q製造番号更新]は具体的にどのような更新クエリなのでしょうか。

もし可能であれば、そのクエリの SQL ビューの内容を明記されることをお奨めします。

> 予め製造台数が決まっているので 製造台数分の製造番号は入力済み。

> 出荷種別 出荷ID 出荷日 出荷先は最初は空欄です。

> 【質問その2 指定範囲の製造番号全てに出荷履歴内容を書き込む】

> Q出荷履歴の内容を入力後に「保存」をクリックでQ出荷履歴レコードを保存。

> 同時にQ製造番号更新を使用し 指定範囲の製造番号全てに

> 「出荷種別 出荷ID 出荷先 出荷日」を書き込みたい。

質問その1の内容からの文脈を踏まえると

前述の条件に該当するレコードの件数が 1 件以上の場合は

[Q製造番号更新]を実行しない」という分岐があり得るように

思えますが、[出荷種別]はともかく**[出荷ID],[出荷先],[出荷日]の**

いずれかのフィールドに対して既に何らかの値が設定されている

( Null ではない)レコードが存在した場合については無視してもよいのでしょうか。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-09-13T02:14:27+00:00

    お返事が大変遅くなり申し訳ありません。

    頂いた返信の連絡メールを見落としてしまっておりましたm(_ _)m

    お返事を見落としたまま 自分で模索し、

    「選択クエリ」や「更新クエリ」の抽出条件に

    Between[Forms]![F○○]![開始製造番号]And[Forms]![F○○]![終了製造番号]を

    設定することで色々可能になる という単純な所に落ち着きました。

    (行き詰っていたとはいえ、お騒がせ致しました)

    その後の処理については 以下の様になりました。

    遅ればせでは御座いますが、返信させて頂きますm(_ _)m

    >[T製造番号]及び[T出荷履歴]の[出荷種別]のデータ型は何なのでしょうか。

    ⇒ 型はどちらも「短いテキスト」です。

    >[Q製造番号]が[T製造番号]を元に作成された選択クエリ、

    >[Q出荷履歴]が[T出荷履歴]を元に作成された選択クエリであると

    >仮定して、これらの選択クエリを作成された目的は何なのでしょうか。

    > (何か特別な理由があるわけではないなら、その連結フォームの

    > レコードソースは[T出荷履歴]でもよいはず)

    ⇒ はい ご指摘の通りです。どちらでも良いと思います。

    >連結テキストボックス[開始製造番号]の更新後処理イベント、または

    >連結テキストボックス[終了製造番号]の更新後処理イベントが発生した時、

    >「テーブル[T製造番号]に格納されているレコードのうち、

    >フィールド[製造番号]の値がフォームのカレントレコードの

    >連結テキストボックス[開始製造番号]の値から

    >連結テキストボックス[終了製造番号]の値までの範囲に含まれ、

    >かつフィールド[出荷種別]の値が "出荷"(という文字列、

    >もしくはそれを意味するコードや番号)であるレコード」の件数を求め、

    >もしその件数が 1 件以上だった場合はメッセージボックスを表示する。

    >ということでしょうか。

    ⇒ 入力フォームの[終了製造番号]の更新後処理イベントで [開始製造番号]の入力があるなら、

      [開始製造番号]と[終了製造番号]を選択クエリ[Q製造番号]の抽出条件に設定し、

      [出荷種別]に[出荷]があるデータの個数を取得し、1個以上あった場合はMsgBoxで

      製造番号の入力間違い・再確認のメッセージを出すようにしました。

    >> 更新クエリはQ製造番号更新 を作成>[Q製造番号更新]は具体的にどのような更新クエリなのでしょうか。

    >もし可能であれば、そのクエリの SQL ビューの内容を明記されることをお奨めします。

    ⇒ 「保存」ボタンのクリック時に

      [Q製造番号更新]を開き 抽出条件に[開始製造番号]と[終了製造番号]を使用し、

      入力フォームのテキストボックスにある「出荷種別] [出荷ID] [出荷先] [出荷日]に

      更新する としました。

      (初心者的なやり方になってしまいました)

    >[出荷ID],[出荷先],[出荷日]の >いずれかのフィールドに対して既に何らかの値が設定されている

    >( Null ではない)レコードが存在した場合については無視してもよいのでしょうか。

    ⇒ 返品が有った場合、再出荷もあるので、Nullでなくてもレコードの更新は必要です。

      その辺りも、[出荷種別]が[未][出荷][返品]のどれで入力した時 現状がどのデータかで、

      メッセージの表示を変える様 Ifで分岐しました。

    上記状況で 問題は解決しております。

    ご教授 有り難う御座いましたm(_ _)m

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません