1

データ内の循環(またはカスケード)参照を防止しようとしていますが、それは時間の一部でしか機能していないようです。

Access 2007には、次の表があります。

create table mfr (
    mfr_id                 Autonumber,
    mfr_nm                 Text(255),
    mfr_is_alias_for_id    Long Integer
)

Excelから大量のデータをインポートしていますが、mfr_nmはワークシートの列の1つです。データがExcelに入力される方法を制御できないので、「本当に」同じものとして代替スペルをキャプチャする方法が必要です。これまでのところ、とても良いです(私は思います...)。

これで、このテーブルからフォームを作成しました。エイリアス用のComboBoxがあります。これも、これまでのところ、非常に優れています。ただし、このコードをBeforeUpdateイベントに追加すると、「興味深い」ものになります(エラー処理は省略されます)。

If Not IsNull(cboMfrAlias) Then
    If Not IsNull(DLookup("mfr_is_alias_for_id", "mfr", "mfr_id=" & cboMfrAlias)) Then
        MsgBox """Alias for"" must not also be an alias.", vbExclamation
        Cancel = True
    End If
End If

これは、フォームがフォームビューにある場合に期待するとおりに機能しますが、データセットビューにいる場合、MsgBoxの直後に、BeforeUpdate内のエラー処理ではキャッチされないAccess生成の「現在のレコードがありません」エラーが発生します。サブ。

このエラーをキャッチできますか?どこ?

4

2 に答える 2

2

ドロップダウン リストは、エイリアスであるエントリを除外する必要があります。つまり、ユーザーができない選択肢を表示しないでください。

これを行うには、mfr_is_alias_for_id が Null でない選択肢をドロップダウンから単純に除外します。

これをさまざまな形で実装しましたが、うまく機能します。

于 2010-11-05T22:54:42.867 に答える
0

ずっと前から、質問の「No Current Record」エラー部分に対処しています。Google で回答を確認したところ、このリンクが役に立ちました。ただし、集計クエリで厄介なバイナリ フィールドを変換するために NZ() を使用する代わりに、使用troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield])すると、エラーが解消されました。したがって、私の解決策は、私が見つけた元の回答の小さなバリエーションにすぎませんが、エラーを回避し、必要に応じてnullを保持できます...

于 2014-11-04T01:45:26.513 に答える