2016-06-22 3 views
3

MS Accessでform_errorイベントを使用してエラーをキャッチしていますが、これはdataerr integerのみで、vbaエラーのような説明ではありませんが、MS Websiteは次のような説明イベントの:MS Accessでform_errorイベントに関する説明を返す方法

あなたは、対応するエラーメッセージ

に 番号をマッピングするためにError関数でDataErr引数を使用することができます。しかし、実際にこの例を与えるものではありませんし、私はよそれを理解するのに苦労している。

特定の状況では、サブフォームのレコードを更新しているフィールドもあれば、参照整合性ルールが破られるフィールドもあります。名前は、エラーが発生したフィールドに関する規範的なエラーメッセージを表示することを可能にします。

これを行う簡単な方法はありますか?

+0

'DBEngine.Errors'コレクションを試すことができます(これは' VBA.Err'オブジェクトとは別です)。https://msdn.microsoft.com/en-us/library/office/ff835711を参照してください。 aspx。 ODBCエラーに関する詳細情報を入手すると便利ですが、私はあなたのケースで役立つかどうかはわかりません。 – Andre

+0

私は様々な場所でこれをトリガしようとしましたが、コレクションは常に空です。コレクションは1つのデータベース内で作業するよりも外部データベースを開くことに関連しているようです。 –

答えて

1

は、通常、それはただの説明を取得するためにエラーに番号を渡すことです:

MsgBox Error(DataErr) 
+0

残念ながら、msgboxのアプリケーション定義またはオブジェクト定義エラー –

+1

サブ関数自体で実行しましたか?とにかく、私は一般的なエラーは次のとおりと考えています:[DataErr 2169 Customization] http://www.tek-tips.com/viewthread.cfm?qid=1080271 – Gustav

+0

はい、それはサブ機能で実行されています。あなたが提供するリンクは、上記のAVGの提案と同じ行に沿って、onエラーイベントではなくbefore updateイベントを使用していますが、参照整合性チェックを指していません。これが解決策であることはイライラするようです。私のコードで私が必要とするエラーの説明は、デフォルトのメッセージのところにありますが、それを扱う方法がないようです。 –

2

が不足しているものを使用して検証し、メッセージのすべてのユーザーを実行するために別の関数を作成します。フォームのbeforeupdateイベントでそれを実行し、必要に応じてイベントをキャンセルします。おそらく、あなたのform_errorの多くが削除されます。 form_errorイベントでは、同じ関数を呼び出すことができます。それは問題を発見した、デフォルトのメッセージを抑制する。ポップアップする他のエラーは、必要に応じて個別に処理できます。

+0

これはデータの欠落などは問題ありません。特に参照整合性を参照しています。それをチェックするために、私はDLookupルートを下りなければならないと信じていました。これは、アクセスのinbuiltテーブルリレーションシップ機能を回避するための多くの努力のようです。 –

+1

私はそれが理想的ではないことに同意しますが、AFAIK(あなたと私たち全員)が望むものは存在しません。データ入力にコンボボックスやリストボックスを使用している場合、ルックアップは最小限に抑える必要があります。 – AVG

+0

私は前のコメントも私の答えになると思います。ユーザー入力がrefを中断できる場合。完全性、任意の入力を許可しないでください、ユーザーがコンボボックスから選択することができます。 @HelloWorld – Andre

0

私は常に以下のコードパターンを使用して、ユーザーが適切なエラーメッセージを受け取り、その理由を理解するために私に伝えることができます。

Private Sub cmdSearch_Click() 
On Error GoTo Sub_Err 

    --Your code here--- 

'errors catching stuff 
Sub_Exit: 
    Exit Sub 
Sub_Err: 
    MsgBox Error$ 
    Resume Sub_Exit 
End Sub 

コードで使用するsubごとに同じことを使用してください。

+0

form_errorイベントに関連し、ボタンがクリックされておらず、エラー$がこの質問の場合は何も返しません、それはまさに問題です –

関連する問題