Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8 : Access 2003)
select caceでの複数条件分岐とExcel出力
投稿日時: 19/04/08 21:34:24
投稿者: namidaneko

フォームの中に、テキストボックス、オプションボタン、検索ボタンがあります。
テキストボックス→検索ワード入力
オプションボタン→抽出するクエリを分岐
検索ボタン→検索の実行
(オプションボタンはselect caceで分岐させています)
 
検索ボタンを押すことによって、
select caceで分岐し、テキストボックスで抽出した内容をExcelに出力したいのですが、
うまくいきません。
select cace〜とDoCmd.TransferSpreadsheet acExportは併用できないのでしょうか。
 
オプションボタンで分岐させ、
検索ボタンは一つでいきたいです。
なにか方法があれば教えてください。
よろしくお願い致します。

回答
投稿日時: 19/04/09 09:18:24
投稿者: sk

引用:
検索ボタンを押すことによって、
select caceで分岐し、テキストボックスで抽出した内容をExcelに出力したいのですが、
うまくいきません

・何がどう「うまくいかない」のか。
 (あるステートメントが実行されようとした際に
 何らかの実行時エラーが発生した、あるクエリの
 ワークシート変換を行なった際の出力結果が
 意図した通りにならない等)
 
・具体的にどのようなコードを記述したのか。
 (文章で説明されただけではコードの添削のしようがない)
 
引用:
フォームの中に、テキストボックス、オプションボタン、検索ボタンがあります。
テキストボックス→検索ワード入力
オプションボタン→抽出するクエリを分岐
検索ボタン→検索の実行
オプションボタンはselect caceで分岐させています

基本的には 2 つ以上のオプションボタンを子コントロールとする
オプショングループの値に応じて分岐なさればよいはず。

回答
投稿日時: 19/04/09 18:08:37
投稿者: Suzu

引用:
select caceで分岐し、テキストボックスで抽出した内容をExcelに出力したいのですが、
うまくいきません。
select cace〜とDoCmd.TransferSpreadsheet acExportは併用できないのでしょうか。

 
Select Case と、 Docmd.〜〜 併用できます。
 
クエリはパラメータークエリですか?その場合、クエリのSQLはどうなっていますか?
 
クエリ1(フィールド1はテキスト型 あいまい検索)
SELECT * FROM テーブル1 WHERE フィールド1 LIKE "*" & [Forms]![フォーム名]![テキストボックス] & "*"
 
クエリ2(フィールド2は数値型 一致検索)
SELECT * FROM テーブル2 WHERE フィールド2 = [Forms]![フォーム名]![テキストボックス]
 
として。
 
 
Sub 検索ボタン_Click()
  Select Case Me![オプショングループ]
    Case 1
      DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "クエリ1", "エクスポート先ファイル名"
    Case 2
      DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "クエリ2", "エクスポート先ファイル名"
  End Select
End If
 
なんてので良いのでは。

回答
投稿日時: 19/04/09 18:56:52
投稿者: NoLookUp

根本的に
select cace
と記述していてシンタックスエラーになってるとか。

Select Case

回答
投稿日時: 19/04/09 21:06:24
投稿者: hatena
投稿者のウェブサイトに移動

ご参考に。
 
 
下記のような設計とします。
 
オプショングループ: optQuerys
この中に、オプションボタンを配置します。
オプションボタンに関連付けられたラベルの標題に、クエリ名を設定する。
 
下記の関数を標準モジュールに作成。
 

Public Function SelectCaption(Opt As OptionGroup) As String
    Dim Ctl As Control
 
    SelectCaption = ""
    If IsNull(Opt.Value) Then Exit Function
    For Each Ctl In Opt.Controls
        If Opt.Value = Ctl.OptionValue Then
            SelectCaption = Ctl.Controls(0).Caption
            Exit For
        End If
    Next
End Function

これで、選択したオプションボタンに関連付けられた標題(クエリ名)を返します。
これを利用すると、Select Case は不要です。
 
Sub 検索ボタン_Click() 
    Dim QueryName As String

    QueryName = SelectCaption(Me!optQuerys

    If QueryName <> "" Then
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, _
        QueryName, "エクスポート先ファイル名" 
    End If 
End If 

投稿日時: 19/04/09 21:07:34
投稿者: namidaneko

皆さまありがとうございます。
拙い説明になり、申し訳ございませんでした。
Suzuさまから教えていただい内容を試してみます。
またお力貸してください。
よろしくおねがいします。