• 締切済み

VB6 String型変数の文字数制限

VB6 で String型変数に勝手に250文字数制限がかかってしまいます。 解除する方法等ありましたら、ご教授下さい。 変数にはSQL分をいれています。300文字以上のSQL文を挿入するコーディングをしているのですが250文字で切れていまい、実行エラーになります。 変数に対してはとくに制限はかけていません。 環境:VB6 (SP6)  Windows7 ****** コーディング例 ****** Dim SQL As String SQL = SQL & vbLf & "SELECT * " SQL = SQL & vbLf & " FROM TB " SQL = SQL & vbLf & " WHERE ID = 123" SQL = SQL & vbLf & " AND TOKCD = '5478'" SQL = SQL & vbLf & " AND KENSYOKBN = '1'" SQL = SQL & vbLf & " AND SRINM = '1'" SQL = SQL & vbLf & " AND KOBAN = '12345'" SQL = SQL & vbLf & " AND KOSYUCD = '1'" SQL = SQL & vbLf & " AND SIZECD = '13'" SQL = SQL & vbLf & " AND LONGCD = '600'" SQL = SQL & vbLf & " AND GHONSU = '360'" SQL = SQL & vbLf & " AND KAINM1 = 'あいうえおかきくけこ'" SQL = SQL & vbLf & " AND GENNM1 = 'たちつてとなにぬねの'"

みんなの回答

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

stringは32767文字まで格納できるはず。 なんか、他に理由があるのではないでしょうか。 私の環境では、 Private Sub Command1_Click() Dim SQL As String SQL = SQL & vbLf & "SELECT * " SQL = SQL & vbLf & " FROM TB " SQL = SQL & vbLf & " WHERE ID = 123" SQL = SQL & vbLf & " AND TOKCD = '5478'" SQL = SQL & vbLf & " AND KENSYOKBN = '1'" SQL = SQL & vbLf & " AND SRINM = '1'" SQL = SQL & vbLf & " AND KOBAN = '12345'" SQL = SQL & vbLf & " AND KOSYUCD = '1'" SQL = SQL & vbLf & " AND SIZECD = '13'" SQL = SQL & vbLf & " AND LONGCD = '600'" SQL = SQL & vbLf & " AND GHONSU = '360'" SQL = SQL & vbLf & " AND KAINM1 = 'あいうえおかきくけこ'" SQL = SQL & vbLf & " AND GENNM1 = 'たちつてとなにぬねの'" SQL = SQL & vbLf & " AND GENNM2 = 'はひふへほまみむめも'" Debug.Print SQL, Len(SQL) End Sub とすると、 SELECT * FROM TB WHERE ID = 123 AND TOKCD = '5478' AND KENSYOKBN = '1' AND SRINM = '1' AND KOBAN = '12345' AND KOSYUCD = '1' AND SIZECD = '13' AND LONGCD = '600' AND GHONSU = '360' AND KAINM1 = 'あいうえおかきくけこ' AND GENNM1 = 'たちつてとなにぬねの' AND GENNM2 = 'はひふへほまみむめも' 274 とでますよ。

