2012-02-19 12 views
0

Access 2010にはもう存在しない古いActiveXカレンダーコントロールの複製であるサブフォームを含む予約システムにフォームがあります。 1つの特定の用途は、新しい予約を作成することである。これは、フォームが新しいレコードに「座っている」ことを意味します。しかし、私はすべてのデータが適切に検証されるまで、そのレコードを書いてほしくない。メインフォームの更新を引き起こすサブフォームのクリックを防止する方法

しかし、私はちょっとしたことがあります。ユーザーが新しい日付を選択するためにカレンダーをクリックすると、私のマスターはBefore_Updateイベントを発生させ、Accessがフォームの内容を保存しようとしていることを示します。私が言ったように、私は準備が整う前にそれが起こることを望んでいません。だから私はフォームにfalseに初期化された非表示の目に見えないチェックボックスを追加しました。更新前イベントでは、それが真であるかどうかをチェックし、そうでない場合は更新をキャンセルします。

これは、予定表のサブフォームがイベントの一部を受信できなくなっているようです。日はラベルで表され、それらは発射されます。前と次の月のような大きなイベントは小さなボタンです。彼らはまったく発砲しない。

私は、サブフォームとしてアプリケーション内の他の場所で使用され、その場所でイベントが正常に機能するため、カレンダーは機能することがわかりました。

私の質問はそうです。私は準備が整う前に新しいレコードを作成しないように、このフォームとサブフォームの組み合わせを使用する方法がありますか?

答えて

1

これは、アクセスがデフォルトで動作する方法とは異なります。私が認識している唯一のオプションは、手動でレコードをロードして保存することです。つまり、oncurrentイベントでバインドされていないすべてのテキストボックスなどを手動でテキストボックスに入力します。テキストボックスからのデータをテキストボックスにコピーして、目に見えないバインドされたテキストボックスにコピーして、手動でレコードを保存するとき

+0

これは最も簡単な方法でしたが、うまくいきました。 – akc42

0

サブフォームがフォーカスを取得すると、メインフォームが更新されます。私は過去に、新しいレコードのためにポップアップフォームを使用するのが便利であることを発見しました。その後、データを両方のフォームに追加することができます。

+0

既存のアプリケーションであり、複雑な議論なしにユーザーインターフェイスを大幅に変更することはできません。 – akc42

+0

@ akc42バインドされていない連続したサブフォームを作成することはできず、バインドされていないデータに依存するフォームは、レコードセットから抽出するコードによってフォームに書き込まれます。非公式のフォームは、私にとってかなり根本的な変化のように見えます。次のレコードに移動するだけで、いくらかのことをするつもりです。 – Fionnuala

0

おそらく、組み込みの日付ピッカーを使用することをお勧めします。前述のように、カレンダーをポップアップして日付を選択し、フォームから呼び出し元のコードに値を返すようにするダイアログフォームを使用しています(これにより、任意の日付コントロールで機能する「一般的なルーチン」を作成できます)。

これらのアプローチは、この問題を救うの周りになります。ただし、サブフォームにメインフォームから行くときのアクセスは、常に自動記録を保存している述べたように。それは+生成保存するこれはPKのオートナンバー型のキーを強制的に行います。残念ながら、この

+0

残念ながら私はできません。クライアントにAccess 2000がインストールされていて、それを更新していません。 – akc42

関連する問題