CommError イベントは、広範囲にわたって使用する必要があります。可能性のあるエラーすべてに特別な処理が必要なわけではありませんが、長期間にわたってクライアントの満足を得るためには次のことが重要です。それは、アプリケーションに関連するエラーが発生したときに、そのエラーとエラーの解決のためにアプリケーション内で実行が必要な手順を、画面上で説明することです。
CommError には 4 つのパラメーターがあります。そのうちの 1 つは、ユーザーが設定することができます。最初のパラメーターの
bCanRecover はブール型で、エラーが回復可能かどうかを示します。2 番目のパラメーターの
wsaeErrCode には、該当するエラーの WinSock エラー コードが入ります。3 番目のパラメーターの
errorString には、エラーの説明が入ります。最後に、4 番目のパラメーターの
bReTry では、クライアントとサーバー間の通信の再確立を試行する必要があるかどうかを、アプリケーションを使って設定することができます。最初のパラメーターの
bCanRecover が
False の場合、
bReTry の設定は無効になります。
このイベントは、AutoLogon プロパティが
False に設定されているときにのみ発生します。このイベントにはアプリケーションから設定する必要のある 3 つの文字列パラメーター、
user、
password、および
database_set があります。Logon イベントが発生し、イベントからの情報が Logon 成功というものではなかった場合、CanRecover パラメーターが
True に設定された
CommError イベントが発生します。再度ログオンを試行する場合は、Retry パラメーターを
True に設定します。これにより、ActiveX によって Logon イベントがもう一度発生します。
AutoLogon が
False の場合、このイベントのハンドラーでは、処理から抜け出すメカニズムを用意しておくことが必要です。そうしないと、無限ループが発生する可能性があります。
このイベントは、ActiveX コントロールが IDS サーバーとの接続を試みる前、または指定されたパスをローカルな場所に解決できなかった場合に発生します。このイベントにはブール型の goRemote と、文字列の
newLocation の2 つのパラメーターがあります。ブール型の
goRemote は、ActiveX が IDS サーバーとの接続を試行するかどうかを示します。これは
DDFPath または
Location プロパティがリモート アドレスに解決されたときに発生します。
goRemote が
True か
False かに応じて、
DDFPath または
Location が以下の条件のうちの 1 つを満たす場合に、そのような解決が生じます。
newLocation には解決されたパスが入ります。
DdfPath または
Location で指定されている場所が IDSHOSTS ファイルを使用して解決された場合、
newLocation には完全パスが入ります。
newLocation と
goRemote は参照によって渡されるため、ユーザーはパスを変更したり、ActiveX に IDS サーバーとの接続の試行を続けるか中止するかを指示することができます。
Reposition イベントは、レコード オペレーションが VAccess コントロールによって参照された現在のレコードを変更した後に発生します。このイベントは、VAccess コントロールに関連付けられている現在のレコードが変更されたことをプログラムに通知します。新しいレコードが現在のレコードになった後にこのイベントが発生します。
OpCode は、実行される PSQL API オペレーションのコードに相当します。このコードをほかのオペレーション コードに設定すると、実行されるオペレーションが変わります。このコードをゼロに設定すると、オペレーションがキャンセルされます。
InsertRecord または
UpdateRecord のどちらかを
True に設定すると、
OpCode で指定されたオペレーションを実行する前に、設定に応じて現在のレコードが挿入または更新されます。このイベントに応答して、関連する VAccess コントロールを使用して
Btrv 関数を呼び出したり、VAccess コントロールのレコード オペレーション プロパティを設定したりしないでください。無限のループに陥ったり、ほかの予期しない結果を引き起こすことがあります。