2011年12月26日

VS2010にServicePack1を適用するとByValが付加されなくなる

今日何気なしにコードを書いていたらパラメータの定義の際、ByValが表示されていないことに気が付いた。
これまで入力しなくても勝手に付加されたのに何でだろう?って思って調べてみたらServicePack1を適用するとそうなるらしい事が判った。
VB6までは指定しなければ既定でByRefだったが、VS2010 SP1からそれがByValになったわけか(注)・・・何か違和感(喪失感)感じるな〜。

注)VB.NETになってから既定でByValとは知っていたが、勝手に付加されているので既定であることを自覚することは無かった。
posted by なっちゃん at 17:36| 静岡 晴れ| Comment(0) | TrackBack(0) | ETC | このブログの読者になる | 更新情報をチェックする

2011年09月09日

VS2005からSQLServer2008R2に接続できない

VB2005の開発環境でサーバーエクスプローラを開き、SQLServer2008R2を稼動しているPCに接続しようとしたところ「接続の確認」ボタンでは問題なかったのに「OK」ボタンをクリックした途端、下図のようなエラー「このバージョンのサーバーはサポートされていません・・・」が発生した。

接続エラー

今までバージョンが違っても使えたと思ったのに変だ・・・と思って調べたところパッチが出ていることを知った。
Microsoft SQL Server 2008 サポート用 Microsoft Visual Studio 2005 Service Pack 1 更新プログラム
posted by なっちゃん at 15:18| 静岡 雨| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

Office アプリケーションの組み込み定数の値を取得する方法

WindowsおよびWebアプリのなかでExcelなどを操作することがある。
その際にVBAを利用するのだが、参考書などにはコマンドの引数に定数が使われても、実際のVBのなかでは定数が利用できないことの方が多い。
そこで、定数の実際の数値を知りたいと思うのだがこれが結構調べても載っていない。

そんな時Microsoftの下のサイトを見つけた。
Office アプリケーションの組み込み定数の値を取得する方法

ここにはVB6のサンプルコードが載っている。
それに基づいて作ってみたところ全ての組み込み定数の値を知ることができた。(下図)
これは重宝する。
Excel2003の組み込み定数
posted by なっちゃん at 11:36| 静岡 雨| Comment(0) | TrackBack(0) | ETC | このブログの読者になる | 更新情報をチェックする

2011年09月05日

Windows CE のデバッグができなくなった理由

Visual Studio 2005 を使って Windows CE の開発を続けていたのだが、途中でVS2008,VS2010の開発環境を導入したところ、いつのまにかWindows CEのデバッグ時にActiveSyncで繋がれた端末側でエラーが発生しデバッグが出来なくなってしまった。
あれこれ調査した結果、プロジェクトのプロパティの「デバイス」にある「配置オプション」の「Service Pack を含む最新バージョンの .NET Compact Framework を配置」を無効にすると正常にデバッグできようになった。
以前はVS2005だけの環境だったので有効になっていても問題が起きなかっただけだと分かった。
posted by なっちゃん at 14:32| 静岡 雨| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2011年08月05日

webサーバーでデバッグを開始できません

WindowsXPでVisual Studio 2010を使ってWebアプリを作成中、途中からIISを入れてWebサーバ上でデバッグしようとしたところ、「webサーバーでデバッグを開始できません」というエラーが出た。(下図)

エラー画面

散々調べまわった挙句、ヘルプに書かれた次の一言で原因が判明。
ローカル コンピューター (Visual Studio を実行するコンピューター) で、Visual Studio をインストールした後に IIS をインストールしましたか。 IIS は、Visual Studio の前にインストールする必要があります。 後でインストールすると、ASP.NET の再登録が必要になることがあります。

ASP.NETを再登録するには
コマンド プロンプト ウィンドウで、「systemroot\Microsoft.NET\Framework\ versionNumber \aspnet_regiis -i」というコマンドを実行します。 (下図)

ASP.NETの再登録

