最近、どうも Redim というキーワードで検索が多いようだ。よって、Redimネタをひとつ。

Dim a() As Integer

と定義し、

Redim a(10) と再定義したとき、配列はどのように確保されるでしょうか?

1. a(1) ~ a(10) の 10個
2. a(0) ~ a(9) の 10個
3. a(0) ~ a(10) の 11個

さて、どうだろう。

まず、C言語等をされている方は 2. かなと思われるかも知れない。が、配列は「指定した値まで」確保するので 2. は間違い。
1. か 3. か。これはこの条件だけでは正確な答えは出せないのだ。

VBAには配列の下限を決める宣言がある。 Option Base だ。
Option Base 0 とすれば配列は 0 から、Option Base 1 とすれば配列は 1 から開始する。よって、

Option Base 0 なら 3. が正解。Option Base 1 なら 1. が正解になる。デフォルトは、というと Option Base 0 である。

私自身は基本は Option Base 0 を使っている。値自体は1から入れるのだが、配列のソートをする際に 0 の領域をスワップエリアとして使うことが多い。
Option Base 1 は、Redim とはちょっと違うが、Excelのシートとやりとりするとき。バリアント型にがさっ、と突っ込むが、セルの列、行とインデックスを合わせられるので簡単になっていい。
SQL 文で Having を使えていない人がいた。RDBを触る以前にSQL文を覚えようとしていた頃はそんなこと、あったなあ。

さてさて。Havingは検索結果に条件を付けられるモノである。

・集計結果のグループ人数が10以上のデータ

とか、そういう使い方ができる。

実態のデータベースも書かずに例文を、というのはやめておくが、これによりSQL文を分割せずに済むことがよくある。

ただし。処理の回数が短ければいい、というものではない。情報システムはメンテナンスが重要なので、それができないような組み方はしないこと。まあ、使うにしろほどほどに、ってことで。
SQL Server 2008 R2 Express Edition のインストールと設定の記事を書こうと思ったが、すでに出来のいいものがネット上にある。

http://awoni.net/fc/sql-server-2008-express

ここでは4つのエディションが紹介されているが、
・Microsoft SQL Server 2008 R2 RTM - Express with Management Tools
でいいのではないかと思う。本来は Express with Advanced Services をと言いたいところであったが、対応OSにXPが入っていなかったから・・。

ダウンロード時の注意としては、32ビット用と64ビット用がある。
・64ビット用  SQLEXPRWT_x64_JPN.exe
・32ビット用  SQLEXPRWT_x86_JPN.exe

である。

確か .NET Framework 3.5 以上のインストールがいるんじゃなかったか?入っていないと導入されるはず。
(最近 VIsual Studio 2010 を入れたのでちょっとごっちゃになっている・・)

整理したらまた書く。