
Access2003 WinXP です。
フォームにサブフォームを置き、サブフォームのソースオブジェクトにクエリを参照しているデータシート形式のフォームを設定しています。
フォームに絞込み条件を選択するオプションボタン、表示するフィールドを選択するオプションボタンを配置し、
サブフォームへ表示するコマンドボタンを置いています。
この設定を選択した後コマンドボタンを押すと、クエリの中身を書き換えています。
で、実行すると、表示しない設定のフィールドには「Name?」という値が入ったフィールドがしっかり表示されてしまいます。
ソースオブジェクトにクエリ自体を設定すれば回避出来ますが、表示されたデータをダブルクリックするとその1レコードを表示する画面を更に開きたいと思っていますので、サブフォームにデータシート形式のフォームをセットするのがダブルクリックイベントを取得出来て良いかと思っています。
分かりにくい説明ですみません。
何か解決法を分かる方いらっしゃいましたら、お願いします。
No.1ベストアンサー
- 回答日時:
> データシート形式のフォームを
フォームでデータシート形式で表示する際には、テキストボックス名が項目となるようですので、
ベースのフォームを作る際にはフォームウィザードを使用し、表形式で作成すると、
テキストボックス名=フィールド名にしてくれます。
作る時には、全てのフィールドを表示するクエリから行います。
親フォームに配置したサブフォームコントロール名を「FSUB」と仮定します。
この「FSUB」に、自分(データシート形式のフォーム)が表示されているということにします。
データシート形式になると、制御はサブフォームコントロールのものとして扱います。
制御の中の ColumnHidden を使用します。
以下が処理例となります)
' 指定された名前が、レコードのフィールド名にあるか
' あれば False / なければ True
Private Function SetColumnVisible(sName As String) As Boolean
Dim fld As Field
SetColumnVisible = True
For Each fld In Me.RecordsetClone.Fields
If (fld.Name = sName) Then
SetColumnVisible = False
Exit For
End If
Next
End Function
' フォーム読み込み時
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Section(acDetail).Controls
Me.Parent.FSUB.Controls(ctl.Name).ColumnHidden _
= SetColumnVisible(ctl.Name)
Next
End Sub
※
フォームの「読み込み時」に、
詳細部分のコントロール名で、レコードのフィールド名にあるかチェックし、設定します。
Hidden と言っても、幅が0になるだけなので、
消えたと思った項目位置付近をいじると、ひょこひょこと出てきます。
※
Me.Parent.FSUB の記述は、自分の親のサブフォームコントロール名 としていますが、
Forms("親フォーム名").FSUB でも
Forms!親フォーム名.FSUB でも
※ テキストボックス名 <> コントロールソース名 なら
SetColumnVisible(ctl.Name) を SetColumnVisible(ctl.ControlSource) とすれば
対応できますが、データシートに表示される項目名は、テキストボックスの名前になります。
※ 表形式で作成したものでなければ、詳細部分にラベルが存在することがあるので、
処理対象のテキストボックスを識別するための工夫はしてみてください。
プロパティの タグ を使用するとか、、、
例えば、
連結しているテキストボックスを全部選択してから、タグ部分に REC と文字を入れて
これで判別すると、
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
If (ctl.Tag = "REC") Then
Me.Parent.FSUB.Controls(ctl.Name).ColumnHidden _
= SetColumnVisible(ctl.Name)
End If
Next
End Sub
判別する範囲を、フォーム全体(In Me.Controls)に広げても対応できます。
前の書き方 In Me.Section(acDetail).Controls は、詳細部分にあるものになります。
動かなかったら、ドンドン修正してください。
回答ありがとうございます!
ColumnHidden で制御出来るのですねーv
頂いたコードで動かして、でもオプションボタンによっては複数のフィールド全部を一括した意味の物もあったりしましたので
自分なりにアレンジして動くようになりました!
Excelへ出力もする事になり、見た目隠れてるだけでExcelに出ちゃったら困るなぁと出力してみたら、大丈夫でした。
やりたい事が実現出来ました。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
アクセスのフォームのビューが...
-
アクセスでテーブルの変更内容...
-
Accessのフォーム上にレコード...
-
Accessのフォームで作業領域を...
-
Accessのハイパーリンクのパス...
-
ADOでRecordsetオブジェクトを...
-
「メソッドまたはデータメンバ...
-
選択したチェックボックスのみ...
-
フォーム上のレコード数表示が...
-
Accessのフォーム画面について
-
Access フォーム コンボボックス
-
ACCESSでのテキストボックスの...
-
オートシェイプのような作図入...
-
accessにて生徒の成績処理
-
Formからの複数選択抽出条件に...
-
ACCESSでテーブルから選択,表示...
-
ACCESSで入力フォームをHTMLフ...
-
[至急]accessクエリ結果を入力...
-
accessフォームでのPDFファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
アクセスのフォームのビューが...
-
Accessのフォーム上にレコード...
-
選択したチェックボックスのみ...
-
Access 別フォームへの再クエ...
-
accessの自動更新処理をできな...
-
アクセスでテーブルの変更内容...
-
ACCESSで入力フォームをHTMLフ...
-
アクセスでの項目追加について...
-
Access フォーム上でコンボボッ...
-
Accessのフォームで作業領域を...
-
ADOでRecordsetオブジェクトを...
-
Access2002 フォームを閉じるた...
-
入力途中の入力した値をすべて...
-
「メソッドまたはデータメンバ...
-
Accessフォームのテキストボッ...
-
Accessのフォーム画面について
-
[至急]accessクエリ結果を入力...
-
ACCESSでのテキストボックスの...
-
他フォームのチェックボックス...
おすすめ情報