更新クエリーは更新可能なクエリーである必要があります。
Access クエリおよびフォームでデータを更新するときに発生する可能性のあるエラーのトラブルシューティング方法
一意なインデックスを持たない、または主キーのない Paradox テーブルを含むリンクされた ODBC テーブルがクエリに含まれる場合、クエリ内のデータを更新することはできません。 この問題を回避するには、リンクテーブルに主キーまたは一意インデックスを追加します。
ただ、リンクテーブルを含む結合の場合、行単位で都度トラフィックが発生し低速になります。
ですので、SQL SERVER内で完結するようにパススルークエリーを実行した方が良いかと。
ADOX を使用して Access で SQLパススルー クエリを作成する方法
データ アクセス オブジェクト (DAO) モデルを使用すると、外部データにアクセスSQLクエリを使用してパフォーマンスを向上させることができます。
パススルー クエリを作成する
【MS Access】動的にパススルークエリを作成する
追記
sql文はどのように作成してよいかわからず、書けてません。
それが本題なのですね。
「出来ないのでしょうか?」という質問なので、やってみたけど出来なかったと思いました。
テーブルA(evaluation)のカラム名は
e_id(PK),e_score(点数),e_evaluation(評価)
テーブルB(result)は
m_id(メンバーID),m_name(メンバー名),s_id(教科ID),s_name(教科名),score(取得点数)evaluation(決定評価)
要点は、evaluationの点数範囲をどのように表現するかです。
以下のSQLで点数範囲を求めます。
SQL
1select *, e_score as lower_score
2 , Nz((select e_score from evaluation as lag where lag.e_id = evaluation.id -1), 100) as upper_score
3from evaluation
上記をQ_evaluation
というクエリーにしたとして、更新するクエリーは以下です。
SQL
1update result set
2 evaluation=(
3 select e_evaluation from Q_evaluation
4 where result.score between lower_score and upper_score
5 )
6where score is not null
そもそも更新するテーブルはACCESSのテーブルだったという事なので、この際、ODBCリンクテーブルかどうかは関係がありません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/21 02:05 編集
2021/04/21 02:36
2021/04/21 02:38
2021/04/21 02:51
2021/04/22 00:32
2021/04/22 00:55 編集
2021/04/22 00:56 編集
2021/04/22 01:25