tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルイミディエイトウィンドウで改行が効かない?
記事No10617
投稿日: 2011/11/17(Thu) 15:09
投稿者よっくん
こんにちは。

環境: XP + VB2010

        Dim sqlStr As String

        sqlStr = "SELECT" & vbCrLf
        sqlStr = sqlStr & "更新日付, ユーザーID,COUNT(*)" & vbCrLf
        sqlStr = sqlStr & "FROM" & vbCrLf
        sqlStr = sqlStr & "○○マスタ" & vbCrLf
        sqlStr = sqlStr & "GROUP BY" & vbCrLf
        sqlStr = sqlStr & "更新日付, ユーザーID" & vbCrLf
        sqlStr = sqlStr & "ORDER BY" & vbCrLf
        sqlStr = sqlStr & "更新日付, ユーザーID" & vbCrLf
        
上記のコードを実行して
イミディエイトウィンドウで
?sqlStr
をやると、

"SELECT  更新日付, ユーザーID,COUNT(*)  FROM  ○○マスタ  GROUP BY  更新日付, ユーザーID  ORDER BY  更新日付, ユーザーID  "

と表示され、イミディエイトウィンドウ内で改行されません。
ただ、
Debug.Print(sqlStr)
で書き出すと

SELECT
更新日付, ユーザーID,COUNT(*)
FROM
○○マスタ
GROUP BY
更新日付, ユーザーID
ORDER BY
更新日付, ユーザーID

というふうに改行されます。
VB2005の場合は、?sqlStr で
改行されて表示されていました。

VB2010で ?sqlStr でも改行されるような設定ってあるのでしょうか?

[ツリー表示へ]
タイトルRe: イミディエイトウィンドウで改行が効かない?
記事No10618
投稿日: 2011/11/17(Thu) 21:34
投稿者魔界の仮面弁士
> Debug.Print(sqlStr)
Print メソッドだと String 型しか受け付けないので、
Write 系メソッド等の方が便利ですよ。

ちなみにイミディエイトにおける「? sqlStr」という記述は、
「Debug.Print(sqlStr)」ではなく、
「>Debug.Print sqlStr」の意味です。


> VB2010で ?sqlStr でも改行されるような設定ってあるのでしょうか?
恐らくは無いと思います。(少なくとも私は知りません)
「? sqlStr」も「>Debug.Print sqlStr」も、VB2010 においては
タブや改行などの不可視文字が空白化されてしまうようです。

現状は「>?? sqlStr」でのクイックウォッチや「>Debug.Autos」の自動変数、
あるいは変数名にカーソルを合わせてのツールチップ等で判定するか、
そのまま Debug.Write するかの回避策になりそうです。


> と表示され、イミディエイトウィンドウ内で改行されません。
VB2010 では、ほかにも
 ? System.Math.Ceiling(123.456d)
がエラーになるといった問題があるんですよね。

Service Pack 等で修正されると良いのですけれども。

[ツリー表示へ]
タイトルRe^2: イミディエイトウィンドウで改行が効かない?
記事No10619
投稿日: 2011/11/18(Fri) 21:39
投稿者よっくん
魔界の仮面弁士様
アドバイス ありがとうございます。

> Print メソッドだと String 型しか受け付けないので、
> Write 系メソッド等の方が便利ですよ。
なんでもかんでもPrintする癖が付いてました…。

> ちなみにイミディエイトにおける「? sqlStr」という記述は、
> 「Debug.Print(sqlStr)」ではなく、
> 「>Debug.Print sqlStr」の意味です。
括弧付きで差があるんですね…。勉強になります。

> 「? sqlStr」も「>Debug.Print sqlStr」も、VB2010 においては
> タブや改行などの不可視文字が空白化されてしまうようです。
これを知らずに、他の人に
「SQL文 一行で打つのやめてぇ〜」と言った所
「ちゃんとvbCrLf入れとるよ!」と言われ
あら?と思って調べてみても特に設定も見つけられなかったので
質問してみました。

修正されないかなぁ…orz


ありがとうございました。

[ツリー表示へ]
タイトルRe^3: イミディエイトウィンドウで改行が効かない?
記事No10620
投稿日: 2011/11/18(Fri) 21:45
投稿者魔界の仮面弁士
> > ちなみにイミディエイトにおける「? sqlStr」という記述は、
> > 「Debug.Print(sqlStr)」ではなく、
> > 「>Debug.Print sqlStr」の意味です。
> 括弧付きで差があるんですね…。勉強になります。

括弧ではなく、先頭の「>」の違いに着目してあげてください。
名前がたまたま同じというだけで、実際にはそれぞれ別の機能です。

前者は、.NET の Debug クラスを(イミディエイト等から)呼び出しているわけですが、
後者は、Visual Studio の Debug コマンドをコマンドウィンドウやイミディエイトから
呼び出すためのものです。

http://msdn.microsoft.com/ja-jp/library/c3a0kd3x.aspx

イミディエイトで
「? sqlStr」
「>Debug.Print sqlStr」
「>デバッグ.印刷 sqlStr」
を実行してみてください。すべて同じ結果となります。

これらのコマンドは、Visual Studio 特有のステートメントであるため、
メソッドの呼び出しと違って括弧が付きません。


ちなみに、Debug.Print(sqlStr) の実行をコマンド表現で行う場合は、
「>Debug.EvaluateStatement Debug.Print(sqlStr)」
「>デバッグ.ステートメントの評価 Debug.Print(sqlStr)」
だったりします。まぁ、こんな書き方をする人はいないでしょうけれども。

[ツリー表示へ]