
リストボックス、コンボボックスなら
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
access vba 開いていないフォームのプロパティを編集したい
Access(アクセス)
-
7
レコードを保存するコード アクセスvba
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS検索★ある文字を複数のフ...
-
Accessで、固定アルファベット+...
-
INSERT INTO ステートメントに...
-
Accessのフィールド数が255しか...
-
【Access】フォームで自動計算...
-
ACCESSで400以上のフィールドが...
-
Accessでテーブルの値をテキス...
-
アクセス メモ型 255文字...
-
SQLServer2005のSQL文での別名...
-
電話番号のデータの書式を変換...
-
ACCESS レーダーチャートのデー...
-
フィールドの平均の求め方について
-
主キーはオートナンバー型のID...
-
アクセス VBAで列の入れ替...
-
主キーの位置
-
フィールド数の多すぎる・フィ...
-
ACCESSで和暦を西暦に・・・
-
アクセスで複数行の一括入力す...
-
Accessで別途保存の画像ファイ...
-
accessのレポートで元になるテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Access】フォームで自動計算...
-
ACCESS検索★ある文字を複数のフ...
-
SQLServer2005のSQL文での別名...
-
ACCESSで400以上のフィールドが...
-
Accessのフィールド数が255しか...
-
INSERT INTO ステートメントに...
-
ACCESSでの改行コード
-
accessのレポートで元になるテ...
-
ACCESSでテーブルのチェックを...
-
ExcelのデータをコピーでACCESS...
-
Accessでテーブルの値をテキス...
-
主キーはオートナンバー型のID...
-
ACCESS VBAにてCSV...
-
ファイルメーカーでCountifの様...
-
アクセスのテーブルデータをCSV...
-
固有レコード識別子の選択とは??
-
ACCESSで和暦を西暦に・・・
-
Access 昇順・降順で並び替え...
-
アクセス A列コピー B列貼り...
-
フィールド数の多すぎる・フィ...
おすすめ情報