[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/05/19(Thu) 18:57
投稿者名:tomo
Eメール:
URL :
タイトル:
1024バイトで文字列が途切れる
こんばんは tomo です。

 フォームにDataコントロールを貼り付けて、データベースと対話しています。
 コマンドボタンを押したらDataコントロールのフィールドを更新したいのですが、
『3061:パラメータが少なすぎます。1 を指定してください。』というエラーが出ます。
 原因を探ると、変数(String型)にSQL構文を書いているのですが、その文字列を
MsgBoxで調べると1024バイトで途切れていました。
 Debug.Printで調べると大丈夫なのですが、何故だかわかりません。

Dim sSQL As String

sSQL = ""
sSQL = sSQL & "UPDATE テーブル1 SET"
sSQL = sSQL & "  フィールド1 = '" & 変数1 & "'"
sSQL = sSQL & ", フィールド2 = '" & 変数2 & "'"
        ≪ 中 略 ≫
sSQL = sSQL & ", フィールド3 = '" & 変数3 & "'"
sSQL = sSQL & " WHERE フィールド4 = '" & 変数4 & "'"
sSQL = sSQL & "   AND フィールド5 = '" & 変数5 & "'"

Data1.Database.Execute sSQL

 フィールドは102個更新の対象で非常に長いSQL文なのですが、
Dataコントロール自身に何か制限とかがあるのでしょうか。

■開発環境
 OS  : WindowsXP SP2
 IDE : VB6 SP5

どなたかご存知の方、教えてください。よろしくお願いします。

投稿時間:2005/05/19(Thu) 20:46
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 1024バイトで文字列が途切れる
>  OS  : WindowsXP SP2
>  IDE : VB6 SP5
> MsgBoxで調べると1024バイトで途切れていました。

MsgBox関数の制限ですね。最大で 『1023バイト』です。

MsgBox String(1024, "=")              '←1023個の = が表示された。
MsgBox "X" & String(511, "あ") & "Y"  '←1個の "X" と、511個の "あ" と、0個の "Y"。


なお、最後の1023バイト目が「全角文字の1バイト目」に相当するときは、
なぜか最後の1バイトだけは、前回の値が表示されました。(^^;<うちの環境だけかも
  MsgBox String(1023, "+")    '←1023個の "+"
  MsgBox String(512, "あ")    '←511個の "あ" と、1個の "+"
  MsgBox String(1023, "#")    '←1023個の "#"
  MsgBox String(512, "@")    '←511個の "@" と、1個の "#"


> 『3061:パラメータが少なすぎます。1 を指定してください。』というエラーが出ます。
SQL文のどこかで、スペルミスをしており、それが「パラメータ変数」として
誤解されているのでしょうね。


>  原因を探ると、変数(String型)にSQL構文を書いているのですが、その文字列を
>  Debug.Printで調べると大丈夫なのですが、何故だかわかりません。
ちなみに、Debug.Printにも制限はありますよ。

hhttp://yaplog.jp/orator/archive/45

投稿時間:2005/05/19(Thu) 20:54
投稿者名:いな
Eメール:
URL :
タイトル:
Re^2: 1024バイトで文字列が途切れる
> Debug.Printで調べると大丈夫なのですが、何故だかわかりません。

> 『3061:パラメータが少なすぎます。1 を指定してください。』というエラーが出ます。

Debug.Printで調べると大丈夫なSQLが、
実行すると落ちるというのは初めて聞くし、今まで聴いたこと無いなぁ〜。

投稿時間:2005/05/19(Thu) 21:20
投稿者名:tomo
Eメール:
URL :
タイトル:
初歩的なミスでした^ ^;
魔界の仮面弁士様
返信ありがとうございました。

> SQL文のどこかで、スペルミスをしており、それが「パラメータ変数」として
> 誤解されているのでしょうね。

 よく調べてみるとフィールド名の1つが間違っていました。
修正することで解決致しました。

 MsgboxやDebug.Printに制限があったんですね。
重ねて勉強になりました。

投稿時間:2005/05/19(Thu) 21:36
投稿者名:いな
Eメール:
URL :
タイトル:
Re:大丈夫ってそうゆうことだったのか
> > SQL文のどこかで、スペルミスをしており、それが「パラメータ変数」として
> > 誤解されているのでしょうね。
>
>  よく調べてみるとフィールド名の1つが間違っていました。
> 修正することで解決致しました。