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

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

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

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

Q&A

解決済

1回答

2150閲覧

Access UPDATEクエリにてTOP値を設定したい

name1224

総合スコア8

Access

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

0グッド

0クリップ

投稿2020/04/22 04:01

お世話になります。
調べても解決策が見つかりませんでしたので、どなたかご教授お願いします。
現在、仕事で納品管理用のAccessツールを作成しております。

使用ツール
マイクロソフト アクセス
◆テーブル情報◆
対象テーブル名 strTbl (変数)
データ内容
納品予定日 製造番号 拠点
null    A001   北海道
null    A002   沖縄
~ ~連番  ~それぞれ拠点名あり
◆やりたいこと◆
[製造番号フィールド]を降順に設定して、
上から5番目までのデータのみに納品予定日のデータを更新したい。

納品予定日に入る値は変数 str_day 

◆調べた事、試した事◆
・選択クエリで、製造番号を降順、TOP値を5に設定することで絞り込みはできた。
・更新クエリでは、Top値が設定できなかった。
・VBA + SQLでUPDATE文に「TOP(5)」または「TOP 5」を入力してみた。
(テストで納品予定日がNULLの場合に設定しています)

dim SQL as string

SQL= "UPDATE TOP 5 " & strTbl & ".納品予定日" = """ & str_day & """ WHERE (((" & strTbl & ".納品予定日") Is Null));"

DoCmd.RunSQL SQL

結果

UPDATEステートメントの構文エラーです。

TOP 5 が無ければきちんと値が更新されます。

どうすればやりたいことが実現できるかご回答よろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

・選択クエリで、製造番号を降順、TOP値を5に設定することで絞り込みはできた。

そのクエリーで取得したプライマリーキーで、対象のテーブルを更新する。

プライマリーキーが無い場合はオートナンバーなどを追加して下さい。
そもそも、一意キーによる並びのTOP5でない限り、selectで取得されるデータは同じものとは保証されませんので。

投稿2020/04/22 04:07

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

name1224

2020/04/22 05:04

ご教授頂きましてありがとうございます。 私の頭が固くなっていたようでして、一度に選択クエリと更新クエリを同時に実行するのではなく おっしゃる通り段階的にクエリを実行する事でうまくいけそうです。 迅速にご回答いただきましてありがとうございました。
name1224

2020/04/22 05:36

度々質問失礼いたします。 TOP5固定で質問してしまいましたが、どうやら「5」限定ではなく可変できるようにしたいとツール依頼者から要望がありました。(フォームを作ってフォームから値を取得したいです) Accessの選択クエリ上から変数指定ができないので、やはりSQL構文を作らないといけないでしょうか? もし、そうであれば私のSQL構文の修正点をご教授頂けますでしょうか。
sazi

2020/04/22 07:13

TOPの代わりにフォームで選択したものをselectしてそのキーをupdateで指定すれば良いと思います。
name1224

2020/04/22 09:19

ご回答いただきましてありがとうございます。 教えて頂いたことを参考に、SQL分を工夫して何とかいけました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問