Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1317 / 2272 ツリー ←次へ | 前へ→

【7742】フォーム上でのフィルターの結果を使いたい ymym 06/4/21(金) 18:14 質問[未読]
【7746】Re:フォーム上でのフィルターの結果を使い... 小僧 06/4/22(土) 1:43 回答[未読]
【7747】連結フォームのフィルターの結果をデータと... ymym 06/4/22(土) 11:18 質問[未読]
【7749】Re:連結フォームのフィルターの結果をデー... 小僧 06/4/22(土) 23:32 回答[未読]
【7750】DoCmd と ADO の関係 ??? ymym 06/4/23(日) 11:13 お礼[未読]
【7751】Re:DoCmd と ADO の関係 ??? 小僧 06/4/23(日) 22:15 回答[未読]
【7752】ありがとうございます。 ymym 06/4/24(月) 0:00 お礼[未読]

【7742】フォーム上でのフィルターの結果を使いたい
質問  ymym  - 06/4/21(金) 18:14 -

引用なし
パスワード
   こんにちは。VBA超初心者です。

フォーム上のデータをフィルターで絞込み、結果をテーブルとして保存したいのですが、可能でしょうか?

【7746】Re:フォーム上でのフィルターの結果を使い...
回答  小僧  - 06/4/22(土) 1:43 -

引用なし
パスワード
   ▼ymym さん:
こんばんは。

>フォーム上のデータをフィルターで絞込み、
>結果をテーブルとして保存したいのですが、可能でしょうか?

ちょっと質問が漠然としていて、
はっきりした回答が付けにくいと思われます。

もし ymymさんのフォームが非連結フォームであるのでしたら
フィルタを掛ける、というのにも工夫が必要になりますし
データをテーブルに保存するにしても VBA の知識が必要となります。

フィルタが掛けられる、という事ですので恐らく連結フォームだと思うのですが、
その場合はフィルタの条件を SQL の Where句 としてテーブルから読み出す事が可能です。

Accessに限らずデータベースにおいては上記のように常に取り出せる
データの場合は、わざわざテーブルを作らないのが一般的ですね。
(もちろんテーブルを作成する事も可能ですが…。)

【7747】連結フォームのフィルターの結果をデータ...
質問  ymym  - 06/4/22(土) 11:18 -

引用なし
パスワード
   お返事ありがとうございました。

>フィルタが掛けられる、という事ですので恐らく連結フォームだと思うのですが、
>その場合はフィルタの条件を SQL の Where句 としてテーブルから読み出す事が可能です。
>

ご指摘のとおり、連結フォームのデータでフィルターをかけ、その結果をデータとして出力したいので、一時的にテーブルを作って保存すれば・・・と考えています。

お答えのWHERE句の取り方を教えていただけますか?

よろしくお願いします。

【7749】Re:連結フォームのフィルターの結果をデー...
回答  小僧  - 06/4/22(土) 23:32 -

引用なし
パスワード
   ▼ymym さん:
こんばんは。

>WHERE句の取り方を教えていただけますか?

提示されている情報が少ないので必ずしもうまく行くとは限りませんが、
フォームのレコードソースがテーブル名(クエリ名)であれば
フォームヘッダにでもコマンドボタン「cmd出力」を配置して
コードを実行させて見てください。

Private Sub cmd出力_Click()
Const TName = "T_Temp"
Dim strSQL As String

  If DCount("*", "MsysObjects", "Name = '" & TName & "'") > 0 Then
    DoCmd.DeleteObject acTable, TName
  End If

  strSQL = "SELECT * " _
     & " INTO " & TName _
     & " FROM " & Me.RecordSource _
     & " WHERE " & Me.Filter

  DoCmd.RunSQL strSQL

End Sub


>その結果をデータとして出力したい

どこに出力したい(画面?印刷?Excel等他のアプリケーション?)にもよりますが、
殆どの場合はテーブルを作らなくてもクエリで解決できると思いますよ。

【7750】DoCmd と ADO の関係 ???
お礼  ymym  - 06/4/23(日) 11:13 -

引用なし
パスワード
   小僧さん、早速のお答えありがとうございました。

こちらの希望するとおりのテーブルが作成できました。
ありがとうございます。 

ところで、質問があるのですが・・・。
よろしいでしょうか?

私はつい最近VBAを学習し始めたのですが、
ネットワークで使うことを前提としてアクセスを学習しています。

その際、ADOとDocmdはどういう関係になるのか、
よくわかっていません。

データを読み込んだり、DBを作成するさいに
ADOで接続?をし、読み込んだ後の操作全般は
Docmdを使えば良いと考えてもいいのでしょうか?

(使用しているPCが1台だけで、ネットワーク上での
動作確認ができない状況です)

【7751】Re:DoCmd と ADO の関係 ???
回答  小僧  - 06/4/23(日) 22:15 -

引用なし
パスワード
   ▼ymym さん:
こんばんは。

>ネットワークで使うことを前提としてアクセスを学習しています。

他のサイトではありますが、
先ほど似たような回答をしていますので
下記リンクを参考になさって下さい。
(質問はちょっと違いますが、当方の回答部分をご覧になってください)

http://www.accessclub.jp/bbs2/wforum2.cgi?mode=allread&no=25061&page=0


>その際、ADOとDocmdはどういう関係になるのか、
>よくわかっていません。

全く別物…と考えて頂いて結構だと思います。

Docmd オブジェクトは
フォームやテーブルの作成、印刷やAccessの終了など、
Accessの機能を使う際に使われます。

ADO は Access と Accessの中にあるデータベースのコアな部分
(Microsoft Jet)との間を取り持つライブラリです。
自MDBだけでなく、他MDBやAccess以外のデータベースに接続する際に使われます。

前回提示させて頂いた例は SQL という言語を使っていますが
この SQL を実行するに当たって、

・DocmdオブジェクトのRunSQLメソッド
・ADOのConnectionオブジェクトのExecuteメソッド

の両方で実行する事が可能です。

両者の違いは多々ありますが、
SQLを発行する際により細かい設定をしたい場合は
Executeメソッドを使う方が良いかと思われます。

【7752】ありがとうございます。
お礼  ymym  - 06/4/24(月) 0:00 -

引用なし
パスワード
   当方のかなりアバウトな質問にも
わかりやすく、きめ細かなご説明をありがとうございました。

正直、こんなに丁寧に教えていただけるなんて考えておらず、
とても勉強になりました。

これからもよろしくお願いいたします。

1317 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free