0

私は6つのフィールドを含むフォームに取り組んでいます。フォームを送信して新しいレコードを作成する前に、すべてに入力する必要があります。空白で表示されるように各フィールドがハードコードされたフォームをロードする代わりに、次を使用しました。

Private Sub Form_Load()

DoCmd.GoToRecord , , acNewRec
Me.Username = CreateObject("WScript.Network").Username

End Sub

これにより新しいレコードが開始されますが、ユーザーがフォームを終了せずに閉じると、不完全なレコードが作成されてスローされます。

ユーザーが不完全なフォームで閉じた場合、どうすればその行を削除できますか?または、ユーザーが送信し、すべてのフィールドが基準に一致した場合にのみ、新しいレコードを作成する必要がありますか?ここでのベストプラクティスは何ですか?

前もって感謝します。

4

2 に答える 2

3

最も簡単で効率的なオプションは、基になるテーブルのフィールド プロパティを適切に設定することです。 -プロパティを True に
設定し、 - プロパティを False に設定します。 プログラミングは不要で、後で構築する他のインターフェースにも適用されます。Required
Allow zero length

于 2013-01-14T15:21:00.213 に答える
2

テキストボックスの内容を設定する代わりに、フォームの読み込み時にデフォルト値を関連するユーザー名に設定します。

フォームを開いて、最初に追加することができます:

DoCmd.OpenForm "MyForm",,,,acFormAdd

参照: http: //msdn.microsoft.com/en-us/library/office/ff820845.aspx

次に、次のように内容がわかっているコントロールのデフォルト値を設定できます。

Private Sub Form_Load()
    Me.Username.DefaultValue = _
        """" & CreateObject("WScript.Network").Username & """"
End Sub

作成日などをテーブルデザインのデフォルト値として設定でき、すべてのユーザーに適用される一部のコントロールにデフォルト値を設定できるため、フォームデザインで設定できることを忘れないでください。

于 2013-01-14T14:46:03.877 に答える