![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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を見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
Access2002 フォームを閉じるた...
-
Access:サブフォームにクエリ...
-
「メソッドまたはデータメンバ...
-
Accessのフォーム上にレコード...
-
Access 別フォームへの再クエ...
-
テキストボックスの値をテーブ...
-
accessの自動更新処理をできな...
-
ACCESSで入力フォームをHTMLフ...
-
アクセスでテーブルの変更内容...
-
選択したチェックボックスのみ...
-
ACCESS フォームにデータ入力で...
-
アクセスのフォームのビューが...
-
Access2000 テキストボックス...
-
ACCESSの表形式で、レコードを...
-
ACCESS レポートへの表示・非表示
-
Accessで現金出納簿を作りたい...
-
access レコードソースを選択...
-
入力途中の入力した値をすべて...
-
ACCESSでのテキストボックスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
Accessのフォーム上にレコード...
-
選択したチェックボックスのみ...
-
アクセスでテーブルの変更内容...
-
アクセスのフォームのビューが...
-
accessの自動更新処理をできな...
-
Access 別フォームへの再クエ...
-
Accessフォームのテキストボッ...
-
ACCESSで入力フォームをHTMLフ...
-
「メソッドまたはデータメンバ...
-
帳票フォームに全レコードを表...
-
テキストボックスの値をテーブ...
-
アクセス 0以外をカウントす...
-
テキストボックス(アクセス)内...
-
Access2002 フォームを閉じるた...
-
アクセスでの項目追加について...
-
Access フォーム上でコンボボッ...
-
Accessのフォームで作業領域を...
-
入力途中の入力した値をすべて...
-
ACCESSの表形式で、レコードを...
おすすめ情報