[リストへもどる]
一括表示

投稿時間:2003/04/01(Tue) 09:31
投稿者名:よっし
URL :
タイトル:
エラーメッセージ3036について
DAOにてデータベースを使用しているのですが、エラーメッセージ3036が
発生してしまいました。
「データベースが最大サイズに達しました。」

中身を見ると、このデータベースファイルサイズは1Gを超えており、
データベース自体も破損しているようでした。

このエラーメッセージで言う最大サイズとは、1Gの事なのでしょうか?
エラーの意味が不明なので、教えてください。
お願いします。

投稿時間:2003/04/01(Tue) 11:22
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: エラーメッセージ3036について
> このエラーメッセージで言う最大サイズとは、1Gの事なのでしょうか?

Jet 3.52以下のバージョンでは 1GB、Jet 4.0では 2GB が上限となります。

もし、Microsoft Accessをお持ちであれば、ヘルプで
『Access の定義』というトピックを調べて見てください。
最大テーブル数や、同時接続可能ユーザー数などといった各種制限が載っています。

投稿時間:2003/04/01(Tue) 12:00
投稿者名:よっし
URL :
タイトル:
Re^2: エラーメッセージ3036について
> もし、Microsoft Accessをお持ちであれば、ヘルプで
> 『Access の定義』というトピックを調べて見てください。
> 最大テーブル数や、同時接続可能ユーザー数などといった各種制限が載っています。

『Access の定義』で調べたら出てきました。ありがとうございます。
これに関連して、どうやらプログラムで自動最適化をしようとする時にエラーとなっており、
ファイルのサイズが増えてしまったようなのですが、Accessで最適化をかけるとMySysCompactError
というテーブルが自動作成され、エラーコード「-1003」というのが多数出てきました。

ヘルプのキーワードを「エラー」とか「エラーコード」にしても、出てこないので、何か調べる方法は
あるのか教えていただきたいです。

すみません。教えてください。

投稿時間:2003/04/01(Tue) 12:18
投稿者名:しんじ
Eメール:
URL :
タイトル:
Re^3: エラーメッセージ3036について
エラーコードは下記のURLに乗っていました。
参考にされてください。

http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/266/3/61.asp

最適化の時に他のユーザーがDBを使用していると自動実行の場合はエラーとなってしまいます。
業務都合にもよるかと思いますが、深夜にバッチとかを組むほうが良いかもしれません。
DBがACCSESSですのでプログラム上から権限を設定して排他で開くことが出来るのか?
ということに関しては私の中では不明ですが...

とりあえずエラーをトラップしてDBが増大するのは防いだ方がよさそうですね♪

投稿時間:2003/04/01(Tue) 12:40
投稿者名:よっし
URL :
タイトル:
Re^4: エラーメッセージ3036について
> http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/266/3/61.asp

ありがとうございます。上記プラウザには、「-1003:無効なAPIパラメータ」
とありましたが、すみませんが、いまいちピンとこないので、どういう事か
教えて頂けないでしょうか?
この他にエラーは「-1053、-1206」も出ています。

教えてください。

投稿時間:2003/04/01(Tue) 12:50
投稿者名:しんじ
Eメール:
URL :
タイトル:
エラートラップについて(コード)
ちなみにDAOのエラートラップはこんな感じで出来るようです。

Private Sub JetFunction()

    ' DAO でエラー処理を行う
    On Error GoTo ErrJet:
    
    Dim ws As DAO.Workspace, db As DAO.Database
    
    Set ws = DBEngine.Workspaces(0)
    
    Set db = ws.OpenDatabase("C:\My Documents\db1.mdb")
            
    ' 最適化処理 ...


    Exit Sub
ErrJet:

    Dim strMessage As String
    
    If DBEngine.Errors.Count > 0 Then
        ' データベース処理関連のエラーを取得
        Dim errX As Error
        For Each errX In DBEngine.Errors
           strMessage = strMessage & errX.Description & vbCrLf
        Next errX
    Else
        ' 通常のエラーメッセージを取得
        strMessage = Err.Description
    End If
    
    MsgBox strMessage, vbExclamation
    
End Sub

こんな感じですかね。
DBEngine.ErrorsコレクションをFOR〜EACHで
トラップすれば特にエラーコードを知る必要はないですよ。

投稿時間:2003/04/01(Tue) 18:02
投稿者名:よっし
URL :
タイトル:
Re: エラートラップについて(コード)
本当にありがとうございます。

この方向でやってみます。