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)

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



2013年4月30日火曜日

メールワイズのデータ退避にかかる時間

サイボウズメールワイズの受注メール件数が10万件を超え,このままだと使えなくなってしまうようなのでデータ退避で古いデータを読み取り専用にする処理を行なう事になりました。

http://manual.cybozu.co.jp/mailwise4/system/save.html

操作自体は簡単で,システム管理メニューで退避期間を設定するだけです。その後,インストールサーバーのデスクトップ(Windows版)から mwsave.bat というファイルを実行します。
すると,コマンドプロンプトのコンソールが開き,実行の最終決定を迫られます。


"Y"キーを押すと処理が始まります。思わず頭文字である"S"キーを押したくなるのは私だけでしょうか。メールワイズ自体はメンテナンスモード状態になり,この間はメールワイズを使用できません。
ここから,プロンプト上に進捗記録を残しつつ処理が進んでいきます。
マニュアルには40GBのデータで2時間とありますから,せいぜい3GBである環境ならすぐに終わるかと期待もしたのですが,結局4時間ほどかかりました。





"Dividing data" というプロセスがなかなか終わらず,これだけで2時間以上かかりました。その後も "Optimizing data" とか "Cutting old data" とか時間のかかる処理が続きます。
データ容量の大小にかかわらず,データ退避処理には十分な時間を確保したほうがよさそうです。

2013年4月25日木曜日

Evernote Windows版 4.6.5.8275(268783) Prerelease 同期失敗(ユーザー名が不正)について

Evernoteのアップデート通知(4.6.5.8275(268783) Prerelease)が来たのでさっそくインストールしました。すると,「同期失敗 ユーザー名が不正」とかいった感じのエラーが発生してしまいました。アクティビティログを見ると Missing password と記録されています。

とりあえずサインアウトし,改めてサインインすると同期できるようになりました。
他のPCでも同じようになっているので,またエラーなのでしょうか。プレリリース版なので,正式リリースの時には直っているといいのですが。

2013年3月22日金曜日

Evernote 4.6.4.8136(268644) のインストールエラー(2732)について

Evernote Windows版のアップデートを案内するダイアログが表示されたので進めてゆくと,以下のようなエラーが出て最新版をインストールすることができませんでした。

”予期しないエラーが発生しました。このパッケージに問題がある可能性があります。エラーコード: 2732。”

4.6.3の頃から出ていたので,4.6.4で改善されているかと思いましたが,残念ながら4.6.4でも問題が発生したため,調べることにしました。
検索すると,以下の情報が見つかりました。

バージョン4.6.3を更新しようとしてエラーが出ました

ここで,レジストリを変更して解決したという方がおられるので,同じようにやってみることにしました。解決までの経緯はいろいろあるようですが,ここでは自分の環境で実際に解決した方法だけを書きます。

1. レジストリエディターを開いて E190C2EA で検索

2. 検索でかかったキーをキーごと削除(複数見つかる場合もありますので,最後まで検索しましょう)


3. 再起動します
4. もう一度アップデートの操作を行ないます

以上でうまくアップデートができました。


Evernoteでビジネス向けのサービスが始まってから社内でも少しずつ導入を進め,とても便利なのですが,どうも不安定なことが多いのが残念です。

2012年12月5日水曜日

NetAdvantage(WinForms) AppStylist,MDI,DataBindingを同時に使用する場合の処理

NetAdvantageAppStylistは簡単な設定でアプリケーション全体の外観を変更できるとても便利なツールです。
デザインツールも付属しているので,自分でデザインするのも良いですが,予めスタイル情報ファイルもいくつか用意されているので,手間無くユーザーに外観の選択肢を提供できます。
外観を変更すると,まるで別のアプリケーションを見ているようで新鮮です。
個性の問題だけなく,ユーザーによっては「グリッドの行がストライプのほうが良い」などの要望もありますので,利便性の向上にもつながります。

しかし,MDIアプリケーションでデータバインディングを使ったフォームを使用する場合は注意が必要です。
この場合データバインディングが正しく動作せず,データソースを更新してもエディター系コントロールに反映されません。これは既知の問題であるらしく,この不可解な現象を解決しようと多大な時間をかけることになるかもしれません。
(いかなる条件でも問題が発生するかどうかは分かりませんが,UltraWinGridをマルチバンドで使用し,かつEditorコントロールのDataBindingsを設定した場合は発生しました)

