![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VisualBasic2005でプログラミングしているのですが、
フォームからAccessのレポートを開こうとしたら、
「System.AccessViolationException」というメッセージが出てしまい、
レポートが表示されません。
Dim app As New Access.Application
app = New Access.ApplicationClass()
app.OpenAccessProject(Accessファイルのパス)
app.DoCmd.OpenReport("レポート", Access.AcView.acViewPreview, , "[番号]='" & txt_No.Text & "'")
どこか記述がおかしい所があるのでしょうか。ご教授よろしくお願いします。
No.1ベストアンサー
- 回答日時:
興味がわいたのでちょっとサンプル作成...
「じゃんぬねっと」さんのページを拝見しながら、書いたので参照リリース漏れは無いはず....
COM オブジェクトの参照カウントを解放する
http://jeanne.wankuma.com/tips/programing/releas …
このサンプルはレポートを表示してから、10秒でアクセスごと終了します
そこらへんは工夫が必要ですw
普通にクリスタルレポートを使用したほうが、もうちょっとスマートにいけそうですね
あと、気になったのは
>app.OpenAccessProject(Accessファイルのパス)
と記述していますが、「Accessファイルのパス」の拡張子は"adp"ですか?
たぶん、「Accessファイルのパス」と記述しているので
app.OpenCurrentDatabase(Accessファイルのパス)
と記述しなければならないのでは?
開発環境:WindowsXP+VB2005+Access2003
※ちなみにWindowsVista+VB2005+Access2007でやったら、セキュリティがうんたらかんたら('A`)マンドクセ
Imports Microsoft.Office.Interop
Imports System.Runtime.InteropServices
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim acApp As Access.Application = Nothing
Try
acApp = New Access.Application
Dim filePath As String = Path.Combine( _
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), _
"db1.mdb")
If (File.Exists(filePath)) Then
acApp.OpenCurrentDatabase(filePath)
acApp.Visible = True
Dim doCmd As Access.DoCmd = acApp.DoCmd
Try
Dim reportName As String = "testReport"
doCmd.OpenReport(reportName, Access.AcView.acViewPreview)
System.Threading.Thread.Sleep(10 * 1000)
Finally
Marshal.ReleaseComObject(doCmd)
End Try
acApp.CloseCurrentDatabase()
Else
Dim message As String = String.Format("指定されたファイルは存在しません「{0}」", filePath)
MessageBox.Show(Me, message, "IO Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Finally
If Not acApp Is Nothing Then
Try
acApp.Quit()
Finally
Marshal.ReleaseComObject(acApp)
End Try
End If
End Try
End Sub
End Class
この回答への補足
自己解決しました。
「じゃんぬねっと」さんのページが参考になりました。
レポートを開く前に、Accessへ接続していたことが原因だったようです。切断したらAccess2000でも表示されました。
ただ、なぜAccess2003なら大丈夫で、Access2000のときは駄目だったのかはわかりませんが。
AlexSunsさん、ありがとうございました。
AlexSunsさん、回答ありがとうございます。
>>app.OpenAccessProject(Accessファイルのパス)
>と記述していますが、「Accessファイルのパス」の拡張子は"adp"ですか?
>たぶん、「Accessファイルのパス」と記述しているので
>app.OpenCurrentDatabase(Accessファイルのパス)
>と記述しなければならないのでは?
Accessファイルと書いてしまいましたが、プロジェクト(adp)でした。申し訳ありません。
クリスタルレポートも考えたのですが、現在私が持っているのがVisualStudio Standardで、
クリスタルレポートがついていないので、やむを得ずAccessのレポートを使おうと思ったのです。
それで、早速試してみたところ、Access2003が入っているパソコンだとレポートを見ることができました。
ところが、Access2000のパソコンだとやはり「AccessViolationException」と出てしまいます。
Accessのバージョンの違いによるものなのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- JavaScript jQueryローディングアニメーションのコードの以下のURL内参考サイトで提示されている 3 2023/07/03 18:29
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) Accessのデータ型の日付/時刻型について 1 2023/04/02 17:03
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。
Visual Basic(VBA)
-
C言語でのaccess violationについて
C言語・C++・C#
-
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
-
4
VS 2008(VB.NET)
Visual Basic(VBA)
-
5
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダ含むフォルダ内の...
-
AccessからOLEオブジェクト型の...
-
動かなくなってしまった古いVBA...
-
vbaサブフォルダーをワイルドカ...
-
FTP対応のアプリケーション
-
Windows10でコマンドプロンプト...
-
ファイルのアクセス回数について
-
VBA 最新のフォルダ取得
-
エクセルのプロパティーでセキ...
-
同じファイル名 上書きしないフ...
-
Excelのフッダ-に「ファイルの...
-
バッチファイル 二つ上のディ...
-
Excel VBA マクロ 選択したフォ...
-
ExcelVBA+xdoc2txtでデスクトッ...
-
データ解析ソフトRでのファイル...
-
最新更新日のBATファイルコピー...
-
Excelのマクロについて教えてく...
-
AccessからExcel最小化
-
パワポでスライドをコピーでき...
-
バッチファイル 別ファイルにリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FileDialog オブジェクトでファ...
-
動かなくなってしまった古いVBA...
-
vbaサブフォルダーをワイルドカ...
-
ffftpでファイル取得が0バイト...
-
サブフォルダ含むフォルダ内の...
-
VBAでフォルダ内のhtmlファイル...
-
excel マクロ PDF化の際のエラ...
-
Wordのプロパティ・総ページ数...
-
Accessのウインドウサイズの固定
-
VB6でUTF-8ファイルの読取りを
-
フォルダ階層・ファイル名・ペ...
-
「エクセルファイルが開いてい...
-
ExcelVBA 文字コード変換
-
エクセルのVBAで開いている...
-
「AccessViolationException」...
-
ファイルを開く時間測定のスク...
-
AccessからOLEオブジェクト型の...
-
vbsでのアスタリスクとファイル...
-
VBからExcelファイルを開くとき...
-
【ACCESS VBA】アクセスからデ...
おすすめ情報