• 締切済み

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

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

みんなの回答

  • g_liar
  • ベストアンサー率52% (382/728)
回答No.3

補足で示されたコードを・・・  sSQLを組み立てる部分だけを残して他は削って。  sSQLに必要なpsUserIDなどの変数は100文字程度の固定値にして。  If文を外して最長の文字列ができあがるようにして。  最後にMsgBox(Len(sSQL))を付け加えて。 僕の環境で動かしてみましたが、ちゃんとMsgBoxに「927」などと表示されます。 試しに新規プロジェクトを作って上記と同じことをされてみてください。 それで250文字以上の文字列が作れれば現行のプロジェクトの問題。 出来なければVBそのものに制限する仕掛けがほどこされてます。 こうやって少しずつ切り分けていくしかないと思います。 お役に立てませんで。

すると、全ての回答が全文表示されます。
  • kuro-pon
  • ベストアンサー率0% (0/4)
回答No.2

Dim a As String * 250 どこかでこう宣言されていると思いますので それを Dim a As String に直せばOKです。

すると、全ての回答が全文表示されます。
  • g_liar
  • ベストアンサー率52% (382/728)
回答No.1

んん? String型ですよね? ヘルプにも書いてありますが、VBのString型は仕様上は約2GBまで格納可能ですよ? (実際に2GB入るかどうかは実行しているPCの搭載メモリ量にもよる) Dim sSQL As String などと宣言されているのですよね? 綴りは間違ってませんよね? 実はStringとはちょっと違う綴りのユーザー定義型を使っているとか? 実はStringと言う名前のクラスを作ってるとか? そんなことはしてませんか?

yogi_mizuno
質問者

補足

下記のプログラムで、問題となっているのは、sSQLです。 Public Function FC_GetMstRecipeHead() As Integer Dim oOraDs As OraDynaset 'ダイナセットオブジェクト Dim sSQL As String 'SQL文 Dim sErrMsg As String 'エラーメッセージ Dim iErrNo As Integer 'エラー番号 Dim iRowCnt As Integer '行カウント Dim iColCnt As Integer '列カウント On Error GoTo ERR_HANDLE 'oo4o エラーリセット poOraDB.LastServerErrReset '戻り値初期化 FC_GetMstRecipeHead = pERR '初期化 Erase mtMstInfo sSQL = "" '===================================== 'SQL文の設定 '===================================== sSQL = sSQL & " SELECT " sSQL = sSQL & " MATERIAL_NAME, " sSQL = sSQL & " LAYER_NAME, " sSQL = sSQL & " TYPE_NO, " sSQL = sSQL & " RECIPE.REMARKS, " sSQL = sSQL & " USER_NAME, " sSQL = sSQL & " RECIPE.OPT_STATUS, " sSQL = sSQL & " TO_CHAR(RECIPE_START_DATE, 'YYYY/MM/DD') RECIPE_START_DATE, " sSQL = sSQL & " TO_CHAR(RECIPE_END_DATE, 'YYYY/MM/DD') RECIPE_END_DATE " sSQL = sSQL & " FROM MST_RECIPE_HEAD RECIPE, MST_USER USER " sSQL = sSQL & " WHERE " sSQL = sSQL & " MST_USER.USER_ID = '" & psUserID & "'" If msProcSearchKey <> "全て" Then sSQL = sSQL & " AND PROC_CODE = '" & msProcSearchKey & "'" End If If msNameSearchKey <> "" Then sSQL = sSQL & " AND MATERIAL_NAME LIKE '" & msNameSearchKey & "%'" End If If msLayerSearchKey <> "" Then sSQL = sSQL & " AND LAYER_NAME LIKE '" & msLayerSearchKey & "%'" Else sSQL = sSQL & " AND LAYER_NAME = '0' " End If If msTypeSearchKey <> "" Then sSQL = sSQL & " AND TYPE NO LIKE '" & msTypeSearchKey & "%'" End If sSQL = sSQL & " ORDER BY MATERIAL_NAME,LAYER_NAME,TYPE_NO "

すると、全ての回答が全文表示されます。

関連するQ&A