データシートサブフォームを含むMS Accessフォームがあります。
コードを使用して、さまざまな列のColumnHiddenプロパティを変更します。しかし、フォームを閉じると、データシートのテーブルのテーブル レイアウトを保存するかどうか尋ねられます。
- フォームがユーザーにテーブル レイアウトを継続的に変更するように要求しないようにするにはどうすればよいですか?
- データシートを通常のサブフォームに変更するしかないのでしょうか?
常に同じ列を非表示にしている場合は、表示する列のみを含むクエリを作成し、それをサブフォームのソースとして使用します。
それでもいくつかの非表示フィールド(子キーなど)が必要な場合は、通常のフォームを作成する必要があります。それほど悪くはありません:
Accessはフォームを使用して多くのプロパティを保存するため、これを行う簡単な方法があるかどうかはわかりません。データセットビューを使用していない場合は、フォームの[閉じる]ボタンを非表示にし、コマンドボタンに置き換えて、次のコードでフォームを閉じることができます。
DoCmd.Close acForm, Me.Name, acSaveNo
しかし、それはデータシートなので、それはできません。
バインドされていない親フォームにサブフォームとしてデータシートを埋め込もうとするかもしれませんが、親フォームのコマンドボタンの後ろにある上記のコードを使用すると、埋め込まれたサブフォームに列幅が保存されるかどうかはわかりません。
1つの解決策は、データシートのOnLoadイベントで列幅を再初期化することです。次に、acHiddenを使用してフォームを開き、OnLoadイベントで、列幅を正しい値に設定します(1440を掛けて、列幅プロパティに割り当てるtwips値を取得します)。 OnLoadの終わりで、Me.HiddenをFalseに設定します。
しかし、それは確かに、お尻の痛みのようなものです。
エンドユーザーのUIデータを保存しない閉じるコマンドボタンを定義する方法がないため、データシートを使用することの欠点の1つだと思います。