- 締切済み
Accessの更新クエリについて質問です。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
どうしても、逐一、全レコードを再計算するのであれば・・・。 UPDATE 得意先マスター SET 売上件数 = DBCount("*","売上伝票","[得意先マスター_ID]=" & [ID]); これを<更新クエリ>にすればいいです。 DCount関数を利用する場合よりも3倍速で実行します。 Public Function DBCount(ByVal strField As String, _ ByVal strTable As String, _ Optional ByVal strWhere As String = "") As Variant On Error GoTo Err_DBCount Dim N Dim strQuerySQL As String Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset strQuerySQL = "SELECT COUNT(" & strField & ") FROM " & strTable If Len(strWhere) > 0 Then strQuerySQL = strQuerySQL & " WHERE " & strWhere End If With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then .MoveFirst N = Nz(.Fields(0), 0) End If End With Exit_DBCount: On Error Resume Next rst.Close Set rst = Nothing DBCount = N Exit Function Err_DBCount: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBCount)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBCount End Function
服飾デザイナーですので妥当な回答か否かは定かじゃありませんが・・・。 私なら 1、そもそも、[得意先マスター]に列[売上件数]は設けない。 2、仮に設けるならば、[売上伝票入力フォーム]を閉じる時に更新する。 <得意先マスター> ID___氏名__________売上件数 1____鈴木 一郎_____________0 2____中村 主水_____________0 <売上伝票> ID___伝票番号_______日付____________得意先マスター_ID__集計 1____2007110001___2007/11/01________________________1__False 2____2007110002___2007/11/02________________________2__False 3____2007110003___2007/11/03________________________1__False 4____2007110004___2007/11/04________________________1__False <フォーム[売上伝票]> Private Sub Form_Close() Dim intCount As Integer Dim strSQL As String Dim rst As ADODB.Recordset strSQL = "SELECT 得意先マスター_ID, 集計 FROM 売上伝票 WHERE NOT 集計" Set rst = New ADODB.Recordset With rst .Open strSQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockOptimistic If Not .BOF Then .MoveFirst Do Until .EOF intCount = DBCount("x", "xxxx", "xxxxx" & .Fields(0)) CnnExecute "UPDATE [得意先マスター] SET 売上件数=" & ・・・・ .Fields(1) = True .Update .MoveNext Loop End If End With End Sub 今、テストしてみましたが、これ位のコードを書けば事足りるようです。 <得意先マスター> ID___氏名__________売上件数 1____鈴木 一郎_____________3 2____中村 主水_____________1 <売上伝票> ID___伝票番号_______日付____________得意先マスター_ID__集計 1____2007110001___2007/11/01________________________1__True 2____2007110002___2007/11/02________________________2__True 3____2007110003___2007/11/03________________________1__True 4____2007110004___2007/11/04________________________1__True
- nobu-
- ベストアンサー率33% (31/93)
>集計したクエリを元に更新クエリを実行すると、更新できません。 バージョンにもよりますが、「集計したクエリ」から「更新クエリ」ではなく、「テーブル作成クエリ」を実行してはいかがでしょうか? その場合も、「選択(集計)クエリ」から「テーブル作成クエリ」に変更後、いったんデザインクエリを閉じ、データーベースウィンドウのクエリをダブルクリックしてみては・・・ いかがでしょうか?
- mshr1962
- ベストアンサー率39% (7418/18948)
DCount関数で件数をカウントすればいいのでは? 得意先コードが数値型(長整数)の場合 DCount("*","売上データテーブル","[得意先コード]=" & [得意先コード]) 得意先コードがテキスト型の場合 DCount("*","売上データテーブル","[得意先コード]='" & [得意先コード] & "'") http://www.accessclub.jp/supbeg/057.html
関連するQ&A
- Access で更新クエリー
教えてください。アクセス2000 Win2Kです。 あるDBから1つのレコードだけ抽出し(オートナンバーをキーにしてテーブル作成クエリでローカルテーブルを作成します。)その後、そのレコードを加工して元のDBにもどしたいのですが、1レコード上にフィールドが60近くあるので一括で更新したいのです。「T_ローカル.*」みたいな感じで・・・。なにか良い方法はありませんか?一旦、DBから削除して加工したレコードを追加する方法も考えたのですが、DBのオートナンバーが変わってしまうのでやめました。 なにか良い方法をご存じの方、是非ご教授ください。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- access 更新クエリ?追加クエリ?
access超初心者です。 いま、下記のような在庫表をつくっています。 (出庫テーブルは省略してます) 入庫テーブル ID 入庫日付 大分類 中分類 小分類 数量 在庫テーブル ID 大分類 中分類 小分類 最初の数 入庫数 出庫数 入庫更新クエリ *入庫→在庫 大分類 中分類 小分類 ・入庫の全レコードと在庫表の同じ結合フィールドのレコードだけを含める で結合しています。 *在庫表の入庫数 レコードの更新で NZ([在庫数]![入庫数],0)+NZ([入庫]![数量],0) といれています。 入庫テーブルに入力していき その都度、 入庫更新クエリにて更新し 在庫表に反映させていきたいと思っています。 入庫表には、この先 在庫表にないものもでてくるので 在庫表にないものは 追加、あるものは、更新としていきたいです。 今の状態だと 入庫表のものは、更新クエリでいったん在庫表に反映されるのですが 入庫表にレコードを追加して また更新クエリをかけると 在庫表が、前に更新したレコードの分も 重複して反映してしまいます。 これをなくすには、どういった方法が ありますか? 宜しくお願いいたします
- ベストアンサー
- オフィス系ソフト
- 更新可能なクエリであることが必要です ACCESS
更新可能なクエリであることが必要です Access2010で更新クエリをかけたいと思っています。やりたいことは以下になります。 クエリデザインで行おうとしています。 追加動物テーブル(重複したIDもあります。) ・ID ・数 追加動物クエリ(追加動物テーブルで数の合計をしています。重複IDがある為) ・sum(数) group by ID トータル動物テーブル(このテーブルに追加動物クエリで得た数を足し込みたいです) ・ID ・数 そこで、クエリデザインで更新クエリを行おうと思いました。 SQLは、 UPDATE トータル動物テーブル INNER JOIN 追加動物クエリ ON トータル動物テーブル.ID = 追加動物クエリ.ID SET トータル動物テーブル.数 = [追加動物クエリ]![数]; としたら、「更新可能なクエリであることが必要です」と表示されました。 目的としている、クエリで取得した数をテーブルの数に追加したいです。 例えば、トータル動物テーブルの001 猫の数が10だとします。追加動物クエリで得た猫の数が20だとします。 更新クエリが実行された時、トータル動物テーブルの猫の数が30になっていてもらいたいです。 ずっと悩んでいるのですが良いアイディアがでません。おわかりでありましたらお教え下さいませ。 宜しくお願いします。
- ベストアンサー
- その他(データベース)
- ACCESS【更新クエリの中断ができない】
ACCESS初心者です。質問がわかりにくかったらすみません。 ACCESSの更新クエリで、レコードのカンマをスペースに置き換える式を作りました。 クエリを実行すると、 ”更新クエリを実行すると、テーブルのデータが更新されます” と、メッセージが表示され”はい”で次に進むと ”*件のレコードが更新されます。”と正確な件数が表示されます。 ただ、ここでやはり中断したいと思い、”いいえ”を選択しても、 レコードは更新されてしまいます。何故でしょうか?教えてください。 ______________________ フィールド: 型名 テーブル: データ統合 レコードの更新: Replace([型名],","," ") 抽出条件: Like"*,*"
- ベストアンサー
- オフィス系ソフト
- アクセス2000 複数のテーブルに同じクエリの処理をかけたい
いつもお世話になります。 アクセスに"DB1"~"DB20"までの20コのテーブルがあり、レイアウトは全て同じです。 "店名" "アイテム数" "数量" "金額 "・・・ "グループ化" "カウント" "合計" "合計"・・・ それを上記のクエリで集計して、"集計1"~"集計20"のテーブルを作りたいのですが、現在はDB1が終わったらDB2を表示させて1項目ずつテーブル名を変えてDB1を消してクエリ実行・・・と行っています。 ミスも結構あります。 マクロか何かで出来るのならと思い、ご質問させていただきました。 以上宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- ACCESS 更新クエリについて
更新クエリで更新したいのですが、クロス集計クエリの数値を元にテーブルを更新することは出来ないようで、困っています。 なぜそのようなことをしているかと申しますと、 商品品目_個数_コード(主キー) のようにフィールドを持っているのですが、 印刷に関しては品目ごとに印刷したい、ということで 一度クロス集計クエリ(TRANSFORM)で りんご_ばなな_ぶどう_コード(主キー) 数値_数値_数値_数値 のような並びにして、テーブル作成クエリでテーブルを作成し そのテーブルをレポートに使用しています。 数値などが変わった場合その作成したテーブルの数値を 作成元になったクロス集計クエリで更新したいのですが、出来なくて困っています。 テーブル作成クエリで上書きすると、古いデータが消えてしまうため 何か良い方法はないかと思っています。 回答のほどお願いします。
- ベストアンサー
- オフィス系ソフト
- Accessのクエリについて
ふたつのテーブルから抽出したユーザー名が重複してしまいました。それを一つだけに絞ってユーザーの件数の合計を出したいのですが、方法はありますか? 私がとった方法はクエリプロパティのレコードを「はい」にしましたがうまくいきませんでした。 それでピボットテーブルで集計をしましたが、やはりテーブルデータシートで確認できたら便利に思います。 どなたかお知恵をお貸しください。 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- クエリでのデータ更新について
ACCESS2000で更新クエリの質問です。 フィールドの値の合計、カウントなどの集計値を計算するクエリから取り出された値を、更新クエリでデータを更新したいのですが、 「更新可能なクエリでありません」とエラーがでます。 LOOPする方法もあるのですが、できればクエリで一括更新したいと思います。 どなたかご教授お願いします。 やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> コード 個数 1 1 1 2 1 3 2 4 2 4 3 5 3 6 <Bテーブル> コード 個数 1 2 3 ↓↓↓更新後 <結果:Bテーブル> コード 個数 1 6 2 8 3 11
- ベストアンサー
- その他(プログラミング・開発)
- accessのリンクテーブル
AというDBのAAテーブルをBというDBのBBテーブルとしてリンクしています。 B側では単にリストで見る程度でレコードを更新、追加、削除はしません。 クエリで絞り込んで集計程度はします。 このような使い方において、B側のDBを開いたままで A側で更新や追加等を行うと排他制御とかでひっかかったりしますか? よろしくお願いします。
- 締切済み
- その他(データベース)
- MSアクセスのクエリで結果がおかしい
アクセス2000で追加クエリを作成していますが、 クエリのデータシートビューで確認したレコードと 追加されたテーブルで確認したレコードが異なり、テーブルのデータが少なくなってしまっています。 条件としては、 クエリの参照元 SQLサーバからのリンクテーブル(レコード数で13万件程度) 追加先のテーブルはローカルのmdb内です たまたまかもしれませんが、今テストしているデータは、 クエリ上では、19件あるものの、実行しても9件しか追加されません。 原因としてありそうなものがわかる方がいれば、よろしくお願いします。
- ベストアンサー
- その他(データベース)