他のプロジェクトで開発したソースファイルをプロジェクトに追加

単純にプロジェクトにファイルを追加しただけだと、下のようにビルドアクションが「コンテンツ」になってしまい、ソースファイル内のクラスが利用できません。

ビルドアクションを「コンパイル」にすれば、ソースファイル内のクラスが利用できるようになります。

Windows Azure アプリケーション開発環境の構築

Windows Azure SDK および Windows Azure Tools for Microsoft Visual Studio のインストール
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018

※あらかじめ、Visual Studio 2010(Microsoft Visual Web Developer 2010でもOK)がインストールされていること。

1.上のURLに記載されている注意事項の手順に従って、IISの追加インストールと、VsCloudService.exe をインストールする。

2.Visual Studio 2010 で、[ファイル]-[新しいプロジェクト]を選択すると、テンプレートに[Cloud]が追加されていればOK。

ページ間でデータの受け渡し

Session オブジェクトを使えば簡単にフォーム間で受け渡しができる。

例として、TreeViewでノードが選択されたとき、ノードの情報をSessionに格納してから、他のページをリロードする。

Private Sub tree_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tree.SelectedNodeChanged
Session(“myTreeSelectValue”) = DirectCast(sender, TreeView).SelectedValue
Response.Write(“<script language=’JavaScript’>parent.right.location.reload();</Script>”)
End Sub

リロードされたページでは、Sessionから情報を読み込んで、選択された項目の子ノードを一覧表示する。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack() Then
Exit Sub
End IfDim arg As String = Session(“myTreeSelectValue”)If (Not String.IsNullOrEmpty(arg)) Then
‘選択ノードの子ノードを表示
datagrid.DataSource = CreateDataSource(arg)
datagrid.DataBind()
Else
‘未選択
datagrid.DataSource = CreateDataSource(“”)
datagrid.DataBind()
End IfEnd Sub

javascriptでモーダルダイアログを表示

ボタンが押されたとき、モーダルダイアログを表示する。

Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click

Dim strScr As String
Dim strKey As String

‘同じアドレスでモーダルダイアログを開くと
‘Page_Loadが発生しないことがあるのでQueryStringを設定して毎回アドレスを変更
strKey = Format(Now, “yyyyMMddhhmmss”)

strScr = “<script type=’text/javascript’>”
strScr += “var ret = window.showModalDialog(‘./SelectFileDialog.aspx”
strScr += “?key=” & strKey & “‘,window,’dialogWidth=600px; dialogHeight=150px’);”
strScr += “if (ret == 1) {”
strScr += “}”
strScr += “</script>”

‘Webページに起動スクリプトを登録する
Me.ClientScript.RegisterStartupScript(Me.GetType(), “追加”, strScr)

End Sub

※ダイアログから戻り値で1が返ったとき(OKボタンが押されたとき)の処理は、省略しています。

モーダルダイアログとして表示するフォーム側の処理

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If IsPostBack() Then
Exit Sub
End If

‘IEでモーダルウィンドウを表示する場合は、これが無いと余計なウィンドウを表示してしまう
Response.Cache.SetExpires(DateTime.Now.AddDays(-1))

‘ボタンを押したときにそれぞれのスクリプトを実行する
btnOk.Attributes.Add(“OnClick”, “OnOk()”)
btnCancel.Attributes.Add(“OnClick”, “OnCancel()”)

End Sub

上のOnOk()、OnCancel()のスクリプトはあらかじめフォームに下のような感じで埋め込んでます。

<head runat=”server”>
<title></title>

<!– IEでモーダルウィンドウを表示する場合は、これが無いと余計なウィンドウを表示してしまう  –>
<base target=”_self” />

<script type=”text/javascript” language=”javascript” >
<!–

//初期化
window.onload = function () {
window.returnValue = 0;
}

//決定
function OnOk() {
window.returnValue = 1;
window.close();
}

//キャンセル
function OnCancel() {
window.returnValue = 0;
window.close();
}

//–>
</script>

</head>

CASE文の戻り値の型

int型フィールドの値が0ならば、結果を”(空文字)にしたい場合

このような書き方だと、結果は0になります。

(CASE aaa.[コード] WHEN 0 THEN ” ELSE aaa.[コード] END) AS [コード]

これは、データ型の優先順位があって、暗黙的な変換が行われてしまうことから、”が0に変換されてしまうようです。
データ型の優先順位 (Transact-SQL)

次のように優先順位の低いほうにあわせてCASTすれば、期待どおり結果を”にできます。

(CASE aaa.[コード] WHEN 0 THEN ” ELSE CAST(aaa.[コード] AS VARCHAR) END) AS [コード]

■参考
http://msdn.microsoft.com/ja-jp/library/ms181765.aspx