2006年07月25日

VS2005を入れるとアイコンでバージョンが判る

VB2005をインストールしたときは気付かなかったのだが、よくみるとソリューションファイルのアイコンのデザインが変わっていて、「7」という数字がアイコンに付いていた。
これをVB.NET2003で開くと、確認ダイアログがでて「このソリューションとすべてのプロジェクトを変換しますか?」と聞いてくる。これはVB.NET2002から2003へ変換するためのものだが、変換すると「7.1」という数字にアイコンが変わる。
さらにこれをVB2005で開くと変換ウィザードが現われVB2005のプロジェクトファイルに変わる。このときには「8」の数字がソリューションアイコンに付いている。

バージョン毎のアイコンの違い

これはなかなか便利だ(^^)
もちろん、アイコンをダブルクリックすれば対応する開発環境が自動的に認識されて起動する。ついでにVisualStudioの∞アイコンもバージョン毎に変えてくれるとなお便利だと思うのだが。

posted by なっちゃん at 09:42| 静岡 ??| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2006年07月19日

VS2005とVS.NET2003の共存の注意

先日取り上げた「VB2005はASP.NET(VB.NET2003)と相性が悪い?」の原因が判った。
そして、VisualStudio2005とVisualStudio.NET2003の共存は問題ないことが判明した。
注意すべきなのはWebアプリ(ASP.NET)である。IIS(InternetInformationService)の設定項目に、VS2005の環境つまり「.NET Framework2.0」をインストールするとASP.NETタブが追加され、ここの設定を誤ると動作しなくなる。だからここさえ注意すれば何も問題ない。
(図はいずれもWindows2000ServerのIISのもの)

VB2005をインストールする前のIISのプロパティ(タブの数に注目)
iistab.gif

VB2005をインストールした後のIISのプロパティ(ASP.NETタブが追加されている)
ここでFrameworkのバージョンを指定できるのでアプリ毎に切替可能になる。
iistab-2.gif

実は、今日再インストールしたら今度は何の問題も無く動いたので合点が行かなかった。前回と特にインストール方法に違いがあるとは思えないのに。ただ、IISに「ASP.NET」のタブが追加されることをインターネットで調べて知ったので、今度はここを確認してみたところ、最初から既存のWebアプリはASP.NET1.1の仕様になっていた。前回動かなかったということはこれが2.0を指していたためだと思うのだが、何故何もしなくても1.1になっていたのか・・・・インストール後再起動しなかったために2.0になっていたのかも知れないが。
posted by なっちゃん at 19:32| 静岡 ????| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

VirtualPC2004が無償に

先週のことで既にご存知の方も多いかと思いますが、開発者にとって大変便利なツール「VirtualPC」が無償になりました。次期バージョンも無償で公開される予定らしいです。
窓の杜「MS、仮想PC作成・実行ソフト「Virtual PC 2004」日本語版を無償公開

このVirtualPCの便利なことは「なっちゃんのプログラマーズ日記」の方にかつて書いたのでご存知ない方はご参考に。
posted by なっちゃん at 14:50| 静岡 ????| Comment(0) | TrackBack(0) | ETC | このブログの読者になる | 更新情報をチェックする

2006年07月11日

XML Webサービス 開発上の注意(参照URLとアプリケーション構成ファイル)

「基になる接続が閉じられました。リモートサーバーに接続できません。」

例によって、開発環境で問題なく動いていたのに、ユーザーの環境へ移した途端にこのエラーが出た。
スマートクライアントでWebサービスを利用しているのだが、つくづくこのスマートクライアントというのはやっかいなシステムだと思う。やたらと制限や条件が付く。ASP.NETの方がずっと楽である。
しかしWebアプリでは入力バリバリの業務システムは難しい。(VS2005はもうちょっと改善されているようなことを聞いたが...)

さてエラーの原因は、Webサービスの参照URLが「http://localhost/....」になっていたためだった。
開発環境では自分自身のことなのでlocalhost(初期値)で問題ないのだが、他のクライアントから見たらサービスを提供するPCはlocalhostには決してならない。そこで初期値のURLを動的に変更できるようにアプリケーション構成ファイル(App.Config)に記述しておき、起動時にそれを読み込み、サービスのインスタンス時のURLに適用させるのである。

※アプリケーション構成ファイルの使い方は 下を参考に
-> http://support.microsoft.com/default.aspx?scid=kb;ja;313405

何のことはない、これは既に解決済みの処理でうっかりサービス呼出時にURLを変更するのを忘れていただけのミスだった。
ただ、このことでサービス呼出時に毎回URL変更手続きを書くのは今回のようなミスを引き起こしやすい。もっと楽に一回でできる方法が必要だと考え、調べてみることにした。

VisualStudioのソリューションエクスプローラーでWeb Referencesを開き、サービスを選択するとプロパティーウィンドウに「URLの動作」として初期値がスタティックになっている。これをダイナミックにするだけでよい。(下図参照)
20060711.gif

構成ファイルからの取得も以下のように自動で行ってくれる。
Reference.vb を見ると以下の行ができているのがわかる。ダイナミックにすることでアプリケーション構成ファイルから値を自動で取得するようになる。

