質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2214閲覧

mdbファイルにアクセス出来なくなる原因が知りたい。

think.fuku

総合スコア12

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/10/14 07:47

編集2021/10/18 08:49

言語: VB.NET
統合開発ソフト: VisualStudio2017
OS: Windows10

mdbと連携した生産管理用のFormアプリケーションを作成しております。
月に1,2回 mdbファイルにアクセス出来なくなり、アプリケーションを再起動しないと復旧出来なくなります。
最終的にはバグを直したいのですが、まずはアクセスできなくなる原因を知りたいです。
mdbファイルが4個あるのですが、この症状が発生した時は 他のファイルへのInsertも失敗します。
大変恐縮ですが、ご教授お願いします。

発生している問題・エラーメッセージ

下記ソース "ErrorDebug_OleDbError" で出力されたメッセージ 2021/10/13 03:19:33,OleDB.Error,GetStateCount,SELECT * FROM Rec_aaa WHERE [STATE] = 'Fin' AND [RecTime] > #2021/09/14 10:32:00# 2021/10/13 03:19:33,OleDB.Error,GetStateCount,エラーを特定できません

該当のソースコード

VB.NET

1 Function GetStateCount(ByVal UnitName As String, ByVal fromTime As String, Optional ByVal State As String = "Fin") As Integer 2 Dim TableName As String = "Rec_" & UnitName 3 Dim CMD As String = "SELECT * FROM " & TableName & " WHERE [STATE] = '" & State & "' AND [RecTime] > #" & fromTime & "#" 4 5 Using oCon As New OleDbConnection 6 Using oCmd As New OleDbCommand 7 Using oDa As New OleDbDataAdapter 8 Try 9 Dim dSet As New DataSet 10 oCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Recordmdb & ";" 11 oCmd.Connection = oCon 12 oCmd.CommandText = CMD 13 14 oDa.SelectCommand = oCmd 15 oDa.Fill(dSet, TableName) 16 17 Dim uTable As DataTable = dSet.Tables(TableName) 18 If uTable Is Nothing Then 19 Return 0 20 Else 21 Return uTable.Rows.Count 22 End If 23 24 Catch oEx As OleDbException 25 ErrorDebug_OleDbError(oEx, CMD) 26 Catch ex As Exception 27 ErrorDebug_Error(ex) 28 Finally 29 oCon.Close() 30 End Try 31 End Using 32 End Using 33 End Using 34 Return 0 35 End Function 36 37 Sub ErrorDebug_OleDbError(ByVal ex As OleDb.OleDbException, Optional msg As String = "") 38 If clsConst.ErrDebug = True Then 39 Dim strDir As String = APPPath() & "\Log\" 40 Dim strPath As String = APPPath() & "\Log\log.txt" 41 If Directory.Exists(strDir) Then 42 Else 43 Directory.CreateDirectory(strDir) 44 End If 45 46 Using sw As New StreamWriter(strPath, True, Encoding.Default) 47 Dim log As String = "" 48 If msg <> "" Then 49 log = Now.ToString("yyyy/MM/dd HH:mm:ss") & ",OleDB.Error," & New StackFrame(1).GetMethod.Name & "," & msg 50 sw.WriteLine(log) 51 End If 52 53 If ex.Errors.Count > 0 Then 54 For Each Err As OleDb.OleDbError In ex.Errors 55 log = Now.ToString("yyyy/MM/dd HH:mm:ss") & ",OleDB.Error," & New StackFrame(1).GetMethod.Name & "," & Err.Message & " : " & Err.SQLState 56 sw.WriteLine(log) 57 Next 58 End If 59 sw.Close() 60 End Using 61 End If 62 End Sub 63

試したこと

ErrorDebug_OleDbErrorを追加してエラー内容を特定しようとしたのですが特定できませんでした。

[追記]
イベント発生でmdbにアクセスしている箇所があったので修正。
mdbへのアクセスは意図した順番で処理するように。

補足情報(FW/ツールのバージョンなど)

Microsoft Jet and Replication Objects 2.6 Library(10.0.19041.746)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

イベント発生でmdbにアクセスしている箇所があったので修正。
mdbへのアクセスは意図した順番で処理するように。

この処理で再発していないので解決とします。

投稿2021/12/06 23:37

think.fuku

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問