解決のためには,AppStylistを使用しないか,あるいは以下のようにフォームのインスタンスを生成する度にAppStylistをリセットする必要があります。
リセットしたからといって処理にひどく時間がかかったり,表示がちらついたりということはないのですが,フォーム生成の都度リセットを忘れないよう注意が必要です。

Private Sub ShowForm()

    Infragistics.Win.AppStyling.StyleManager.Reset()
    Dim frm1 As New Windows.Forms.Form
    Infragistics.Win.AppStyling.StyleManager.Load("スタイル情報ファイルのパス")

    frm1.MdiParent = Me
    frm1.Show()

End Sub

2012年9月18日火曜日

Vostro 360をWindows8にアップグレードしてみた

Windows8の発売日も間近になってきました。弊社でもタブレットでの活用を考えていますので使い勝手や周辺機器,ソフトウェアの対応状況が気になるところです。
そこで,テスト機を用意してWindows8 Enterpriseをインストールしてみました。今回はWindows7 Professionalからアプリやファイルを引き継ぐ設定でセットアップしました。
今後いろいろと試してみたいと思います。

スペック

機種:Dell Vostro 360 Touch
CPU:Core i5-2400S
メモリ:4GB
グラフィック:NVIDIA Geforce GT 525M 1GB
モニタ:23インチ フルHD 光学式タッチパネル(2点)
OS:Windows 7 Professional

タッチパネル

Vostro 360にはオプションでタッチパネルを付けていますので,Windows8のタッチ操作にも対応しています。タッチパネルは2点までの感知できます。Windows7のときはMS標準のアプリ(ペイントなど)では軽快に動作しましたが,その他のアプリケーションでは使い物にならないレベルのものでした。マウス代わりにクリックするイメージで使えるのみですので,デスクトップ機としては最初からマウスを使った方がはるかに作業性が良かったです。
Windows8にしてみて,全体的なタッチパネルの操作性が向上したように感じました。同じマシンとは思えないという印象です。IEでの操作は指の動きにしっかり付いてきますし,一般的なWindowsフォームアプリでもスクロールバーやコンボボックスを操作するときの動きが幾分自然になっています。これまではタッチする位置をしっかり確かめながらでないときちんと操作できませんでした。とはいえ,このあたりはコントロールの種類や対応によって動作が異なるようです。

弥生会計

弥生会計ネットワーク版ですが,アップグレード前からインストール済なのでセットアップが可能かどうかは分かりません。今のところWindows7とまったく同じように動作します。特にタッチ操作が有用な場面は見当たりません。

Docuworks

Docuworks Desk 7.3です。タッチ対応が最も活きてくるアプリだと思うのですが,残念ながらタッチパネルの操作性が向上したとは感じられませんでした。わずかながら使いやすくなったのはフリーハンドのラインアノテーションです。Windows7のときは途切れ途切れの線になりましたが,Windows8では途切れない線が引けます。ただ,これもマウス操作を前提としているので,きちんとクリックのつもりでタッチ,そのままドラッグのつもりで指を動かしたときのみ可能です。Penviewer for Docuworksを使うとタッチ操作がさらに活きてくるのかもしれません。ちなみに,Windows7でPenviewerを試した時にはうまく線が引けませんでした。タブレット機と異なり,Vostro 360の光学式タッチパネルではマウス操作と見なされてしまうのが原因かもしれません。
Docuworks Viewer Lightではピンチ操作による拡大縮小ができます。動作はぎこちなく,カクカクとした表示で,操作した後になって画面に反映される感じです。また,一般的なピンチ操作と逆の動きで拡大縮小が行なわれます。


PDF

OS標準のリーダーアプリは普通に動作します。iPadほど自在ではないものの,拡大縮小やスクロールで特に気になることはありません。このアプリに限った話ではありませんが,Windowsストアアプリでファイルを開くと全画面表示になるため,元のデスクトップに戻るのが面倒です。
Adobe Acrobat Reader Xでは今まで通りのウィンドウでファイルを開くことができます。ズームが少々ぎこちないですが,Docuworksほどではありません。特に問題なくPDFを読むことができます。注釈とテキストハイライトはタッチパネルでも問題なく操作できます。やはりデスクトップ機なのでマウスで操作したほうが速いですが。
PDFについてはいろいろなところからアプリがリリースされることと思いますので,そのうちiPadのように操作できるようになるのかもしれません。