■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#6971-1コマンドラインの引数についてスマイリー2002-04-16(火) 05:06
     #6975-1RE#6971:コマンドラインの引数についてスマイリー2002-04-16(火) 06:01
     #7000-1RE#6975:コマンドラインの引数について藤代千尋2002-04-16(火) 17:02
     #7002-1RE#7000:コマンドラインの引数についてDental2002-04-16(火) 19:41
     #7011-1RE#7002:コマンドラインの引数についてスマイリー2002-04-17(水) 01:48
#6971-1
コマンドラインの引数について
いつもお世話になります。
現在、コマンドラインを使用して、VB→ACCESSに引数を渡しています。
その引数なのですが、SQL文の文字列を渡しています。
実行すると、
「MicroSoft Accessを起動するためのコマンドライン引数が不正です」と表示がされて
エラーとなります。
引数の文字列を調べた結果、491バイト目で切れてしまっています。
この数も、なぜ491なのかはわかりませんが、コマンドラインは何バイトまで
引数として設定する事が可能なのでしょうか?
また、引数に限りがあるとしたら、コマンドラインの引数で扱える、バイト数を
増やすなどの設定がありましたら宜しくお願いします。
違う方法に変更するしかないのでしょうか?
この、コマンドラインは他にもあちこちと使っていますので、できればコマンドラインを
使用して、なんとか成功させたいのですが…
よきアドバイス宜しくお願いします。
環境 WinNT4.0+VB6.0(SP5)+ACCESS97
#6975-1
RE#6971:コマンドラインの引数について
491バイトの謎がわかりました。
すみません、数え間違いをしていました。
2つ引数を送っているのですが、
引数1=18バイト
区切り文字=1バイト
引数2(SQL文)=493
計512バイト送っているみたいです。
511、512は怪しい数なので、それに近いので
やはり限りがあるという事なのでしょうか?
(T_T)
よきアドバイス宜しくお願いします。
#7000-1
RE#6975:コマンドラインの引数について
> 計512バイト送っているみたいです。
> 511、512は怪しい数なので、それに近いので
> やはり限りがあるという事なのでしょうか?

コマンドラインの文字数には、ハッキリと制限があります。
#たくさんのファイルを選択して「送る」を選ぶとエラーがでますから。

たぶん、255 文字制限だと思います。
文字は Unicode だと 2 バイトですから、× 2 して、510 バイト。
511 バイトからはエラーとなりますね。(^^;)

コマンドラインは、MS-DOS のころからの制限だと思いますから、これを広げる
方法はないでしょう。

なので、コマンドラインに SQL 文をそのまま書く方法と、ワークファイルを指
定する方法の2種類に対応するようにプログラムを変更する必要があるでしょう
ね。(^_^;)
#たとえば、コマンドラインが "/File:" で始まっていたら、その後ろにある
 パスのファイルに SQL 文が入っているとして、ファイルを開いて SQL を取得
 する。そうでなかったら、SQL 文、そのものだと解釈するようにします。
#7002-1
RE#7000:コマンドラインの引数について
>> 計512バイト送っているみたいです。
>> 511、512は怪しい数なので、それに近いので
>> やはり限りがあるという事なのでしょうか?
> コマンドラインの文字数には、ハッキリと制限があります。

「Access自体の制限」についてはわかりませんが………少なくとも
コマンドラインそのものには、文字列の長さ制限は無かったと思いますよ。
たとえば、VB6において
    Shell "C:\Project1.exe " & String(1000000, "@")
のようなコードを書いても、Project1.exeは、渡された"@@@@@@〜〜"という
文字列を、Command関数で正しく処理することが出来ますし。


しかし、Windowsのシェル自身には制限があるので、もしかしたら
そちらにひっかかっている可能性はありますね。

で、その「シェルの制限」ですが……、Windows95を例に挙げれば、
これはGUIモードで250文字制限となっています。
(これには引数部だけではなく、ファイルパスの「:」や「\」なども含まれたと思います)

また、DOSプロンプトでは、1行につき128文字までしか入力する事ができませんので、
バッチファイル等から起動するなら、これも制限となる可能性があります。
# なお、128というのは初期設定の場合の値です。CONFIG.SYSのSHELL=の設定次第では、
# この文字数よりも多くの(あるいは少ない)文字数制限を持つこともあります。(最大は250バイト)
## 環境変数を併用した場合は、もう少し長いコマンドラインを扱えるけれども。

また、「ファイル名を指定して実行」ダイアログでは、入力制限が259文字で、実際に
扱えるファイルパスは、255文字制限となっています。

NT系の場合は、UNCパスを使うことで、さらに長いコマンドラインを扱う事が
できる事もありますが、実際にはWin32のMAX_PATH定数の長さ(260)文字のあたりから、
いくつかのアプリケーションでエラーが発生する事になると思います。

今回の場合は、藤代さんが書かれたように、ワークファイルを
経由する方向で考えたほうがよいのではないかと。


> #たくさんのファイルを選択して「送る」を選ぶとエラーがでますから。
# PowertToysのように、シェルエクステンションとして実装されているものは、
# 多くのファイルを「送っ」ても、エラーにはなりませんけれどね。
#7011-1
RE#7002:コマンドラインの引数について
おはようございます。
みなさん、ありがとうございました。なんか、すっきりしました。
コマンドラインは制限があるのですね。(T_T)
みなさんの言う、ワークファイルを作成します。
このワークファイルというのは、拡張子(.txt)のファイルという事ですよね?
ここに、Print命令なんかを使用して、1行追加して
アクセス側からこれを読むという事ですよね。
ん〜ファイルに書き込んだ事がないので、早速勉強です。
ありがとうございました。(^-^)v
このページと関連する記事:
#22478-0他EXE起動時の引数2001-08-17(金) 10:18
#39148-0レジ起動でのcommand$の引渡し2001-02-20(火) 01:47
#3926-0VB5でフォーム無しアプリ1999-11-11(木) 11:58
#30380-0RE#30374:テキストボックスの入力バイト長での入力制限をしたいのですが2000-09-21(木) 12:53
#44766-0コンボボックスの文字数制限2001-07-06(金) 14:31
#38558-0テキストボックスに行リミットをつけるには・・・?2001-02-09(金) 09:50
#31868-0VB2000-10-17(火) 19:04
#974-2ドロップされたファイル名を取得できない。2001-11-03(土) 22:32
#383-1パスワード有りのMDBファイルをオープンする2004-03-30(火) 19:37
#27712-0テキストボックスのMaxLengthについて2002-03-20(水) 10:23
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)