|
▼クロ さん:
ご回答を頂きまして、ありがとうございます。
ボタンクリックイベントに、SQL文でパラメータ用のクエリを一時的に作成し、エクスポートした後、
削除する形で対応してみましたが、パラメータが少なすぎる。1を指定してください。と
エラーが表示されてしまいます。
Dim MyDb2 As DAO.Database
Dim MyQd2 As DAO.QueryDef
Dim MyTb2 As DAO.Recordset
Dim strSQL2 As String
Dim strQryName2 As String
Dim varQryName2 As Variant
'既存のクエリ名を指定する。
strQryName2 = "Q_Name"
'新規作成のクエリ名を指定する。
varQryName2 = "Q_エクスポート用Name"
Set MyDb2 = CurrentDb
'同名のクエリは削除
MyDb2.QueryDefs.Refresh
For Each MyQd2 In MyDb2.QueryDefs
If MyQd2.Name = varQryName2 Then
MyDb2.QueryDefs.Delete MyQd2.Name
End If
Next MyQd2
'新規クエリ作成
strSQL2 = "SELECT 連休番号, 連休, User FROM Q_Name WHERE (((Q_Name.No_連休)=[]));"
Set MyQd2 = MyDb2.CreateQueryDef(varQryName2, strSQL2)
Set MyTb2 = MyQd2.OpenRecordset()
If Not MyTb2.EOF Then
strSQL2 = strQryName2 & " をExcelファイルへ出力します。" & Chr(13) & _
"よろしければ、OKをクリックして下さい。"
Else
strSQL2 = "出力データがありません。処理を中止します。"
MsgBox strSQL2, vbOKOnly, "通知"
GoTo exit_qryToExcel
End If
If MsgBox(strSQL2, vbOKCancel, "確認") = vbCancel Then
GoTo exit_qryToExcel
End If
'保存ダイアログ表示後出力
'OutputTo での出力は Excel 5.0 の仕様の為、行数の上限が 16,384 行となる。
DoCmd.OutputTo acQuery, varQryName2, acFormatXLS, , True
'MsgBox "出力終了しました。", vbOKOnly
exit_qryToExcel:
<略>
err_qryToExcel:
<略>
>PARAMETERS [連休番号を指定してください] Long;
>SELECT 連休番号, 連休, User
>FROM テーブル名
>WHERE 連休番号=[連休番号を指定してください];
単純にQ_Nameをパラメータクエリとして作成し、連休番号20を入力すれば
番号が20のレコードかつ、不要なフィールドを除くフィールドを表示することは、
できるんですが、今回はフォームのボタンでエクスポートさせたいことです。
ただ、やりたい内容は下記です。
連休番号 連休 User Password ・・・(略)
20 秋休み A ***
20 秋休み B ***
20 秋休み C ***
30 春休み A ***
30 春休み B ***
30 春休み C ***
30 春休み D ***
40 夏休み A ***
40 夏休み B ***
40 夏休み C ***
40 夏休み D ***
40 夏休み E ***
40 夏休み F ***
40 夏休み G ***
とする。
エクスポートすると、
連休番号 連休 User ・・・エクスポートしたいフィールド名
40 夏休み A
40 夏休み B
40 夏休み C
40 夏休み D
40 夏休み E
40 夏休み F
40 夏休み G
となるんですが、
テーブルに連休番号50を追加するという場合も考慮したい。
その場合は連休番号が常に最大値の数値のみを抽出するクエリ用のSQL文を
記述(不要なフィールドも)するSQL文はどのように表現すればよいでしょうか?
上記のstrSQL = "" の中に記述すればよいですが・・・
サーバにテーブルを持たせて、各PCは配布ファイルを起動するので
プログラムで指定するのではなく、テーブルを参照するようにしたい。
分かる方、教えて下さい。
|
|