2009年10月30日金曜日

SqlCEConnectionBuilder?

実際には含まれていないw
ということで自作してみる。

ConnectionBuilderはSystem.Data.Common.DbConnectionStringBuilderを継承して作ればいいので、基本的な部分はほとんど実装することないんだよね。他のConnectionBuilderの実装を見たわけではないんだけど、恐らくはここらへんをクリアしてれば十分かと。

  • 初期値の保持
  • 接続文字列には初期値以外の設定を出力する

初期値についてはMSDNとかTechNetを見てもらえば記載されているのでそれを転記。あとは接続文字列出力部分、なんだけどそのメソッド自体は特にどうこうしなくてもいいのよね。

設定の保持方法を他と合わせてあげればOK。実際にはDbConnectionStringBuilderにて用意されているHashTableに値を追加したり削除したりするよう、プロパティの実装をやってあげればOK。

2009年10月21日水曜日

札幌イノベーションデイ2009

行ってきました!

今回の目的は大きく分けて二つ。
一つはエバンジェリストのセッション。もう一つは・・・アレを見てくることw

ところがアレについてはBlogでの公開にNGがかけられたので書けませんw

エバンジェリストさん達のセッションはやはり面白い。
今回は「センサー」「アジャイル」「WindowsMobile」と聞いてきたんだけど、色々な意味でも面白かったw アジャイルのセッションをやっていた長沢さんのヤツは2部構成だったんだけど、2部目は別セッションのため参加できず。資料だけもらってきましたわ。

今回一番心に残ったのは、
「WindowsMarketPlaceでアプリを公開すると目につきます!・・・なぜなら(まだ)数が少ないから!」と、自嘲気味に話してくれた事だろうかw

ちなみに当方はTDD知っている人に手を挙げた二人のうちの一人ですw

2009年10月8日木曜日

JPC2009札幌 マイクロソフトパートナーカンファレンス2009

久々にイベントのため外出!
マイクロソフト系のイベントはできるだけ出席するようにしていたんだけど、今年や去年は殆ど参加してなかったんだよねぇ。久々だったのでいい刺激になりました。

昔、営業窓口だった方がいつのまにやら支店長に。びっくりしたなぁ。
多分相手方はこっちの事忘れているだろうけどねぇw

その方が、「あるイベントで隠し玉を用意しています」なんていうから、もうw
思わずそっちも参加登録しましたw
隠し玉については恐らく公表してはいけないっぽいので、イベント後までは内緒みたい・・・。

ま、もともとそのイベントはエバンジェリストの方も多数来るので、マジメに聞きに行きたかったヤツなので・・・。ふんぎりをつけるいいきっかけだったな。

2009年10月5日月曜日

SqlServer CompactEditionでテーブル一覧取得

忘れないようにのメモとして。

SqlServer CompactEditionだとストアドの類がないので主キー情報を取得する SP_KEYS 等は利用できない。こういう場合は情報スキーマ[INFORMATION_SCHEMA]を利用して取得する。このあたりは2005以降のSqlServerと一緒

  • テーブル一覧取得

SELECT * FROM INFORMATION_SCHEMA.TABLES

  • 項目一覧取得

SELECT * FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLENAME = ‘テーブル名’

  • 主キー情報取得

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = ‘テーブル名’

とりあえずはこのぐらい。

2009年10月2日金曜日

DataGridViewでアンバウンド時にソート

過去にもちろちろ書いておいたんだけど、修正が発覚したのでw

DataGridViewでアンバウンド時にソートしようと思うと、標準機能だけでなくSortメソッドを利用したソートを行う事が必要になるんだよね。んで、その際には実際に判断を下すためのIComparerインターフェースを継承したクラスを用意すると手軽にいけるのよ。

その際、Compareメソッドをオーバーライドして2値の比較結果を算出するようにするんだけど、その際にちょっと考慮する必要がある事が。

AセルとBセルの値においては「値が無い」状態が数種類存在する

ここなんだよねぇ。具体的にはNothingとDBNullなんだけど、Nothingは「比較対象がない」場合と「比較対象のセルに値がない」場合、でDBNullは「比較対象のセルの値がDBNull」という場合。なので実際にはこういったロジックになるんじゃなかろうか。

Dim originalCell As DataGridViewCell = TryCast(originalRow.Cells(sortChild.ColumnIndex), DataGridViewCell)
Dim comparedCell As DataGridViewCell = TryCast(comparedRow.Cells(sortChild.ColumnIndex), DataGridViewCell)

If ((originalCell Is Nothing) OrElse (originalCell.Value Is Nothing) OrElse (IsDBNull(originalCell.Value))) AndAlso _
   ((comparedCell Is Nothing) OrElse (comparedCell.Value Is Nothing) OrElse (IsDBNull(comparedCell))) Then
    Continue For ‘セルの値は同じ
End If

多分こんな感じ。ソース中で「セルの値は同じ」場合にContinueしているのは深読みしてくださいw