SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)

コンポーネントの組み合わせで実現!
業務要件を満たす帳票アプリケーションの作り方

MultiRow + InputMan + ActiveReports = Windows業務アプリケーション

  • X ポスト
  • このエントリーをはてなブックマークに追加

データ連携コードを記述する

データセットの内容を表示する

 .NETでは、さまざまなコントロールが項目名を指定しておいてデータソースにDataTableを指定すると、指定した項目名と一致する列の値を自動的に画面に表示できます。MultiRowでも明細行に相当するRowセクションに配置したセルコントロールのDataFieldプロパティに項目名を指定しておけば、DataTableに含まれているレコードを自動的にすべて表示することが可能です。

リスト2 CZ0912_Form.vbより抜粋(その1)
Using _prco As New CZ0912Bound
    ds = _prco.GetRecords("admin", "", billNo)
End Using
Me.GcMultiRow1.DataSource = ds
Me.GcMultiRow1.DataMember = "Bill"

 ヘッダセクションやフッタセクションについてはDataFieldプロパティを指定しても自動的に表示されないので、Cellsプロパティでセル名を明示的に指定したコードを記述しなければなりません。

リスト3 CZ0912_Form.vbより抜粋(その2)
Me.GcMultiRow1.ColumnHeaders(0).Cells("CustomerName_Cell").Value = _
    ds.Tables("Bill").Rows(0).Item("CustomerID")
With ds.Tables("BillCondition").Rows(0)
    Me.GcMultiRow1.ColumnHeaders(0).Cells("EndDate_Cell").Value = .Item("EndDate")
    Me.GcMultiRow1.ColumnHeaders(0).Cells("PreInvoice_Cell").Value = .Item("PreInvoice")
    Me.GcMultiRow1.ColumnHeaders(0).Cells("PreIncome_Cell").Value = .Item("PreIncome")
End With

データセットを更新する

 画面の内容をDataSetに反映する場合も、表示するときと同様に明細部分については自動的に画面の内容がDataTableに反映されますが、ヘッダセクションやフッタセクションに配置したセルコントロールの内容は、Cellsプロパティにセル名を指定して明示的に値を転記しなければなりません。

リスト4 CZ0912_Form.vbより抜粋(Update_Button_Click)
With ds.Tables("BillCondition").Rows(0)
    .BeginEdit()
    .Item("PreInvoice") = Me.GcMultiRow1.ColumnHeaders(0).Cells("PreInvoice_Cell").Value
    .Item("PreIncome") = Me.GcMultiRow1.ColumnHeaders(0).Cells("PreIncome_Cell").Value
    .Item("CarryOver") = Me.GcMultiRow1.ColumnHeaders(0).Cells("CarryOver_Cell").Value
    .Item("NowConsume") = Me.GcMultiRow1.ColumnHeaders(0).Cells("NowConsume_Cell").Value
    .Item("NowTax") = Me.GcMultiRow1.ColumnHeaders(0).Cells("NowTax_Cell").Value
    .Item("NowInvoice") = Me.GcMultiRow1.ColumnHeaders(0).Cells("NowInvoice_Cell").Value
    .Item("EndDate") = Me.GcMultiRow1.ColumnHeaders(0).Cells("EndDate_Cell").Value
    .EndEdit()
End With
Using _prco As New CZ0912Bound
    If _prco.SetRecords(ds, "admin", "", billno) Then
        Me.Update_Button.Enabled = False
      Me.Print_Button.Enabled = True
        Me.ToolStripStatusLabel1.Text = Now.ToString("MM/dd hh:mm:ss")
    End If
End Using

実行結果

 サンプル「CZ0912_MultiRow」を実行して右上の請求番号を選択して[検索]をクリックすれば、該当する請求明細書のデータをmdbファイルから読みだして画面に表示します。画面上で値を変更したときは自動計算項目については、自動計算が行われ、変更値に連携した値になります。

 [更新]をクリックすれば画面上の値でmdbファイルの内容を変更します。なお、Visual Studio上で実行した場合は、「bin\debug」フォルダなどにコピーされたmdbファイルが更新されるので、実行するたびに初期値の内容になります。注意してください。

図9 実行結果
図9 実行結果

次のページ
印刷機能を追加する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4757 2009/12/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング