
リストボックス、コンボボックスなら
Private Sub Form_Open(Cancel As Integer)
With Form_フォーム1.リスト2
.RowSourceType = "Table/Query"
.RowSource = "SELECT テーブル.フィールド, FROM テーブル"
End With
End Sub
で結果を返すことは可能なのですが
フォームをデータシートとして
Private Sub Form_Load()
Me.RowSourceType = "Table/Query"
Me.RowSource = "SELECT テーブル.フィールド, FROM テーブル"
End Sub
とするのは不可能ですか?
これを実行すると
「コンパイルエラー
メソッドまたはメンバーが見つかりません」
となり、
「RowSourceType =」が選択されます。
そしてVBAの停止の意の四角ボタンを押すとユーザーフォームが図のようになります。
私のやりたいことは、クエリではなくVBAでSQL文を書き、データシートビューで表示させたいのですがやはり不可能でしょうか?
(変数を代入できるため)
何でもいいのでご教授よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No.2です。
> しかしデータが表示されないのです。
もしかしたらなのですが、フォームにテキストボックスなどを設置していないか、
設置したテキストボックスなどの『コントロールソース(ControlSource)』に
フィールド名を指定していない、ということはないでしょうか。
(リストボックス等では「列数(ColumnCount)」や「列幅(ColumnWidths)」等を
指定して表示列を規定したのに対し、フォームでレコードを表示する場合は、
フィールドに対応するコントロールを設置してやる必要があります)
以下、上記の推測の通りだった前提での回答になります。
(違いましたらご容赦のほど・・・)
コントロールソースは、テーブルのデザインビューでも設定できますし、VBAで
設定することもできます(なお、フォームのRecordSourceも同様)。
SQL文の切替により、表示するフィールドの名前も変わる場合はVBAで都度
変更、SQL文を切り替えても表示するフィールドの名前は同じ(表示レコードを
指定するWhere句のみの変更など)場合はデザインビューで設定、とするのが
効率的かと思います。
以下、VBAの場合(前回からの改修):
Private Sub Form_Load()
Me.RecordSource = "SELECT テーブル.フィールド FROM テーブル;"
txtフィールド.ControlSource = "フィールド"
End Sub
※テキストボックス名を「txtフィールド」とした場合です。
複数のフィールドを表示する場合は、その数だけテキストボックスを増やし、
同様にControlSourceへの代入を行います。
見事できました!
.仰るとおりテキストボックスなどコントロールを配置していませんでした。(そりゃできないわけですね)
できたときすごく感動しました!!!
本当に感謝です!再度ありがとうございます。
No.2
- 回答日時:
フォームにRowSourceやRowSourceTypeを適用するとご質問の
エラーになるのは、No.1の方も言われているように、
フォームがそのプロパティを持っていないためです。
で、SQLの結果をデータシートに表示させたいのでしたら、
フォームの「RecordSource」にSQL文を代入します。
Private Sub Form_Load()
Me.RecordSource = "SELECT テーブル.フィールド FROM テーブル;"
End Sub
※抽出したレコード自体を編集されたくない場合は、フォームの
プロパティシートで、『データ』タブの『レコードセット』を
「スナップショット」にしておいて下さい。
(「既存の編集は不可だけど新規追加は可」等としたい場合は、
『レコードセット』は「ダイナセット」とした上で、
その上の『更新の許可』~『データ入力用』の値を適当に
設定します。(『データ入力用』は起動時に新規レコードのみ
表示。詳細は、プロパティシートの当該部分にカーソルを
合わせた上でF1キーを押し、ヘルプを参照してみて下さい))
すいません、間違えてアップした画像削除してしまいました。。。
DexMachinaさまご回答ありがとうございます。
早速実行してみました!
しかしデータが表示されないのです。
一番左の横▲マークがある部分がレコード分しか表示されず、(テーブルは全部で1000行あり、フォームをあけるとデータはありませんが1000行まで見えます)列の再表示をしてもなにもありません。
しかし"SELECT テーブル.フィールド, FROM テーブル" をクエリのsqlビューに貼り付けて実行してもちゃんと表示されます。
なぜでしょう?
再度ご回答いただければ幸いです。
No.1
- 回答日時:
[Me] は、コードが書かれたフォームの意味です。
[Form_フォーム1.RowSourceType] と指定したのと同じ意味です。
フォームにはRowSourceTypeプロパティが無いのでエラーになったのでしょう。
操作する場所(コントロール)を指定してください。
Me.リスト2.RowSourceType =
ありがとうございます。
やはりフォーム上にコントロールを設置しないとだめそうですね。
「RowSourceType」をオブジェクトブラウザで確認したら
ComboBox 、.ListBox、ObjectFrameの3つのみでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
このQ&Aを見た人はこんなQ&Aも見ています
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
アクセス VBAで列の入れ替え データシートビュー
その他(Microsoft Office)
-
-
4
Accessで埋め込んだサブフォーム(データシート形式)でデータ追加ができない
Access(アクセス)
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
ACCESSのフォームで列固定?
Access(アクセス)
-
7
ACCESSで条件によってフォーム上のフィールドの色を変更
Access(アクセス)
-
8
ACCESS フォームでの、データシートビューで表示できない
Access(アクセス)
-
9
ADOでRecordsetオブジェクトをレコードソースに設定したい
その他(データベース)
-
10
AccessのDAO.ExecuteとDoCmd.RunSqlの違いについて
その他(データベース)
-
11
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
14
「RunSQL」と「Execute」の違い
Access(アクセス)
-
15
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
16
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
17
AccessVBA RecordSourceのリセットについて
Access(アクセス)
-
18
accessで該当するレコードがない場合
その他(プログラミング・Web制作)
-
19
Accessデータシートビューの行指定について
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
Accessのフィールド数が255しか...
-
フィールド数の多すぎる・フィ...
-
accessで重複を防ぎたい
-
アクセス エラーを数値「0」に...
-
Accessでテーブルの値をテキス...
-
ExcelのデータをコピーでACCESS...
-
ACCESS VBAにてCSV...
-
ACCESSでの連番作成
-
SQLServer2005のSQL文での別名...
-
ACCESSでの改行コード
-
空白も連結したい、あるいは複...
-
ACCESSのレポート印刷について
-
文字型フィールドの数値データ...
-
ACCESSで和暦を西暦に・・・
-
[ACCESS97]SQLの書き方
-
Accessで、固定アルファベット+...
-
アクセス A列コピー B列貼り...
-
ACCESSで400以上のフィールドが...
-
ファイルメーカーの繰り返しフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
Accessのフィールド数が255しか...
-
ACCESSで400以上のフィールドが...
-
SQLServer2005のSQL文での別名...
-
アクセス エラーを数値「0」に...
-
accessのレポートで元になるテ...
-
Accessでテーブルの値をテキス...
-
ACCESSでの改行コード
-
ACCESSでテーブルのチェックを...
-
ExcelのデータをコピーでACCESS...
-
ACCESS検索★ある文字を複数のフ...
-
Access 昇順・降順で並び替え...
-
アクセス メモ型 255文字...
-
アクセス A列コピー B列貼り...
-
【Access】フォームで自動計算...
-
ACCESSでオートナンバーを任意...
-
Access:リンクテーブルマネー...
-
ACCESS VBAにてCSV...
-
Accessで、固定アルファベット+...
-
主キーはオートナンバー型のID...
おすすめ情報