プロが教えるわが家の防犯対策術!

フィールドに数式セットをしようとして以下のように書きましたが
「データベースまたはオブジェクトは読み取り専用なので、更新できません」との
エラーが出ます。アクセスは初心者なので宜しくお願いします。

Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("Q02_5_見込み案件数") Q02_5_見込み案件数はクエリ
With rst
Do Until .EOF
.Edit     →ここで上記のエラーが発生します。
!件数 = !件数 * Me.SP予測掛け率
.Update
.MoveNext
Loop
.Close
End With

A 回答 (3件)

クエリというのはSQL文をわかりやすく表示したものです。

 (ので、クエリでできないものをSQLであればできるという可能性は少ないのですが、クエリというのはGUIですから、何を具体的にやっているのかなどを文章で説明するのは非常に困難ですので、ドキュメント化しにくいという欠点があります。 また、将来的に他のデータベースに変更する際など、手間がかかるのも問題です。)

データベース上ではテーブルの個々のデータの更新はできますが、クエリなどで集計したものや計算したものについては、テーブル上のどのレコードのどの値を変えるかがわからないため更新することができないのが普通です。

質問者様がやりたいことがはっきり見えていないので、正しい回答になるかがよくわからいのですが、
・件数というのがレコード数なら、集計する前のクエリで掛け率を表示する列を作りそれを合計させる
・件数というのが個々のレコードに入っている何らかの値なら、補正件数みたいな列を作りそこに件数と予想掛け率を掛けた値を入れて置き集計させる
などの方法が思いつきます。
    • good
    • 2
この回答へのお礼

詳しく説明してくださってありがとうございます。

「T02_見込案件」テーブルの「案件番号」フィールドのレコード数をカウントする
クエリを作って、その件数にユーザーフォームから入力した掛け率係数をかける機能を作ろうとしましたが、
それがうまく行かなくて質問を出しました。
件数を数えるクエリ削除して他の方法で件数を数えなければならないですね!
下手な説明ですみませんでした。

とても役に立ちました。

お礼日時:2016/04/14 13:44

このクエリ Q02_5_見込み案件数 は更新可能なのでしょうか?


直接開いて手作業で変更できてますか?
https://support.microsoft.com/ja-jp/kb/328828
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

直接開いて手作業で入力したところ、更新できませんでした。
集計クエリで更新できないです。

お礼日時:2016/04/14 11:36

テーブル(か関連しているクエリ)が(連結フォーム上などで)開いた状態になっているとか。



あと、クエリを更新しようとしている場合は、連結状態によっては(1:1でない場合は)レコード単位での更新はできないこともあると思います。(集計クエリとかだと、そもそも更新はできないような気がします。)

何をされようとしておられるのかが、はっきりとは理解できませんが、アクセスを利用されているなら、まずは更新クエリなどで実行できるようにするとよいと思います。 VBAを使う場合は、クエリをSQLにして、それをコネクションで実行するのが個人的には良いと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

おっしゃった通り集計クエリです。
集計クエリで今更新出来ないです。
SQL文だったら更新できますか?

お礼日時:2016/04/14 11:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A