4

データシートサブフォームを含むMS Accessフォームがあります。 コードを使用して、さまざまな列のColumnHiddenプロパティを変更します。しかし、フォームを閉じると、データシートのテーブルのテーブル レイアウトを保存するかどうか尋ねられます。

  • フォームがユーザーにテーブル レイアウトを継続的に変更するように要求しないようにするにはどうすればよいですか?
  • データシートを通常のサブフォームに変更するしかないのでしょうか?
4

2 に答える 2

2

常に同じ列を非表示にしている場合は、表示する列のみを含むクエリを作成し、それをサブフォームのソースとして使用します。

それでもいくつかの非表示フィールド(子キーなど)が必要な場合は、通常のフォームを作成する必要があります。それほど悪くはありません:

  • あなたのテーブルに基づいてください
  • 列をフォームにドラッグします(フォーマット、配置は関係ありません)
  • データシートビューに設定します
  • ラベルを編集します(これらは列見出しになります)
  • タブの順序を変更します(これにより、列が表示される順序が制御されます)
  • データシートを表示し、必要な列を非表示にします
  • フォームを保存する
  • このフォームをサブフォームとしてメインフォームに追加します
于 2008-11-05T20:21:40.693 に答える
0

Accessはフォームを使用して多くのプロパティを保存するため、これを行う簡単な方法があるかどうかはわかりません。データセットビューを使用していない場合は、フォームの[閉じる]ボタンを非表示にし、コマンドボタンに置​​き換えて、次のコードでフォームを閉じることができます。

  DoCmd.Close acForm, Me.Name, acSaveNo

しかし、それはデータシートなので、それはできません。

バインドされていない親フォームにサブフォームとしてデータシートを埋め込もうとするかもしれませんが、親フォームのコマンドボタンの後ろにある上記のコードを使用すると、埋め込まれたサブフォームに列幅が保存されるかどうかはわかりません。

1つの解決策は、データシートのOnLoadイベントで列幅を再初期化することです。次に、acHiddenを使用してフォームを開き、OnLoadイベントで、列幅を正しい値に設定します(1440を掛けて、列幅プロパティに割り当てるtwips値を取得します)。 OnLoadの終わりで、Me.HiddenをFalseに設定します。

しかし、それは確かに、お尻の痛みのようなものです。

エンドユーザーのUIデータを保存しない閉じるコマンドボタンを定義する方法がないため、データシートを使用することの欠点の1つだと思います。

于 2008-11-07T04:43:56.530 に答える