アプリ版:「スタンプのみでお礼する」機能のリリースについて

リストボックス、コンボボックスなら

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文を書き、データシートビューで表示させたいのですがやはり不可能でしょうか?
(変数を代入できるため)


何でもいいのでご教授よろしくお願いします。

※添付画像が削除されました。

A 回答 (3件)

[Me] は、コードが書かれたフォームの意味です。


[Form_フォーム1.RowSourceType] と指定したのと同じ意味です。
フォームにはRowSourceTypeプロパティが無いのでエラーになったのでしょう。

操作する場所(コントロール)を指定してください。

Me.リスト2.RowSourceType =
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはりフォーム上にコントロールを設置しないとだめそうですね。
「RowSourceType」をオブジェクトブラウザで確認したら
ComboBox 、.ListBox、ObjectFrameの3つのみでした。

お礼日時:2009/03/29 19:37

フォームにRowSourceやRowSourceTypeを適用するとご質問の


エラーになるのは、No.1の方も言われているように、
フォームがそのプロパティを持っていないためです。

で、SQLの結果をデータシートに表示させたいのでしたら、
フォームの「RecordSource」にSQL文を代入します。

Private Sub Form_Load()
 Me.RecordSource = "SELECT テーブル.フィールド FROM テーブル;"
End Sub


※抽出したレコード自体を編集されたくない場合は、フォームの
 プロパティシートで、『データ』タブの『レコードセット』を
 「スナップショット」にしておいて下さい。
 (「既存の編集は不可だけど新規追加は可」等としたい場合は、
  『レコードセット』は「ダイナセット」とした上で、
  その上の『更新の許可』~『データ入力用』の値を適当に
  設定します。(『データ入力用』は起動時に新規レコードのみ
  表示。詳細は、プロパティシートの当該部分にカーソルを
  合わせた上でF1キーを押し、ヘルプを参照してみて下さい))
    • good
    • 1
この回答へのお礼

すいません、間違えてアップした画像削除してしまいました。。。

DexMachinaさまご回答ありがとうございます。
早速実行してみました!
しかしデータが表示されないのです。
一番左の横▲マークがある部分がレコード分しか表示されず、(テーブルは全部で1000行あり、フォームをあけるとデータはありませんが1000行まで見えます)列の再表示をしてもなにもありません。

しかし"SELECT テーブル.フィールド, FROM テーブル" をクエリのsqlビューに貼り付けて実行してもちゃんと表示されます。
なぜでしょう?
再度ご回答いただければ幸いです。

お礼日時:2009/03/29 23:54

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への代入を行います。
    • good
    • 1
この回答へのお礼

見事できました!
.仰るとおりテキストボックスなどコントロールを配置していませんでした。(そりゃできないわけですね)
できたときすごく感動しました!!!
本当に感謝です!再度ありがとうございます。

お礼日時:2009/03/31 00:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A