関連するQ&A

  • VB6.0 String型変数の文字数制限の250文字制約を外したい。

    VB6.0 String型変数の文字数制限の250文字制約を外したい。 VB6.0を使用しています。他人が作ったプログラムを再利用しています。 String型の変数に文字列が250文字しかどうしてもはいりません。 SQL文ですので、どうしても1000文字ほど入れたいのです。 どこかでString型の文字数制限を行っていると思うのですが、それを外したいのです。

  • VB6にて文字型変数の内容をオブジェクト変数に代入する方法

    VB初心者ですが オブジェクト変数に文字型変数で作成した オブジェクト名を代入したいのですが 上手くいきません。 Dim anyCmb As ComboBox Dim cmb_name As String cmb_name = "ABC" Set anyCmb = cmb_name 誰かわかる方がいましたら、教えてください。 よろしくお願いします。

  • ウォッチ式の文字数制限について

    Visual Basic 6.0を使っています☆ デバッグ中にウォッチ式というウィンドウを開いて変数の中身をみているのんですけど、SQLを格納しているString型の変数を見ても240文字ぐらいしか表示されません。 本当なら800文字程度あるはずなのですが・・・。 ウォッチ式の中で表示できる文字数に制限があるんでしょうか? もしあるならそれを表示文字数を増やす方法とかってあるんでしょうか? 困っているので、どなたかわかる方がいらっしゃったら教えて頂けませんか?

  • 文字列を変数名として扱う方法

    vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • 文字数を越えた文字列を削除するには?

    いつもお世話になっております。また行き詰ってしまいました。 ご助言頂きたくお願い致します。 A列とB列にデータが入っていて、B列には2つのパターンの文字が入っています。 一つは、前の10文字が必ず半角(英字+9ケタの数字)その後は全角のスペースの後に 全角の文字が並びます。(全角の文字数は不規則) 例1:A123456789 あいうえおかきくけこさしすせそ もう一つは頭からすべて全角文字 例2:あいうえおかきくけこさしすせそたちつてと 問題になっている部分は、このB列に入っているデータを頭から 全角15文字以内、半角なら30文字以内に収める という所です。 例1だと、 A123456789 あいうえおかきくけこさしすせそ →A123456789 あいうえおかきくけ(半角10文字+全角10文字) 例2だと あいうえおかきくけこさしすせそたちつてと →あいうえおかきくけこさしすせそ(全角15文字) 下記のようなマクロを作ってみたのですが2つのパターンに対応する為にはどうすればよいでしょうか? Const col1 As String = "B" Dim idx1 As Long Dim myStr1 As String With ActiveSheet For idx1 = .Cells(65536, col1).End(xlUp).Row To 1 Step -1 myStr1 = Cells(idx1, "B") If .Cells(idx1, "B").Value = "" Then Else Cells(idx1, "B") = Left(myStr1, 15) End If Next idx1 End With 以上、宜しくお願い致します。 環境:windowsXP Excel2003

  • VBのString型の配列をVCで受け取るには?

    VBでString型の配列として定義されている変数を VCのプログラムで受け取るにはどうすればよいのでしょうか? 試しにVBでString型の配列を作って DLLのC_TESTというファンクションを呼び出すという 処理を作ってみたのですが、コンパイルエラーになってしまいます。 なにかおかしいところありますか? そもそもVCにはString型ってないんですよね? プログラミング初心者ですので、変な言葉遣いに なってるかもしれませんが宜しくお願いします。 VB Declare Function C_TEST Lib "\test.dll" (ByVal data() As String) As Integer Dim A(1) As String dim rtn as Integer A(0)="あああ" A(1)="いいい" rtn= C_TEST(A) VCのプログラム int _stdcall C_TEST(LPSTR A[2] ){ AfxMessageBox( A[0] ); return(0); }

  • SQLでの変数の扱いについて

    VBを利用してのSQL文に変数を使いたいのですが記述方法が良くわかりません。 まず dim a as string dim b as integer dim c as integer a="AAAA" b=10 c=23500 として テーブルZの項目1が nvarchar 項目2が tinyint 項目3がrealであった場合 sql文の記述方法をWebで探していると 文字列変数ならシングルクォーテーションでくくって代入 数値変数ならダイレクトに代入というようにとれるところがあったので下記の 様に記述すると更新されません sqlstr=("UPDATE テーブルZ set 項目1='a',項目2=b,項目3=c where 項目=1") 下記のように分割してそれぞれひとつづつのテストすると更新できます sqlstr=("UPDATE テーブルZ set 項目1=" & a & " where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & b & "' where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & c & "' where 項目=1") 上記の要領で1つにまとめると出来ないので,どのように書けばよいのでしょうか よろしくお願い致します

  • VB2008 同じ文字型変数を列挙するには

    VB2008 同じ文字型変数を列挙するには よろしくお願いします。 例えば dim i as integer として、 その後も式を作るのに i+i としようが i*5 でも i*iやi^1でも 自由に書けますよね。 でも dim s as stringer(例えば="○"と続けて、) とした場合、 s+s→○○ はできますが、 s*2→○○はできませんよね? でも、○○○○○○ とか同じ文字を羅列することってありますよね。 それが複数行続き、かつ、文字数が各行違う場合、 各行ごとにfor文を書くんでしょうか(←そもそもこれが合っているかも分かりませんが) 正直申し上げて、わたしが欲しいのは label1.text=s*5 に相当するような公式なのですが… よろしくお願いします。

  • 変数に入った値を変数として扱うことはできますか?

    VBスクリプトで自動で作成した値を変数に変化したいのですが、可能なのでしょうか? 例えば hensu = "5" ~DBのテーブルからフィールド名"hensu"を抜き出し、変数"field_set"に入れる。~ OpenField = OpenField & field_set& "=""&"& field_set&"&""" sql = "update test_table set" sql = sql &" "& OpenField sql = sql & "where scode = '" & scode & "'" という感じにしたいのですが、当然"field_set"には"5"ではなく"hensu"というフィールド名の文字列が入ります そもそも変数に入れた値を変数に変換する事って可能なのでしょうか? 宜しくお願い致します。

  • ”パラメータ値を TextBox から String に変換できません

    ”パラメータ値を TextBox から String に変換できませんでした” のエラーメッセージ2日間調べても分かりません。何卒ご教示ください。 1・状況:VB画面のTextBoxの値をSQLのString型フィールドにパラメータ変数をSETしUPDATE   するのですが、上記メッセージが出力されます。 ●SQL文   UPDATE A22_kensyu SET      cyumon_kin = @cyumon_kin, 途中略 nyukin_yotei_ymd = @nyukin_yotei_ymd, -----(1) nyukin_kanryo_ymd = @nyukin_kanryo_ymd,-----(2) torihiki_cd = @torihiki_cd, torikeshi_kbn = @torikeshi_kbn   WHERE mitumorino = @mitumorino AND mitumori_eda = @mitumori_eda AND bunkatuno = @bunkatuno  ●パラメータセット Dim paraNyukinYoteiYmd As IDbDataParameter = command.CreateParameter() paraNyukinYoteiYmd.ParameterName = "nyukin_yotei_ymd" paraNyukinYoteiYmd.DbType = DbType.String If TxtNyukinYoteiYmd.Text = "" Then paraNyukinYoteiYmd.Value = DBNull.Value Else paraNyukinYoteiYmd.Value = TxtNyukinYoteiYmd End If command.Parameters.Add(CType(paraNyukinYoteiYmd, TeLib.CmnDataParameter).GetParameter())   ●VB6からVB2008を始めたばかりでまた、SQLのパラメータ変数を使用するのも初めてです。   ●もともと動いていたプログラムを改造が必要になり(1)、(2)を付加しました 2.環境 OS:WindowsXp 言語:VB2008 DB:SQLserver2000