2008年5月26日月曜日

SqlServer Management Studio ExpressではSqlServerログが見られない?

MSDNで検索してもManagementStudioで、ログの表示が行えます、とあるのに・・・。

Express版ではダメですか、そうですか。

いやぁ・・・今まで気づかなかったw

SqlServer2008の新機能

ちょろちょろっとPASSJ(SqlServerのコミュニティ)がINETAJ Day 2008というイベントでプレゼンした内容のスライドを見ているんだけど、なかなか2008になって追加されている面白い機能ってのがあるねぇ。まだまだ見ている途中なんだけど、次の2点は今すぐにでも欲しい!

・複数行INSERT
INSERT INTO T1 VALUES (1, 'A'),(2,'B'),(3,'C');
なんて書き方が可能に!大量データ生成の際はレスポンスを一気にあげれるかも。

・MERGEステートメント
詳しい書き方やレスポンスがわからないんだけど、「データが存在する際はUPDATE、存在しない際はINSERT」というのをやってくれるそうで。今まではロジック判断だったのが、SQLステートメントでできるってのは楽だねぇ。

・変更追跡
簡単に言うとレコードレベルの変更を追跡できる仕組み。今までだったらトリガとか使って履歴情報作っていたようなことが、SqlServerの機能として提供されるとな。

これだけでも結構嬉しい機能強化かも・・・。実際には暗号化の話やデジタル証明書の話とかもっとあるみたいなんだけどね。自分たちの仕事にもろ影響がでそうなのは、まずこのあたりかな?

2008年5月22日木曜日

画面デザインの重要性

ERPはフロントシステムから見直せ!- @IT情報マネジメント
元ネタはERPの話として言われているんだけど、ものすごく重要なことだったので。

『アマゾン・ドットコムやアップルのiTunes Storeの使い方を、皆さんは誰から教えてもらいましたか。研修を受けて使えるようになったのでしょうか。そんなわけはありませんね。こうしたシステムは初めから誰にでも使えるように、直感的で分かりやすい操作性を兼ね備えているのです。これからの業務システムもこうしたシステムと同様に、直感的で操作性に優れているべきです。操作が複雑で研修が長時間必要になるシステムは、すでに時代遅れになりつつあります』

これはSalesForce.comという企業のCTOな人が講演で話した内容。
個人的にはまさしくその通り!というところで、業務システムだから教育しないといけないとかそういうのは思い込みであって、本当なら少数の時間教育するくらいで使えるようになっていないといけないだよねぇ。

ただこれを踏まえたデザインというのは、ものすごく難度が高く専門性も高いんだよなぁ・・・。だからデザインだけで一分野築けるくらいなんだし、専門の本とか雑誌とか色々売っているくらいだもんね。たまーに読むけど、元々センスがない人間なのでなかなか身につかないw

継続して努力せんといけませんなぁ・・・。

2008年5月21日水曜日

MultiRow Ver5.0

今日付けのプレスリリースで発表された、「MultiRow for WindowsForm」。

えーと、Ver4を利用しようとして断念した経緯を持つこちらとしては「なんだとこのやろう」的な感じですがw

内容を見てみるとさすがに、Ver4と互換性はありません!と普通に言って来るほどだから、内部的にがっつりと構造から何から何まで変更したんだなぁ・・・というのがよくわかる。
ExpressEditionに厳しくなったのも仕方ないんだ、とはわかる。デザイン用アプリ用意していないからExpressEditionの時は、自前でロジック組めよ、というのもわかる。
しかしなんというか微妙な気持ちだ・・・。

GrapeCityはVer4のMultiRowは黒歴史として封印でもしようとしてるのかねぇw

2008年5月19日月曜日

リーチ!

この間MCA Databaseに合格してMasterになるためにはあとApplicationを残すのみとなりました。

合格したらこのサイトでもMasterのロゴ貼り付けますw
ええ、もちろん自己満足のためですw

自分は根っからの技術者なんだけど、なぜかMCA制覇目指しているんですよねぇ。
それはもう変わり者というのを自覚してますからw

2008年5月13日火曜日

SilverlightでWinForm

GOA - System.Windows.Forms for Microsoft Silverlight and Adobe Flash

