![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
C言語でのaccess violationについて
C言語・C++・C#
-
VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。
Visual Basic(VBA)
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
-
4
VS 2008(VB.NET)
Visual Basic(VBA)
-
5
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ffftpでファイル取得が0バイト...
-
Wordのプロパティ・総ページ数...
-
更新日が指定日以降のファイル取得
-
EXCEL VBA tif画像のプロパティ...
-
VBAでフォルダ内のhtmlファイル...
-
【ACCESS VBA】アクセスからデ...
-
ファイルを開く時間測定のスク...
-
フォルダ階層・ファイル名・ペ...
-
webブラウザからローカルファイ...
-
FileDialog オブジェクトでファ...
-
vbaサブフォルダーをワイルドカ...
-
サブフォルダ含むフォルダ内の...
-
複数のワークブックのVBAを変更...
-
ファイルを複数選択した時のフ...
-
Accessのウインドウサイズの固定
-
ファイル番号の取得について
-
AccessからOLEオブジェクト型の...
-
VB6でUTF-8ファイルの読取りを
-
「エクセルファイルが開いてい...
-
VBAでのファイル名と更新日(作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaサブフォルダーをワイルドカ...
-
動かなくなってしまった古いVBA...
-
ffftpでファイル取得が0バイト...
-
FileDialog オブジェクトでファ...
-
サブフォルダ含むフォルダ内の...
-
「エクセルファイルが開いてい...
-
Accessのウインドウサイズの固定
-
excel マクロ PDF化の際のエラ...
-
ExcelVBA 文字コード変換
-
AccessからOLEオブジェクト型の...
-
VBAでフォルダ内のhtmlファイル...
-
【VBAマクロ初心者】Excel VBA...
-
VBからExcelファイルを開くとき...
-
「AccessViolationException」...
-
【ACCESS VBA】アクセスからデ...
-
VB6でUTF-8ファイルの読取りを
-
ファイルを開く時間測定のスク...
-
複数のワークブックのVBAを変更...
-
VB.net XMLの作成方法 Iniの代替
-
エクセルのVBAで開いている...
おすすめ情報