VB6.0とXPを使っています。
VBのフォームから入力されたデータをVBで配置したプレビューボタンを押すとAccessのレポートを使ってプレビューしたいと考えていますがプレビューボタンを押してもAccessが開いてくれません。具体的にどうすればよろしいでしょうか?お教え下さい。
http://homepage2.nifty.com/inform/vbmania/source/acvb.htm
ここを参考にしてはいかが?
ありがとうございます。
参考にさせて頂きました。しかし、新たな問題が発生しました。
レポートを表示できているのですがそれが一瞬しか表示されなく、すぐにAccessが閉じられてしまって開いてる状態を維持できていないのです。
この場合常にTureにしておく方法ご存知ないでしょうか?
名前が違いますが><です。
閣下さん、申し訳ないですがサンプルコードをアップしてくださいませんか?
#>って大文字でも引用になるのですね><;
#あと仕事中ですので反応が鈍いです、ご了承を><
お手数をお掛けします。以下がいま組んでいるサンプルコードです。
以下以外にもコードはありますが、該当部分がここだと思うので一部しか載せてません。
Set obj = CreateObject("Access.Application")
' データベースを開く
obj.OpenCurrentDatabase App.Path & "\CARD.mdb", False
'ここでクエリが存在するかしないかを判断しあれば削除
If ExistQ("qryPostSeal") = True Then
obj.CurrentDb.QueryDefs.Delete "qryPostSeal"
End If
Dim Result As Integer
'CARD.mdbに新規にクエリ作成
obj.CurrentDb.CreateQueryDef "qryPostSeal", strSQL
obj.DoCmd.OpenReport "repPostSeal", acViewPreview
obj.Quit
obj.DoCmd.OpenReport "repPostSeal", acDesign
' アプリケーションを表示する
obj.Visible = True
' 名前を指定してレポートを開く
obj.DoCmd.OpenReport "repPostSeal", 2 'acViewPreview
' レポートの最大化
obj.DoCmd.Maximize
'レポートに設定情報を保存して閉じる
obj.DoCmd.Close acReport, "repPostSeal", acSaveYes
Set obj = Nothing
よろしくお願い致します。
コード拝見しました。
>*****************************************
' 名前を指定してレポートを開く
obj.DoCmd.OpenReport "repPostSeal", 2 'acViewPreview
' レポートの最大化
obj.DoCmd.Maximize
'レポートに設定情報を保存して閉じる
obj.DoCmd.Close acReport, "repPostSeal", acSaveYes
>*****************************************
問題があるとすればここでしょうか?
レポートを開いた直後にレポートを閉じていますね。
ボタンを押したときは
>*****************************************
' 名前を指定してレポートを開く
obj.DoCmd.OpenReport "repPostSeal", 2 'acViewPreview
' レポートの最大化
obj.DoCmd.Maximize
>*****************************************
レポートを保存して閉じたいとき(例えばフォームが閉じられたとき)に
>*****************************************
'レポートに設定情報を保存して閉じる
obj.DoCmd.Close acReport, "repPostSeal", acSaveYes
>*****************************************
とすればOKだと思います。><
返答ありがとうございます。
プレビューボタンを押した時の処理のところで
'レポートに設定情報を保存して閉じる
obj.DoCmd.Close acReport, "repPostSeal", acSaveYes
のところを省いて実行してみてもやはりAccessが閉じてしまいます。
似たようなものを作って試したところ
obj.Quit
が原因じゃないかと思いますので省いてみてください。><
お忙しいところお手数をお掛けしまして申し訳ありません。
やはりダメで一瞬開いて閉じてしまいます。
もうお手上げ状態です。
む・・むぅ・・・@@;
>*************************************************
'CARD.mdbに新規にクエリ作成
obj.CurrentDb.CreateQueryDef "qryPostSeal", strSQL
>*************************************************
これ以下のコードが気になるので下記の部分を削除してください。
>*************************************************
obj.DoCmd.OpenReport "repPostSeal", acViewPreview
obj.Quit
obj.DoCmd.OpenReport "repPostSeal", acDesign
>*************************************************
ふと思いましたが、もしかしてAccessのレポートに「データがない場合は終了」的なイベントが存在しませんか?
一瞬表示されるなら、Accessか?と思いましたのでご確認のほどお願いします。><
>お忙しいところお手数をお掛けしまして申し訳ありません。
いきなり待機状態になってしまって暇になってしまいました。><
以降下手をすると明日まで反応できませんのでご了承を><;
…エラーで落ちてるとかいうオチだったりw。(エラートラップしてて
エラーメッセージに気づいてないとか)Access 側のエラーが全て
VB側でちゃんと取れるとも限らないって気もしますし…。
>もうお手上げ状態です。
どこが???
まず、新規プロジェクトで
>>< 2006/05/24(水) 13:50:59
>http://homepage2.nifty.com/inform/vbmania/source/acvb.htm
>ここを参考にしてはいかが?
のサンプルコードをそのまま実行しても同じ現象が起きますか?
(こちらで実行したところ開いたままでした。)
もし、開いたままであれば、貴方が勝手な解釈で追加したコードが
原因では?それを探すのを専門用語で『デバッグ』と呼んでいます。
それは質問者が自分ですべき作業です。
もし、閉じてしまうなら、Access 側の問題でしょうね。レポート自体が
壊れてるとか…。それも新規でレポートを作ってみれば分かると思います。
ステップ実行するとか、どのコードを追加した時に閉じるように
なってしまうか?1命令ずつ追加して調べるとか…やるべきことは
無数にあると思いますが?
| ツイート |
|