Public Sub New()
MyBase.New
Dim urlSetting As String = _
System.Configuration.ConfigurationSettings.AppSettings(
"hoge.ws_hoge.Service1")
If (Not (urlSetting) Is Nothing) Then
Me.Url = String.Concat(urlSetting, "")

Else
Me.Url = "http://localhost/websvhoge/ServiceHoge.asmx"
End If
End Sub

構成ファイルのkeyも自動的に追加作成される。配布後、ここのValueを配布先のPCのURLに変更するだけでよい。(下図参照)

20060711-2.gif


補足Tips:
構成ファイル(.Config)はWindowsアプリでは App.Configがプロジェクトに追加され、WebアプリではWeb.Configが追加される。App.Configはコンパイル後に(ApplicationName).(Application Type).config という形式の名前に変更される。
例えば hoge.exe.config とかいう感じで。
posted by なっちゃん at 22:18| 静岡 ????| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2006年07月07日

DataGridに書式を指定して表示

DataGridはデータの一覧表示に便利なコントロールでよく使う。
その際、列の書式設定には通常ColumnStyleコレクションエディタを使うが、問題はあらかじめ決まったテーブルを表示するとき以外には全く利用価値がないことだ。
マスター参照用にマスターの数だけフォームを用意するのは、2・3個ならまだしも、それ以上はうんざりする。一つで汎用的に作るのが賢いプログラマである。
今回、その方法はSELECT文の書き方だけでできるのでとても簡単である。

サンプルはOracel(10g)のデータを使った。
書式の効果がわかりやすいように、日付・時刻はNUMBER型になっている。

1.普通の書き方とその表示画面はこうなる。

20060707-1.gif

sSql = "SELECT " & _
"inputymd ""入力日""," & _
"inputhms ""時刻""," & _
"denpyono ""伝票No.""," & _
"jyucyuymd ""受注日付""," & _
"case denkbn when 0 then '売上' when 5 then '現金売上' else 'その他' end ""伝区"" ," & _
"tokuinm ""得意先""," & _
"gokei ""合計金額"" " & _
"FROM t_jyutyub_h " & _
"WHERE tantocd like '%" & para & "%' " & _
"AND jyucyuymd >= " & para2 & " " & _
"ORDER BY jyucyuymd DESC"

2.書式指定付きの書き方とその表示はこうなる。

20060707-2.gif

sSql = "SELECT " & _
"TO_CHAR(TO_DATE(inputymd,'YYYYMMDD'),'YYYY/MM/DD') ""入力日"", " & _
"TO_CHAR(TO_DATE(TO_CHAR(inputhms,'FM000000'),'HH24MISS'),'HH24:MI:SS') ""時刻"", " & _
"denpyono ""伝票No.""," & _
"TO_CHAR(TO_DATE(jyucyuymd,'YYYYMMDD'),'YYYY/MM/DD') ""受注日付""," & _
"case denkbn when 0 then '売上' when 5 then '現金売上' else 'その他' end ""伝区"" ," & _
"tokuinm ""得意先""," & _
"TO_CHAR(gokei,'9,999,999,990') ""合計金額"" " & _
"FROM t_jyutyub_h " & _
"WHERE tantocd like '%" & para & "%' " & _
"AND jyucyuymd >= " & para2 & " " & _
"ORDER BY jyucyuymd DESC"


数値型の日付(年月日)の書式指定は、日付型に変換(TO_DATE)後、さらに文字型(TO_CHAR)に変換している。
時刻の場合だと、5桁(90130=9時1分30秒)と6桁(101545=10時15分45秒)が混じるので、事前に文字型(FM修飾子付)に変換し、6桁に統一してから日付型に変換している。
合計金額の場合、最大桁数分のFormat書式を指定する。これが少ないと、Excelのように#で表示されてしまう。桁の無いところは[9]を指定すると空白が出力され、[0]を指定すると0が出力される。
posted by なっちゃん at 21:20| 静岡 ??| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2006年07月04日

VB2005はASP.NET(VB.NET2003)と相性が悪い?

これは、たまたま自分の環境だけの問題なのかよくは判らないが、VisualBasic2005Expressを現在の開発環境(VS.NET 2003)にインストールしたところASP.NET(2003)でこれまで動いていたWebアプリが急にmachine.configに不正があるという意味のエラーで起動できなくなってしまった。但しWindowsアプリ(VB.NET)は問題なく動く。原因が特定できず仕方なくVB2005を.NET Framework2.0を含め全てアンインストールしたところ、何事も無かったように正常に起動した。
一体何が悪さをしていたのか。今のところ仕事でVS2005は使うことは無いので支障は無いが、追々調べて見るつもりである。

追加補足:
VB2005Expressと.NET Framework2.0をアンインストールした後、Webアプリは正常に起動したが、その後データベースへの登録のとき「サーバーは要求を処理できませんでした。 MTS オブジェクト コンテキストがありません」のエラーが発生するようになった。他にもVS.NET関連のファイルの関連付けが解除されsln(ソリューション)ファイルのアイコンも不明なアイコンに変わってしまった。
そこで、VS.NET2003の修復セットアップをおこなってようやく元通り動くようになった。VS.NETとVS2005は同居させない方が良いのかな・・・・。


続きを読む...
posted by なっちゃん at 10:47| 静岡 ????| Comment(2) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする