&で文字列を連結すると途切れます、、

解決


  2005-11-08 21:13:08  No: 127451

はじめまして。
&での文字列の連結  について質問があります。
(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  "保有車両"(
"車番",
"型式",
"車台番号",
"登録番号",
"旧登録番号",
"販売営業担当者",
"登録年月日",
"初度登録年元号",
"初度登録年月",
"車名",
"通称名",
"型式指定番号",
"類別区分番号",
"車検実施日",
"初回検査満了日",
"検査満了        ←日  以降が途切れている


名無し  2005-11-08 21:53:50  No: 127452

変数の中身の確認はコード中のDebug PrintとMsgBoxだけですか?
一度テキストファイルに出力してみました?


シロクロ  2005-11-08 22:01:55  No: 127453

vbNewLine とありますが、これはなんですか?
リターンコードでしょうか?


  2005-11-08 22:16:54  No: 127454

早速のご返答、ありがとうございます。

>vbNewLine とありますが、これはなんですか?
>リターンコードでしょうか?
改行です。代わりに  vbCrLf  を用いてみましたが、同じ結果でした。

>変数の中身の確認はコード中のDebug PrintとMsgBoxだけですか?
>一度テキストファイルに出力してみました?
テキストファイルへ出力しましたが、正常でした。
DebugPrint ,msgbox , 出力等は正しいデータなのに、
ウォッチで見ると、途切れています。
(関数の戻り値にセットしても  途切れたデータが渡されます)

やはり  &  を使わずに別の方法で結合した方がいいのでしょうか・・


いな  2005-11-08 22:22:15  No: 127455

ウォッチでは確か、表示できる長さに
限度があったはずですが、確認してますか?


名無し  2005-11-08 22:32:38  No: 127456

>テキストファイルへ出力しましたが、正常でした。
>DebugPrint ,msgbox , 出力等は正しいデータなのに、

で、何が不服なの?
これらが正常なんだから変数の中身も正常なんだよ?
オレには理解できませんが。


  2005-11-08 22:47:56  No: 127457

解決しました。

原因は  本題と全く関係ない箇所でした。(SQL自体のミス)
PGMのエラーに気づかず、VBの仕様のせい?
と勘違いしていたようです。(変数の中身を疑っていました)

ご回答頂いた皆様、ありがとうございました。
意味不明な質問をして、お騒がせしました。


もげ  2005-11-08 22:57:22  No: 127458

データベースによっては、
改行が入ったSQLを正常に処理できない場合がありますけど、
今回のは大丈夫だったですか?

>(3)ローカルウィンドウ、ウォッチ等では  文字列が途切れている

確か、ローカルウィンドウ、ウォッチの仕様です。
演算子の不具合ではないでしょう。

>(1)変数strSQL の中身が  途中で途切れている
>(4)変数strSQL を別の変数に代入しても、文字列は途切れたまま
この二つはどのように確認しましたか?
ローカルウィンドウ、ウォッチで確認したのであれば、
(3)と同じことですから原因は上述のとおり。
で、
(2)と(5)から、連結自体は正しく行われている
と判断していいと思われます。


もげ  2005-11-08 22:58:08  No: 127459

あ、遅かった。解決済みだったのね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加