なんというか今日はこういう見てくれの話題に驚きっぱなし。
SilverlightやFlashでWinFormを再現しようということを、この会社(?)が実現しちゃったんだよなぁ。
正直なところ、これをみるとAsp.Netでふつーに作った画面がさみしくてしょーがないくらい。マシンパワーが潤沢になっている今、冗談抜きでこういうUIを要求されるのが多くなるだろうなぁ。

今までは「ブラウザだから・・・」といって回避できたことが、それも通用しなくなるんだろうね。

だって、できてしまっているんだから。

OPENROWSET関数を利用するの必要な権限・・・

絶対現地展開するときに忘れるだろうからメモ。

OPENROWSET関数を利用するにあたって必要となるのが、BULK系のコマンドを利用できる権限(+そのほかフォルダとかアドホックに対する権限は必要であれば・・・)。

暫定的にBulkAdminロールにDomainUsersを加入させることによって動作するようになったけど、雰囲気としてデンジャラスな気がする・・・w
まー、細かいロールやら権限やらの調整は後だな。

Health COMMON USER INTERFACE -MS CUI-

元ネタ:Microsoft Health Common User Interface - Home

CodePlexにて始まっているUIのデザインインターフェースに関してのプロジェクトで、Silverlight2を利用してこんなこともできる、というデモサイトが作られていたんだよね。

ざっと眺めてみて・・・発想力の違いに驚かされる。
めちゃくちゃなほどの大量の情報をうまいこと視覚的にまとめているんだよねぇ・・・。
こういうセンスが今ものすごくほしいんだけどw
Silverlight2は1.0と違って.Net系言語から操作することが可能だからなぁ・・・。
できるようにはなっておくべきだねぇ。

2008年5月1日木曜日

HitTest?

以前のエントリでHitTestを利用して、セルをクリックした際のフォーカス制御を直感的にしたい、というのを書き始めていたけど、見事にすっかり忘れていたので改めて追記~。

目的から考えると必要になるのは、クリックした際のマウス座標なんだよね。で、これを扱うのがHitTestと呼ばれるクラス。例えば次のようなロジックにすると、クリックした座標が取得できたりする。

Dim grdhitTest As HitTestInfo = Me.HitTest(e.X, e.Y)


引数で渡しているものとかで、なんとなく想像がつくとおり基本的にはマウス系のイベントで利用するのが多いかな?

その手のイベントではイベント引数でマウス座標が渡ってくるので、それを用いてHitTestを取得することになるんだよね。



で、この情報をDataGridViewでホストしているユーザーコントロール、今までの話でいったらMultiLayoutControlへと渡してあげるってのが第一段階だと思う。

あとは渡されたコントロール側で、その座標の直下に存在するコントロールを洗い出し、そのコントロールへフォーカスを設定してあげれば当初の目標は達成できるかな。


洗い出すためのやりかたは、渡された座標がコントロールの領域に含まれるか、という判断になるね。



''' <summary>指定した座標の下に存在するコントロールを取得します</summary>

Private Function GetChildControlInContainer(ByVal owner As System.Windows.Forms.Control, ByVal pt As System.Drawing.Point) As System.Windows.Forms.Control
  For Each child As System.Windows.Forms.Control In owner.Controls

    If child.HasChildren Then

      Dim result As System.Windows.Forms.Control = Me.GetChildControlInContainer(child, pt)

      If result IsNot Nothing Then Return result

    End If

    If Not Me._focusControl.IsEditableControlType(child) Then Continue For
#160;   Dim childRect As System.Drawing.Rectangle = _

      New System.Drawing.Rectangle(child.Left, child.Top, child.Width, child.Height)

    If childRect.Contains(pt.X, pt.Y) Then Return child

  Next 
  Return Nothing
End Function



こんな感じでやってあげれば、あとは見つかったコントロールにフォーカスを移動してあげればOK。

ちょっと記憶が薄いんだけど、FrameWorkで用意されているメソッドを利用するやり方もあるんだけど、そのコントロール自体が表示されている状態でなければうまいこといかないってのがあったんで、自前でこういった処理を用意した・・・ハズw