2012年3月1日木曜日

[ASP.NET]データグリッド上で行Noをcommandargumentにもたせる

From Evernote:

[ASP.NET]データグリッド上で行Noをcommandargumentにもたせる

忘れるシリーズ。

データグリッド上の行NoをCommandArgumentに持たせる。
もしくは<% %>の中身をそのまま表示として使ってもヨシ。

CommandArgument='<%# Container.DataItemIndex + 1%>'

2012年2月29日水曜日

[ASP.NET]データグリッドフッターに合計行作成

From Evernote:

[ASP.NET]データグリッドフッターに合計行作成

データグリッドを作成した後、
最後の行にフッターを作成します。
イメージとしては、合計を表示するhtmlテーブルを定義して、
フッターに入れ込む感じです。


#Region "データグリッド合計フッター作成"
    ''' <summary>
    ''' 合計フッター作成
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub gvList_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles dgdKiban.RowDataBound

        Try
            Select Case e.Row.RowType
                Case DataControlRowType.Header
                    Dim myttalArray(10) As Integer
                    ViewState("mytotal") = myttalArray
                Case DataControlRowType.DataRow
                    CType(ViewState("mytotal"), Array)(1) += MC.ReplaceNaN(DataBinder.Eval(e.Row.DataItem, "以前生産数"), 0)
                    CType(ViewState("mytotal"), Array)(2) += MC.ReplaceNaN(DataBinder.Eval(e.Row.DataItem, "生産数"), 0)
                    CType(ViewState("mytotal"), Array)(3) += MC.ReplaceNaN(DataBinder.Eval(e.Row.DataItem, "累計"), 0)
                Case DataControlRowType.Footer
                    e.Row.BackColor = Drawing.Color.CadetBlue
                    e.Row.Height = 25
                    e.Row.Style.Item("text-align") = "right"
                    With e.Row.Cells(0)
                        .Text = "合計"
                        .Style.Item("font-weight") = "bold"
                        .Style.Item("text-align") = "left"
                    End With
                    Dim objLabel1 As New Label
                    With objLabel1
                        .ID = "GokeiIzenSeisanSu"
                        .Style.Item("font-weight") = "bold"
                        .Text = MC.FormatToComma(CType(ViewState("mytotal"), Array)(1))
                    End With
                    e.Row.Cells(2).Controls.Add(objLabel1)
                    Dim objLabel2 As New Label
                    With objLabel2
                        .ID = "GokeiSeisanSu"
                        .Style.Item("font-weight") = "bold"
                        .Text = MC.FormatToComma(CType(ViewState("mytotal"), Array)(2))
                    End With
                    e.Row.Cells(3).Controls.Add(objLabel2)
                    Dim objLabel3 As New Label
                    With objLabel3
                        .ID = "GokeiRuikei"
                        .Style.Item("font-weight") = "bold"
                        .Text = MC.FormatToComma(CType(ViewState("mytotal"), Array)(3))
                    End With
                    e.Row.Cells(4).Controls.Add(objLabel3)
            End Select

        Catch ex As Exception
            Throw ex
        End Try
    End Sub
#End Region

[SQLServer]他テーブルを利用したUPDATE文

From Evernote:

[SQLServer]他テーブルを利用したUPDATE文

更新の際によくつまづくので…。

-------------------------------------------------
update [dbo].[T_日報計上]  AS A
set  A.受注情報No =
     ( SELECT B.test受注情報No FROM  [dbo].[T_日報基本] AS B where  B.日報No = A.日報No)
-------------------------------------------------
がいいんだけど
SQLServerだとうまくいかないので
FROM句を使うこと。
-------------------------------------------------
update [dbo].[T_日報計上]
set 受注情報No = B.test受注情報No
FROM [dbo].[T_日報基本] AS B
where  B.日報No = [dbo].[T_日報計上].日報No
-------------------------------------------------

ちなみにこれだと、Bテーブルが存在しない場合、AにNULLが入ってしまうので
それが嫌な場合は
さらにExistかWHEREで?あるかどうか調べることをお忘れなく。

[ASP.NET]オリジナルのボタン作成、イベント結びつけ

From Evernote:

オリジナルのボタン作成、イベント結びつけ

 よく忘れるので…

