2016-09-27 4 views
2

私は、個人的な使い方のための簡単なMS-Accessタスク追跡アプリケーションを取り上げようとしています。私の基本的なデータモデルは、タスク定義テーブル(私は毎日のタスクを定義することができます)とタスク結果テーブル(私はどのタスクを実行したかを特定の日に追跡できます)です。タスクタイプに基づいてチェックボックス、ラジオボタングループ、またはリストボックスを表示するフォームが必要です

私は、各タスクの横のすべての毎日の時刻、各タスクの属性)によってソートされたタスク(、および
2)を一覧表示ウィジェットを表示する
1)フォームを構築しようとしている

タスクを完全なものとしてマークすることができます。

ここでは擦れがあります。

  • シンプルはい(単一のチェックボックスウィジェットが動作することになるため)/いいえタスク私はどのようにうまく追跡することができるよう
  • スコア可能なタスク:私は、タスクの3(よりを追加することも)異なる種類を持っています
  • いくつかのyes/noサブタスク(複数の選択リストボックスが収まる)からなる "複雑な"タスクが実行されます(ラジオボタングループに適合する)。

フォームを構築してすべてのタスクを希望の順序で表示するようにしましたが、(条件付き)データ入力ウィジェットをコーディングする方法が100%不安定です。個々のウィジェットを個別に実装するのに問題はありませんでしたが、私の最善の努力は、チェックボックス、ラジオグループ、またはリストボックスだけのタスクリストです。私はフォームに各タスクのタイプを "見て"見て、その横に適切なウィジェットを表示する方法を知らない。

私はタオルを投げ込み、すべてのタスクを適切なウィジェットと共に固定された順序でフォームにハードコードするだけです。よりエレガントな方法でこれを実装する方法はありますか?

[脇の下]私はMS-Accessフォームをやや恣意的に選択しましたが、私が行ったようにMS-Accessフォームを学習しています。誰かが私が仕事のために間違ったツールを選んだことで悩んでいると感じたら、私に知らせてください。

+1

これを行うには、VBAが必要です。 3つのコントロールをすべて同じ行に追加します(おそらくお互いの上に表示されます)。すべてのプロパティを "visible = no"に設定します。次に、VBAコードを作成して、各行でどのコントロールを表示するかを決定します。それを行う方法は、あなたの構造にもう少し依存します。開いているタスクやサブフォームを表示するために連続フォームを使用していますか?私はこれが連続フォームを使用せずに可能であるかどうかはわかりませんが、私はしばしば間違っています。あなたのフォームの構造の説明を追加して、私たちがそれを働かせるのを助けることができると確信しています。 – MoondogsMaDawg

+0

関連性は不十分です:http://stackoverflow.com/questions/20669839/make-fields-visible-in-ms-access-form-as-certain-fields-are-completed – MoondogsMaDawg

+1

サブフォーム(parent =日付、子=その日付のタスク)が含まれますが、関連する部分(タスクのリスト)はサブフォーム内の連続した形式です。私のデータベース設計/モデリングの背景については、「目に見える=いいえ」の角度を考えすぎないように、自分自身を打ちのめすことはありません。しかし、私がそれを読むとすぐに、私は間違った質問をしていることに気付きました。「どのように表示するか」を表現するのではなく、「表示しないように伝える方法」です。私は私のベルトの下に小さなVBAを持っています。今夜はいくつか試してみて、それがうまくいくかどうかを更新します。 – KevinKirkpatrick

答えて

2

コメントに元の質問に解決されているように、連続的なフォームの限界があるようです。 Accessは連続フォームの各列をアトミック要素として扱うため、プレゼンテーションを区別するためのオプションはほとんどありません。閉じることができる唯一のツールは条件付き書式設定であり、フィールドを選択的に隠す/表示する最も近い方法は、テキストカラーを使用してテキストボックスのフィールドを非表示にして、バックグラウンドカラーに「カモフラージュ」することです。

この制限は、潜在的な回避策につながります。

目的を要約すると:ある日のうちに、私は[テーブル駆動型]のタスクセットをリストしたいと思います。各タスクには、「はい/いいえ」、「N個の選択肢の1つを選択する」、または「N個の選択肢のうち0〜N個を選択する」というオプションがあります。タスクのタイプに応じて、それぞれ単一のチェックボックス(はい/いいえ)、ラジオボタングループ(1つを選択)、またはチェックボックスグループ(多くを選択)としてレンダリングする必要があります。

(余談:私はこれを入力すると、私は第1のタイプは本当に第三のタイプのサブクラスであることを、実感が、それは本当に問題の核心は、離れて行くことはありません)

提案アイデア:

フォームが起動されるときに、どのタスクがどの位置に正確に入るかを正確に示すクエリを実行できます。言い換えれば、今日のタスクを「描画」する前に、データベースは、どのタスクがポジション1にあるか、ポジション2にあるかなどを答えることができます。さらに、私は20以上のタスクが決して存在するとは限りません(ただし、実際のタスク数は変わる可能性があります)。

私は20のスロットを持つフォームを設計し、各スロットに3つのオーバーレイされたプレゼンテーションがあります:はい/いいえのタスク、1つのタスクを選択するタスク、 "多くのタスクを選択"タスク。 (60合計 - 恐ろしいが、私はコピー/ペーストが救助に来ることを期待したい)。

Accessがフォームをレンダリングするとき、各スロットはその日の「n番目」のタスクを照会します(最初のスロットは最初のタスクを照会し、2番目のタスクは2番目のタスクを照会します)。 「可視」オプションは、クエリによって返されたタスクのタイプに一致するプレゼンテーションに対してのみ「はい」に設定されます。したがって、3番目のタスクを照会する3番目のスロットが「はい/いいえ」のバラエティのタスクを受け取った場合、「はい/いいえ」のプロンプトだけが表示されます。

私のアプリケーションの実用バージョンは既にあります(&は、タスクが "pick one"または "pick many"というラベルが付いているかどうかチェックしています)。この新しいアプローチがうまくいかないと思う理由があれば、実際に開発する前にそれを聞いて嬉しいです。

+0

これは動作するはずです。もちろん、バインドされていないフォームなので、データのロードと保存はすべてコード化する必要があります。 - [CreateControl](https://msdn.microsoft.com/en-us/library/office/ff836740.aspx)をデザインビューで開いた状態で使用すると、これらのコントロールをすべて作成できます。たとえば、名前を付けてください。 'optGrp1' ..' optGrp20'を使って、コントロールをループすることができます。これを使用することを強くお勧めします。異なるレイアウト(例えば、5x4ではなく4x5)以上のコントロールが必要な場合は、いくつかの定数を変更して再度実行させることができます。 – Andre

+0

意味があります - チップのおかげで; CreateControlは、20x3の可能なコントロールを手動で描画するよりもはるかに魅力的ですね。これは「余分な時間」のプロジェクトなので、より多くの日数が引き出される可能性がありますが、それがうまくいくと答えを更新/受け入れます – KevinKirkpatrick

関連する問題