2013年7月12日金曜日

DataTableからLINQを使ってデータを取り出す

久しぶりにDataTableに対してLINQを使いました。
いまさらな感じは否めませんが,記録として残します。

    

    Public Sub DataTableLinqSelectTest()

        'テスト用テーブル作成
        Dim dt As New DataTable("TestTable")
        With dt.Columns
            .Add("Code")
            .Add("Name")
            .Add("Type")
            .Add("Value", Type.GetType("System.Int32"))
        End With

        Dim nr As DataRow

        nr = dt.NewRow
        nr("Code") = "001"
        nr("Name") = "株式会社テスト工業"
        nr("Type") = "製造"
        nr("Value") = 100000
        dt.Rows.Add(nr)

        nr = dt.NewRow
        nr("Code") = "002"
        nr("Name") = "株式会社テストマテリアルズ"
        nr("Type") = "製造"
        nr("Value") = 200000
        dt.Rows.Add(nr)

        nr = dt.NewRow
        nr("Code") = "003"
        nr("Name") = "株式会社テストシステム"
        nr("Type") = "ソフトウェア"
        nr("Value") = 150000
        dt.Rows.Add(nr)

        nr = dt.NewRow
        nr("Code") = "004"
        nr("Name") = "株式会社テストストア"
        nr("Type") = "小売"
        nr("Value") = 150000
        dt.Rows.Add(nr)

        nr = dt.NewRow
        nr("Code") = "005"
        nr("Name") = "株式会社手須戸インダストリー"
        nr("Type") = "製造"
        nr("Value") = 250000
        dt.Rows.Add(nr)

        'Typeが「製造」でNameに「テスト」を含むデータを取得
        Dim query = From el In dt.AsEnumerable
                    Where el("Type") = "製造"
                    Where el("Name") Like "*テスト*"
                    Order By el("Code") Ascending
                    Select el

        'データの書き出し
        For Each r As DataRow In query
            Debug.WriteLine(r("Code") & ": " & r("Name"))
        Next

        'Valueの合計を取得
        Dim valuesum = query.Sum(Function(el) el("Value"))
        Debug.WriteLine("Sum: " & valuesum)

    End Sub

    

2013年7月3日水曜日

弥生会計13のインストール中に発生したエラー

弊社の環境が悪いのか,よく問題が発生する弥生会計(ネットワーク版)のインストールですが,今回は弥生会計12からの移行のため,弥生会計13をインストールしました。3台インストールしましたが,うち2台で問題が発生しまたので記録として残します。

1台目

問題なくインストール完了

2台目

 "所得税確定申告モジュール(平成24年分)" --> エラーメッセージ:終了コード(-1073741819)で、インストール処理を終了しました。
インストールは順調に進んでいましたが,最後のモジュールでエラーが発生しました。試しにもう一度最初からインストールをやり直すと,今度はうまくいきました。

3台目

"Microsoft Windows(KB2784152)の修正プログラム" --> エラーメッセージ:終了コード(-939523085)で、インストール処理を終了しました。
こちらはなかなか手間取りました。いろいろ試した経緯を記録します。

直接KB2784152をインストール


インストールメディア(DVD)の中に \Runtime\KB2784152 というフォルダにKB2784152のセットアップファイルがあるので,これを直接起動しましたが,うまくいきませんでした。

インストーラーはエラーを検出しました: 0xc80003f3


Windows Update ダウンロードの一時フォルダーの名前を変更


マイクロソフトのサポートに該当する問題が記載されているので,これを試しました。

Windows Update または Microsoft Update を使用して更新プログラムをインストールしようとすると、エラー コード 0X80248007 が表示される

「方法 1: Windows Update ダウンロードの一時フォルダーの名前を変更します。」とあるので,記載通りに作業します。

以下のテキストに rename.bat と名前を付けて保存し,「管理者として実行」するだけです。今回の環境はWindows7なので,「Windows Vista および Windows Server 2008 は、以下の手順を実行します。」の項にあるテキストを使用します。

Net stop wuauserv
cd %systemroot%\SoftwareDistribution
ren Download Download.old
Net start wuauserv

コマンドプロンプトが開いて作業が完了するので,先程のKB2784152を試してみますが,またエラーとなりました。

Windows Update SoftwareDistribution フォルダー名前を変更


続いて「方法 2: Windows Update SoftwareDistribution フォルダー名前を変更します。」の作業を行ないます。
「方法1」と同じで,テキストが異なるだけです。

Net stop wuauserv
cd %systemroot%
ren SoftwareDistribution SoftwareDistribution.old
Net start wuauserv

再度KB2784152のセットアップファイルを実行します。
今度はうまくいきました!

KB2784152について


KB2784152については弥生のサイトにも説明があります。参考までに。

弥生サイト:日本マイクロソフト株式会社の修正プログラム(KB2784152)

弥生サイト:日本マイクロソフト株式会社の修正プログラムの入手方法