Access (VBA)

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

 
(Windows 7 Professional : Access 2010)
「パラメータが少なすぎます。3を指定してください」エクスポートウィザードが進まない
投稿日時: 18/12/13 14:55:25
投稿者: 滝沢

Private Sub btn_111_Click()
DoCmd.TransferText acExportDelim, "exp-rule_01", "Q_01", txt_Path, True, ""
End Sub
  
上記の「コマンドボタン:btn_111」は、
「エクスポート定義:exp-rule_01」の内容で「テキストボックス:txt_Path」に指定した
ディレクトリに「クエリ:Q_01」がテキストファイルで出力されるボタンです。
現在も正しく動作しています。
 
今回「クエリ:Q_01」に項目を追加してエクスポート定義も修正しようと思い、
修正した「クエリ:Q_01」を右クリック→エクスポート→テキストファイル
→(デフォルト表示されたを指定して)「OK」をクリックすると
「パラメーターが少なすぎます。3を指定してください。」となってしまいます。
※修正した「クエリ:Q_01」の通常実行は正常に行われます。
 
原因切り分けのため、ファイルごとコピーしてあったファイルで
まだ修正していない「クエリ:Q_01」でも同様の処理を行いましたが
同様のメッセージが表示されてしまいます。
 
可能性のある原因を教え下さい。
よろしくお願い致します。

回答
投稿日時: 18/12/13 15:50:24
投稿者: Suzu

そのメッセージ自体は、SQLに問題がある場合に表示される事が多いです。
 
ただ、今回は クエリ単体では実行できるとの事でしたので
あるとすれば、
・Access内に定義してあるエクスポート定義の内容
・クエリのフィールド名
の不一致から、発せられているのではないかと推測します。
 
クエリ単体では実行可能なのであれば、エクスポート定義の修正が必要。
 
詳細は
【データ タスクの管理 - ダイアログ】
https://support.office.com/ja-jp/article/%E3%83%87%E3%83%BC%E3%82%BF-%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AE%E7%AE%A1%E7%90%86-%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0-50051b9c-cecf-4b3d-b5a5-cf68bbe981a5
 
を参考に定義の修正を行ってみてください。

回答
投稿日時: 18/12/13 16:14:20
投稿者: sk

引用:
エクスポートウィザードが進まない

引用:
今回「クエリ:Q_01」に項目を追加してエクスポート定義も修正しようと思い、
修正した「クエリ:Q_01」を右クリック→エクスポート→テキストファイル
→(デフォルト表示されたを指定して)「OK」をクリックすると
パラメーターが少なすぎます。3を指定してください。」となってしまいます。

[Q_01]がパラメータクエリだからではないかと。
 
引用:
DoCmd.TransferText acExportDelim, "exp-rule_01", "Q_01", txt_Path, True, ""

引用:
上記の「コマンドボタン:btn_111」は、
「エクスポート定義:exp-rule_01」の内容で「テキストボックス:txt_Path」に指定した
ディレクトリに「クエリ:Q_01」がテキストファイルで出力されるボタンです。
現在も正しく動作しています

引用:
※修正した「クエリ:Q_01」の通常実行は正常に行われます。

とりあえず、[Q_01]からパラメータの指定を除いたクエリを
別途作成して、そのクエリをテキストファイルにエクスポートする形で
テキストエクスポートウィザードを実行してみて下さい。

投稿日時: 18/12/14 15:07:16
投稿者: 滝沢

Suzu様、sk様
アドバイスありがとうございます。
 
>詳細は 【データ タスクの管理 - ダイアログ】 を参考に定義の修正を行ってみてください。
初めて開いてみましたが、定義は1つも表示されませんでした。(??)
実際はエクスポートとインポートそれぞれ5個ずつ使用しています。
試しに他のファイルで同様の箇所を確認したところ、実際はエクスポート定義が10個
くらいあるはずですが、1つだけ表示されました。
ここで定義名の変更はできるみたいですが、中身の変更はできないんですかね?
 
>[Q_01]がパラメータクエリだからではないかと。
パラメータクエリとはクエリ画面のフィールド覧に「フィールド名:[あああ]」としておくと
クエリ実行時に「パラメータの入力 あああ」というダイアログボックスが表示される
やつのことでしょうか?
それだとすると、今回のクエリ「Q_01」はパラメータクエリではありませんが
「Q_01」をコピーして、フィールド覧の「:」の右側をすべて「"a"」に変えて
エクスポートを試したところ、正常に進めて設定変更ができました。
全て変えてしまったためどれが原因だったかはわかりませんので、あとで
1つ1つ試してみます。
 
取り急ぎお礼を。
ありがとうございます!

投稿日時: 18/12/14 16:52:12
投稿者: 滝沢

とりあえず、今回の原因はわかりました。
クエリのフィールド覧と抽出条件に、そのボタンが置いてあるフォームの値が入っていました。
例:[Forms]![F_000]![txt_日付]
これが3つあり、1つ消すごとに「2を指定してください」「1を指定してください」と
メッセージが変わり、3つとも消したらウィザードが正常動作しました。
 
ただ、これは仕様なんでしょうか?
フォームの値を使用するのはわたし的に常套手段でして
過去に100回位は同様のシステムを作っていますが、
今までこのような問題が起きたことがありませんでした。

回答
投稿日時: 18/12/14 17:22:21
投稿者: Suzu

引用:
例:[Forms]![F_000]![txt_日付]

 
[Forms]![F_000]![txt_日付] これがれっきとしたパラメーターです。
クエリのSQL内にて、決められた値に対して、計算/抽出を行うのではなく
パラメーター入力ダイアログ/フォームを参照させ、その値を基に計算/抽出を行う。
 
はい。パラメーターです。
 
エクスポート時に、フォーム F_000 が開かれており、
かつ、
抽出条件として 有効な値が、txt_日付 に入っていたのでしょうか?
 
また、
 
T'sWare 【パラメータクエリのパラメータのデータ型を限定するには?】
https://tsware.jp/tips/tips_542.htm
 
の様に、パラメーターのデータ型を指定しておかないと
 同様のダイアログが出る事になります。
 
引用:
過去に100回位は同様のシステムを作っていますが、
今までこのような問題が起きたことがありませんでした。

たまたまなのか、問題が起きる様な動作をさせてこなかったのでは?

投稿日時: 18/12/21 11:23:30
投稿者: 滝沢

Suzu さんの引用:
エクスポート時に、フォーム F_000 が開かれており、
かつ、
抽出条件として 有効な値が、txt_日付 に入っていたのでしょうか?

クエリ自体は正常に動きますし、フォームを閉じてると別のエラーが出ますので
この点は間違い無いかと思います。
 
 
Suzu さんの引用:
T'sWare 【パラメータクエリのパラメータのデータ型を限定するには?】
https://tsware.jp/tips/tips_542.htm
の様に、パラメーターのデータ型を指定しておかないと
 同様のダイアログが出る事になります。

試しにデータ型も指定してみましたが、ダイアログは変わらずでした。
 
 
Suzu さんの引用:
たまたまなのか、問題が起きる様な動作をさせてこなかったのでは?

自分の中では意外感がありますが、そうかもしれません。
いずれにせよ今後起きた場合の対策がわかり、良かったです。
 
ありがとうございました。