Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


509 / 2272 ツリー ←次へ | 前へ→

【11366】トランザクションにまつわる質問 TOMONORI 10/1/11(月) 20:19 質問[未読]
【11373】Re:トランザクションにまつわる質問 小僧 10/1/13(水) 11:17 回答[未読]
【11377】Re:トランザクションにまつわる質問 TOMONORI 10/1/13(水) 14:47 質問[未読]
【11391】Re:トランザクションにまつわる質問 TOMONORI 10/1/15(金) 18:26 お礼[未読]

【11366】トランザクションにまつわる質問
質問  TOMONORI E-MAIL  - 10/1/11(月) 20:19 -

引用なし
パスワード
   こんにちは。TOMONORIです。

ADOのトランザクションを利用したときの
レポートの作成の仕方で困っています。

処理の途中で利用、作成したテーブルはすべてrollbackで破棄して
結果だけをレポートとして出力したいのですが、
コミットする前のテーブルからはレポートが作成できないので、
仕方なくテーブルを1つだけ具現化しようと思ったのですが、
うまくいきませんでした。

なにか方法があったら教えてください。

【11373】Re:トランザクションにまつわる質問
回答  小僧  - 10/1/13(水) 11:17 -

引用なし
パスワード
   ▼TOMONORI さん:
こんにちは。
なかなか回答が付きませんね…。

> 処理の途中で利用、作成したテーブルはすべてrollbackで破棄して
> 結果だけをレポートとして出力したい

この仕様がAccessにとって一般的ではないのかもしれませんね。

印刷するReportが単票形式であり、
1レコードずつの印刷で良いのであれば
非連結のレポートして
レポートのFormatイベントで処理をする方法が考えられます。


また、複数レコードを印刷するのであれば
テーブルに保存されたデータが必要になってきます。

このような仕様を経験した事がないので
大した案はでませんが、

A) ADO.Recordset の GetRows メソッドを使用し
  いったん配列変数にデータを退避させ
  Rollback後に別トランザクションで
  ワークテーブルにデータを保存する

B) 中間データ用のワークテーブルもあらかじめ用意し
  データの Delete、Insert にて対応する

当方が行うのでしたら B)案で行うと思います。

【11377】Re:トランザクションにまつわる質問
質問  TOMONORI E-MAIL  - 10/1/13(水) 14:47 -

引用なし
パスワード
   ▼小僧 さん:
返信ありがとうございます。
>なかなか回答が付きませんね…。
そんな中返信していただけるとホッとするというか
なんというか。本当にありがとうございます。

>この仕様がAccessにとって一般的ではないのかもしれませんね。
そうですね。実はコミットしても時間はほとんどかかりませんし
それくらいなら後でテーブルを削除したのでも問題ないような気がしてきました。

今回のレポートはテーブルの集計表で、キーの種類ごとにカラムの
合計値を持っているような感じです。

>また、複数レコードを印刷するのであれば
>テーブルに保存されたデータが必要になってきます。
みたいですね。MSさんのヘルプページにはっきり書いてありました。

>A) ADO.Recordset の GetRows メソッドを使用し
>  いったん配列変数にデータを退避させ
>  Rollback後に別トランザクションで
>  ワークテーブルにデータを保存する
なるほど、レポート用のデータなら対して大きくないので
GetRowsでもいけそうですね。ちょっとやってみます。

>B) 中間データ用のワークテーブルもあらかじめ用意し
>  データの Delete、Insert にて対応する
>
>当方が行うのでしたら B)案で行うと思います。
B案はやってみたのですが・・・
中間データ用のテーブルを用意してもトランザクションの中から
Insertしたらロールバックで消えてしまいますよね?
間違えてたらごめんなさい。

とりあえずAのほうでちょっと試してみます。

【11391】Re:トランザクションにまつわる質問
お礼  TOMONORI E-MAIL  - 10/1/15(金) 18:26 -

引用なし
パスワード
   報告が遅れてすみません。
GetRowsでうまくいきました。
小僧さんありがとうございました。

開発のほうはいったんコミットしてから後でテーブルを削除する
仕様で提出してしまったのですが、GetRowsの存在は今まで知らなかったので
大変参考になりました。

いつか回答者の側で来られるように精進します。
ありがとうございました。

509 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free