リストボックス、コンボボックスなら
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Access サブフォームでの選択行の取得
その他(データベース)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
-
4
ACCESS VBAサブフォーム(DATA SHEET)の値の取得方法
Visual Basic(VBA)
-
5
ACCESS フォームでの、データシートビューで表示できない
Access(アクセス)
-
6
「RunSQL」と「Execute」の違い
Access(アクセス)
-
7
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
8
ADOでRecordsetオブジェクトをレコードソースに設定したい
その他(データベース)
-
9
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
10
Accessデータシートビューの行指定について
その他(プログラミング・Web制作)
-
11
レコードセットで得た結果をサブフォームに出力したい
その他(データベース)
-
12
ACCESSでコントロールソースの変更
Access(アクセス)
-
13
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
14
【Access】サブフォームのソースオブジェクトを入れ替えたい
Access(アクセス)
-
15
Access サブフォームのレコードソースを変更するには
Access(アクセス)
-
16
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
17
ACCESSでコンボボックスにSQLで抽出した値を表示したい
その他(データベース)
-
18
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
19
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
20
access vbaにてテンポラリーテーブルが作りたいです。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセス メモ型 255文字...
-
accessで重複を防ぎたい
-
INSERT INTO ステートメントに...
-
ACCESSで400以上のフィールドが...
-
Access 昇順・降順で並び替え...
-
アクセス エラーを数値「0」に...
-
IT用語について質問です。 以前...
-
Accessでテーブルの値をテキス...
-
Accessで、固定アルファベット+...
-
固有レコード識別子の選択とは??
-
通貨型で\\0の時、何も表示しな...
-
SQLServer2005のSQL文での別名...
-
アクセスで複数行の一括入力す...
-
ACCESS.ルックアップの値以外...
-
【Access】フォームで自動計算...
-
ACCESSでオートナンバーを任意...
-
アクセス A列コピー B列貼り...
-
フィールド数の多すぎる・フィ...
-
ACCESSDBで、NULLデータをすべ...
-
主キーの位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSで400以上のフィールドが...
-
ACCESSでの改行コード
-
INSERT INTO ステートメントに...
-
accessのレポートで元になるテ...
-
アクセス エラーを数値「0」に...
-
ExcelのデータをコピーでACCESS...
-
Access 昇順・降順で並び替え...
-
Accessで、固定アルファベット+...
-
accessで重複を防ぎたい
-
ACCESSで和暦を西暦に・・・
-
アクセス VBAで列の入れ替...
-
SQLServer2005のSQL文での別名...
-
ACCESS2000「定義されているフ...
-
主キーはオートナンバー型のID...
-
ACCESSでオートナンバーを任意...
-
ACCESSでテーブルのフィールド...
-
アクセス A列コピー B列貼り...
-
IT用語について質問です。 以前...
おすすめ情報