Dim LinkButton As New LinkButton
With LinkButton
.CommandName = "Page"
.Text = "<img src=""images/left_gray.gif"" align=""middle"" border=""0"" alt=""前のページ"">"
   .Tag = 1
AddHandler .Click, AddressOf btnLM_Click
end With

Dim TableCell As New TableCell
TableCell.Controls.Add(LinkButton)
 e.Row.Cells(0).Controls(0).Controls(0).Controls.AddAt(0, TableCell)
又は
e.Row.Cells(0).Controls(0).Controls(0).Controls.Add(TableCell)

[その他]Evernoteと同期する @PGM覚書 #おぼえがきITブログ

Bloggerで

新規投稿の際はevernoteに転送する設定、にして

ブログのタイトルを↑このようにすれば
(@以降がノートブック名、#以降がタグ名)

Evernoteにも転送OKみたい。

文字や絵のはりつけはどうだろう?

OKぽい。

修正の場合は、一度「下書きに戻す」→「投稿」すると、再び送られる。
ただし、もちろんevernote側は2件になっちゃうのでいかがなもんか…。
そしてもちろん削除はNG。

でも、結構使えるかな。


または、evernote→Bloggerも出来るみたいなのでこちらでもいいかも。
これも修正、削除はNGだろうけど。
http://blog.hackingisbelieving.org/2011/11/evernote-blogger_05.html



2012年2月28日火曜日

[.NET]明細テーブルから集計テーブルに加工する方法

明細も出すし、集計も出す…といった際に、
GROUP BY1文で解決すればいいけど、
そうでもない場合や何パターンもある場合に
SQL文をいくつも用意するのは面倒くさい。


基本は明細データを取り出すルーチン1つ用意して、それを加工するようにすると
数値のズレもないし、メンテナンスしやすい。(私は。


処理速度が気にならない場合はこの手を使います。

'----------------------------------------------------

                 
      '↓ここで、明細データをゲットする
      Dim tbl As DataTable = GetMeisaiDT()

                    'ここから加工して集計データを作る!
                    Dim dt As New DataTable
                    dt.Columns.Add("事業部区分", GetType(Integer))
                    dt.Columns.Add("生産量", GetType(Integer))
                    dt.Columns.Add("生産高", GetType(Integer))


                    Dim item As String(,) = { _
                                                {"A部", "事業部区分 = 'A'"}, _
                                                {"B部", "事業部区分 = 'B'"}, _
                                                {"  他", "事業部区分 = 'Z'"}, _
                                                {"合計", ""}}
                    For i As Integer = 0 To item.GetLength(0) - 1
                        Dim dr As DataRow = dt.NewRow
                        dr.Item("事業部区分") = item(i, 0).ToString
                        dr.Item("生産量") = tbl.Compute("SUM(通数)", item(i, 1).ToString)
                        dr.Item("生産高") = tbl.Compute("SUM(生産高)", item(i, 1).ToString)
                        dt.Rows.Add(dr)
                    Next


'----------------------------------------------------

2012年2月24日金曜日

[ACCESS→SQLServer]MicrosoftSQLServerMigrationAssist使い方

MicrosoftSQLServerMigrationAssistの主な使い方①。

ウィザードが始めに立ち上がるのでそれに沿って行なえばいいのだが、
ウィザードで行なっていることは以下の手順。


①新しいプロジェクトを生成する。
 [File]→[New Project]→[プロジェクト名入力]ボタン



②変更するACCESSファイルを登録する。(複数OK)
 画面上の[AddDatabases]ボタンから、ACCESSファイルの場所を指定する。

③データ移管先のSQLServerを登録する。
 画面上の[Connect To SQLServer]ボタンから、SQLServerを指定する。


④データ移管するファイルorテーブルを選択する。

 ②で指定したACCESSが画面左上に表示されていると思います。
 ここを展開していき、移管したいテーブルにチェックをつけましょう。
 「×」がついているテーブルは(おそらく)リンクテーブルだったりして、
 状況によってはデータ取り出せないよ!というマーク。
 ちなみにテーブルを選択していると右にテーブルのデザインが表示されるのでチェック。
 

そのうち②へ続く。