これで無事デバッグができるようになった。...確か以前にも同じ羽目に陥ったと記憶している(^^;

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

2011年08月01日

IPアドレスの取得時の注意

FTPクライアントを作った時、WindowsXPの開発環境では問題なく動作していたのが、本番環境のWindowsServer2008ではハングアップしてしまった。最初はファイヤーウォールが問題かと考えいろいろ設定したのだが一向に解消されない。
仕方なく本番環境と同じWindowsServer2008にVisualStudioをインストールして動作確認したところ、やっと原因が判明した。

問題は自分のIPアドレスを取得する際の Dns.GetHostEntry(Dns.GetHostName()).AddressList(0) に問題があった。

XPまでなら、IPアドレスはIPv4つまり、192.168.0.0などで表現されるIPアドレスが取得されるが、Vista以降ではネットワークアダプタにIPv6のインターネットプロトコルが標準で有効になっているのでAddressList(0)ではIPv4ではなくIPv6のアドレスが取得されてしまうからだった。

そこでIPv4を確実に取得するように以下の修正が必要になる。
(Imports System.Net を忘れずに)

Dim ipa As IPAddress
Dim iphEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
For Each ipAddr As IPAddress In iphEntry.AddressList
If ipAddr.AddressFamily = Sockets.AddressFamily.InterNetwork Then
ipa = ipAddr
Exit For
End If
Next

AddressFamilyを調べることでIPv4かIPv6か判定できる。
IPv4=Sockets.AddressFamily.InterNetwork
IPv6=Sockets.AddressFamily.InterNetworkV6
posted by なっちゃん at 17:43| 静岡 雨| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2011年07月27日

Windows CE プログラムのバージョン取得

今Windows CE のアプリを作っているのだが、自アプリのバージョン(アセンブリバージョンのみ有)を取得しようとして、従来の一般アプリの方法「自アプリケーションのバージョンを取得」が使えないのに気が付いた。

調べてみたら全く知らない方法で取得することが判った。
Dim ver As String = _
System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString

これはMicrosoftの.NET Compact Framework に関するよくある質問サイトで見つけた。
.NET Compact Framework 内のファイルのバージョンを確認できますか
posted by なっちゃん at 18:03| 静岡 雨| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする

2011年07月26日

マウスイベントと同時にキーボードの状態を取得するには

SHIFTキーとCTRLキーを押しながら右クリックしたことを知るには
・VB6
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
If Shift = (vbShiftMask + vbCtrlMask) Then
MsgBox "SHIFT+CTRL+右クリック"
End If
End If
End Sub

・VB.NET
Private Sub Form1_MouseUp(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
If e.Button = Windows.Forms.MouseButtons.Right Then
If Control.ModifierKeys = (Keys.Shift + Keys.Control) Then
MsgBox "SHIFT+CTRL+右クリック"
End If
End If
End Sub
・VB2005以降ならControl.ModifierKeysの代わりに以下も可能
My.Computer.Keyboard.ShiftKeyDown And My.Comp.Keyboard.CtrlKeyDown
posted by なっちゃん at 16:03| 静岡 雨| Comment(0) | TrackBack(0) | VB vs VB.NET | このブログの読者になる | 更新情報をチェックする

2011年04月20日

ListViewのページングの問題点。ページ位置を初期化(リセット)させるには

ASP.NET 3.5から採用されたListViewコントロールにページング機能を付ける場合、DataPagerというコントロールを使う。
これは便利なのだが、一つ困ったことに、データ表示する条件を変えて再表示させると前回のページ位置を保持して先頭ページから表示しないというバグ(?)がある。
具体的に言えば、条件無しで全30件のデータを1ページ10件で表示したとする。
2ページ目に移動した後、条件を変えて検索し結果が13件あったとすると、2ページ目の3件を表示してしまう。先頭から表示するのが普通だと思うがそうならない。
そこで、検索時にDataPagerをリセットさせて先頭ページから表示させようと思うのだが、
これが結構難題だった。プロパティで簡単にできるかと思ったのだが、そのようなプロパティは無く、結局内部でイベントを発生させて先頭に移動させる方法が必要だった。

参考にした海外のサイト:http://leedumond.com/blog/resetting-the-page-index-in-a-listview/

ページ移動する場合は、DataPagerのOnPagerCommandメソッドで指定されたイベントで先頭ページ(NewStartRowIndex)を指定するが、再検索時にこのイベントを強制的に発動させる必要がある。

'- 1ページ目から表示させる処理 --
Private Sub PagerReset()
Dim dp As DataPager = ListView1.FindControl("pager")
If Not dp Is Nothing Then
'リセット用もしくは先頭ページへのコマンドを指定
Dim cmdEventArgs As CommandEventArgs = New CommandEventArgs("Reset", "")
Dim tempPagerField As TemplatePagerField = dp.Fields(0)
If Not tempPagerField Is Nothing Then
'ここでPagerCommandのイベントが処理される
tempPagerField.HandleEvent(cmdEventArgs)
End If
End If
End Sub
posted by なっちゃん at 15:33| 静岡 雨| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2011年02月14日

TextBoxにフォーカスを当てたとき、選択状態(反転)させるには

ブラウザ上のテキストボックスをタブキーなどで移動すると自動で文字列が選択状態となっている。しかし、ロード時にTextBox.Focusとやってもカーソルは移動しているが選択状態つまり反転はしていない。これを実行するには以下のようにすると良い。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
If Not IsPostBack Then
TextBox1.Text = "あいうえお"
TextBox1.Attributes.Add("onfocus", "this.select();")
TextBox1.Focus()
End If
End Sub


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