はじめまして。
&での文字列の連結 について質問があります。
(VB6, サービスパック6を使っています)
以下の様にSQLの文字列を & 演算子で結合したいのですが、
文字列が途中で途切れます。
問題点
①変数strSQL の中身が 途中で途切れている
②Msgbox, Debug.Print 等では意図した文字列が正しく表示される
③ローカルウィンドウ、ウォッチ等では 文字列が途切れている
④変数strSQL を別の変数に代入しても、文字列は途切れたまま
⑤Len(strSQL) , LenB(strSQL) の値は正しい(途切れていない)
これはやはり、&演算子の不具合なのでしょうか・・?
ローカル・ウォッチと 実際の値の相違の理由がわからないのですが、、
宜しくご教授の程、お願い致します。
問題の関数:
Private Sub Command1_Click()
Dim strSQL As String
strSQL = "INSERT INTO ""保有車両"""
strSQL = strSQL & "("
strSQL = strSQL & vbNewLine & """車番"","
strSQL = strSQL & vbNewLine & """型式"","
strSQL = strSQL & vbNewLine & """車台番号"","
strSQL = strSQL & vbNewLine & """登録番号"","
strSQL = strSQL & vbNewLine & """旧登録番号"","
strSQL = strSQL & vbNewLine & """販売営業担当者"","
strSQL = strSQL & vbNewLine & """登録年月日"","
strSQL = strSQL & vbNewLine & """初度登録年元号"","
strSQL = strSQL & vbNewLine & """初度登録年月"","
strSQL = strSQL & vbNewLine & """車名"","
strSQL = strSQL & vbNewLine & """通称名"","
strSQL = strSQL & vbNewLine & """型式指定番号"","
strSQL = strSQL & vbNewLine & """類別区分番号"","
strSQL = strSQL & vbNewLine & """車検実施日"","
strSQL = strSQL & vbNewLine & """初回検査満了日"","
strSQL = strSQL & vbNewLine & """検査満了日"","
strSQL = strSQL & vbNewLine & """自賠責保険料"","
strSQL = strSQL & vbNewLine & """重量税"")"
Debug.Print (strSQL)
MsgBox (strSQL)
MsgBox (Len(strSQL))
End Sub
・生成される文字列(変数strSQLの中身)
INSERT INTO "保有車両"(
"車番",
"型式",
"車台番号",
"登録番号",
"旧登録番号",
"販売営業担当者",
"登録年月日",
"初度登録年元号",
"初度登録年月",
"車名",
"通称名",
"型式指定番号",
"類別区分番号",
"車検実施日",
"初回検査満了日",
"検査満了 ←日 以降が途切れている
変数の中身の確認はコード中のDebug PrintとMsgBoxだけですか?
一度テキストファイルに出力してみました?
vbNewLine とありますが、これはなんですか?
リターンコードでしょうか?
早速のご返答、ありがとうございます。
>vbNewLine とありますが、これはなんですか?
>リターンコードでしょうか?
改行です。代わりに vbCrLf を用いてみましたが、同じ結果でした。
>変数の中身の確認はコード中のDebug PrintとMsgBoxだけですか?
>一度テキストファイルに出力してみました?
テキストファイルへ出力しましたが、正常でした。
DebugPrint ,msgbox , 出力等は正しいデータなのに、
ウォッチで見ると、途切れています。
(関数の戻り値にセットしても 途切れたデータが渡されます)
やはり & を使わずに別の方法で結合した方がいいのでしょうか・・
ウォッチでは確か、表示できる長さに
限度があったはずですが、確認してますか?
>テキストファイルへ出力しましたが、正常でした。
>DebugPrint ,msgbox , 出力等は正しいデータなのに、
で、何が不服なの?
これらが正常なんだから変数の中身も正常なんだよ?
オレには理解できませんが。
解決しました。
原因は 本題と全く関係ない箇所でした。(SQL自体のミス)
PGMのエラーに気づかず、VBの仕様のせい?
と勘違いしていたようです。(変数の中身を疑っていました)
ご回答頂いた皆様、ありがとうございました。
意味不明な質問をして、お騒がせしました。
データベースによっては、
改行が入ったSQLを正常に処理できない場合がありますけど、
今回のは大丈夫だったですか?
>(3)ローカルウィンドウ、ウォッチ等では 文字列が途切れている
確か、ローカルウィンドウ、ウォッチの仕様です。
演算子の不具合ではないでしょう。
>(1)変数strSQL の中身が 途中で途切れている
>(4)変数strSQL を別の変数に代入しても、文字列は途切れたまま
この二つはどのように確認しましたか?
ローカルウィンドウ、ウォッチで確認したのであれば、
(3)と同じことですから原因は上述のとおり。
で、
(2)と(5)から、連結自体は正しく行われている
と判断していいと思われます。
あ、遅かった。解決済みだったのね。
ツイート | ![]() |