3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

.Net開発

(.Net)DataGridViewでセル値がNULL(DBNull)や空文字時に表示するテキストを変えたい

要件としては、DataGridView でセルの値が null,DBNull,空文字時に "値が入っていません" というメッセージを表示するというものです。 最初、 DOBON:DataGridViewでセルの値がnullやDBNull.Valueの時に表示するテキストを変更するで紹介されているように、D…

(.Net)ネットーワーク上のSQL Server インスタンスの一覧取得

クライアントソフト初回起動時に、DBの接続先を設定させる要件で、今までは直に SQL Server のホスト名を指定させてましたが、ユーザビリティを向上させるために、自動的にLAN内の SQL Server を検索する機能を付けてみました。 (SQL Server Management Stud…

(.Net)DataGirdViewで行が選択されたときに走るイベント

いつも忘れるのでメモ。 DataGridViewで行を選択後に処理するということは多いと思いますが、この時は DataGridView.RowEnter イベントを使うとOKです。 (Cellの場合は CellEnter イベントを使う)

(.Net)DataGridViewのデータソースをVSで自動的に生成した時にDBへ更新する方法

DataGridView をフォームに貼り付けた際、VisualStudio のデザイナで DataGridView の DataSource(DB) を設定すると、フォームに勝手に TableAdapter やら BindingSource やら DataSet やらが作成されます。 この時にユーザが変更した DataGridView をデータ…

(.Net)ローカルPCのホスト名とIPアドレスを取得する方法

ホスト名のほうは1行で取得できます。(ただし純粋なホスト名でFQDNではありません) System.Net.Dns.GetHostName(); IPアドレスがちょっとめんどいですね。 いろいろググっていると System.Net.Dns.Resolve(System.Net.Dns.GetHostName()).AddressList(旧形…

(ADO.Net)TableAdapter.Update を使っての新規レコードを追加でハマった

TableAdapter.Update を使えば簡単に新規レコードが追加できるんですが、はまってしまいました。 今までは更新前にDBのテーブルデータを DataTable として取得し、それに新しい DataRow を追加して、TableAdapter.Update(DataTable) を使って更新してたんで…

(.Net)遅延バインディングを使わず WMI からハードウェア情報を取得

(.Net)VB.Netには遅延バインディング足るものがあった!!の続きです。 WMIの情報取得を遅延バインディングを使わずに取得する方法です。 実は WMI を今まで使ったことないのでちょこっと調べるのに手間取りました。 今回取得したいのはPCの型番、製造番号とい…

(.Net)VB.Netには遅延バインディング足るものがあった!!

WMI からPCのハードウェア情報を取得している部分の VB.Net のソースを見ていると気付いたことが。。 ソースはこんな感じでした。 Dim strComputer As String = "." Dim wbemServices As Object = GetObject("winmgmts:\\" & strComputer) Dim wbemObjectSet…

(.Net)Icon.ExtractAssociatedIcon メソッドにやられた

System.Drawing.Icon.ExtractAssociatedIcon(filePath) メソッドを使うと、引数にファイルパスを渡すだけで簡単にファイルに関連付けられたアイコンが取得できます。 今回はこれにやられました。 このメソッド、引数のファイルパスに UNC 指定するとだめみた…

(.Net)文字コードを調べる

ある文字の文字コードナンバーを知りたい時の方法です。 Convert.ToInt32() メソッドを使うと C# や VB.Net どちらでも使えます。 VBだとこんな感じです。 '文字コードを int 型で取得 Dim intCode As Integer = Convert.ToInt32("ア"c) '結果を16進数で出力 …

(.Net)Form.CancelButtonプロパティとButton.DialogResultプロパティにやられた

Form クラスに AcceptButton プロパティと CancelButton プロパティというのがあって、これに Button クラスのオブジェクトを設定すると、キーで Enter を押下したときは AcceptButton プロパティに設定したボタンが、ESC キーを押下したときは CancelButton…

(.Net)DataGridViewでソートを禁止する

デフォルトだと、列ヘッダをマウスで押下するだけでソートができてしまいます。 それを禁止する方法。 簡単だけど、すぐに忘れるのでメモ。 'dgvは DataGridView のインスタンス dgv.Columns("ColumnName").SortMode = DataGridViewColumnSortMode.NotSortab…

(.Net)グリッドでチェックボックス列の値が変更されたことを知る

ユーザが画面上のデータを変更したら初めて登録ボタンを押せるようにするという要件は結構あると思います。 今回はグリッド上でユーザが値を変更したことを知る方法です。 通常のセルの場合は、DataGridView.CellValueChanged イベントを捕まえてやるだけで…

(ADO.Net)DataSetを使ったトランザクション制御

(VB.Net)ADO.NetでOLEDBのトランザクションで、SQL直書き(コマンドオブジェクトにSLQ文をセットする方法)でのトランザクションの方法をメモりました。 今回は DataSet で作られた TableAdapter を使ってトランザクションを行う方法です。 まず、複数のクライ…

(Ado.Net)DataSetが作るRowオブジェクトのフィールドプロパティに要注意

DataSetって便利なんですが、裏っかわの仕様をよく理解してないと痛い目にあいます。 今回は型でやられました。 VisualStudio のサーバーエクスプローラからDBの Account というテーブルをDataSetのデザイナにドラッグして下記のようなDataSetを作ります。 …

(.Net)Imageオブジェクトとバイト配列相互変換

(.Net,SQL)SQL Server 2005に画像データ(バイナリ)を保存したいの追加情報です。 この記事の最後のほうで、一時ファイルを使わずに直に Image とバイト配列に変換できる方法を探す と言ってましたが、@IT バイト配列→画像オブジェクト/画像オブジェクト→バ…

(.Net).Netアプリケーションから Windows タスクスケジューラを操作する(@IT参考コード編)

(.Net).Netアプリケーションから Windows タスクスケジューラを操作するの記事補足です。@ITの会議室に上がってたコードを VB.Net に変換したものです。 詳しくは上記記事を参考に。 ふと疑問に思ったのが、DLL を読んでるところです。 VB.Net から DLL の関…

(.Net).Netアプリケーションから Windows タスクスケジューラを操作する

(SQL Server 2005) Express Edition は SQL Agent job スケジューリングサービス がない!?で書いたように Express Edition はエージェントサービスがないため、自動バックアップするためにアプリ側から Windows のタスクスケジューラにバックアップ処理を登…

(.Net)SQL Server でバックアップ時(復元時)の進行状況を取得しプログレスバーに表示する(ソース編)

(.Net)SQL Server でバックアップ時(復元時)の進行状況を取得しプログレスバーに表示する(説明編)の続きとういより、文字数オーバーで載せれなかったコードです。 (なお、プログレスバーを貼り付けているフォームクラスのコードは面倒なので掲載してません。…

(.Net)SQL Server でバックアップ時(復元時)の進行状況を取得しプログレスバーに表示する(説明編)

Widowsアプリケーションから SQL Server のバックアップ、リストア時に進捗をパーセント表示する方法です。 参考にさせてもらったのはSQLServer2005のバックアップ中に進行状況を得るには です。 ここを見ると、BACKUP DATABASE クエリに WITH STATS を加え…

(.Net)設定値をXMLファイルの落とす(アプリケーション構成ファイル,user.configを使わない編)

以前に、(.Net)アプリケーションの設定ファイルを作ろうとしたけど。。。の最後で言及した自作XMLに設定を保存する方法です。クラスをシリアライズして落とす方法もあるんですが、あえてその方法を使わずXMLパーサを利用することに。(実はアプリから XML を…

(.Net)スコープがアプリケーションになっているapp.configの設定プロパティに値を入れる方法

(.Net)アプリケーションの設定ファイルを作ろうとしたけど。。。の補足です。 上記リンク先にあるようにスコープをアプリケーションにしているとアプリケーション構成ファイルに設定値を保存することはできません。 しかし、アプリケーション構成ファイルか…

(.Net)アプリケーションの設定ファイルを作ろうとしたけど。。。

Windowsアプリケーションの設定先としては ini ファイル、そしてレジストリへと遷移してきました。 .Net では XML ベースのアプリケーション構成ファイル(アプリケーション名.config)と user.config が設定先として推奨されてるようです。 しかし、このアプ…

(.Net,SQL)JET(MDB)でINSERT直後のオートナンバー型IDを取得する

MDB でオートナンバー型の列を用意し、ADO.Net から TableAdapter を使って新規行を挿入します。 このとき、TableAdapter.Update() 前は DataTable でオートナンバーに対応する列の値は -1 です。 しかし、TableAdapter.Update() 後も値は -1 のままで、DB側…

(.Net)MemoryStreamのデータをGZipStreamで圧縮するときの注意点...

MDBにデータを格納するときに、圧縮して格納しようと思い、GZipStream で圧縮をかけたのですが、その時にハマったことです。 (MDBで圧縮したデータを保存する列はバイナリ型にしてます。また、DBに圧縮したデータを入れる方法は、ITpro .NETの関数を使用して…

(VisualStudio)VisualStudio2008(2005)で提供されているアイコン

アプリケーションを作ってて悩むのが、アイコンです。 特に汎用的なボタンやツールバー(切り取り、コピー、貼り付け、保存とか)に表示するアイコンはまとめて提供されててほしいですよね。 VisualStudio2008にはそんな汎用的アイコンが提供されてました。 下…

(.Net)DataGridView でソートをかけると DataGridViewRow の Tag プロパティが null になる

DataGridView.Sort メソッドで DataGridView 内部の DataGridViewRow に対してソートをかけると、DataGridViewRow.Tagプロパティが null になってしまうようです。 なので、下記のようなコードを書くと Console.WriteLine メソッドのところで例外が発生しま…

(.Net)ActiveReports Datail で最終行の Line を表示

(.Net)ActiveReports でグループヘッダセクションをページ毎に出力させるの続きになります。 この記事でやったように、GroupHeader,GroupFooter を PageHeader,PageFooter 代わりに使っており、5行おきに横方向のLineを引くという仕様にしていると、最終行が…

(.Net)DataTable でソートをする(DataTable.Select)

DataTable自体にはソートをしてくれる機能がありませんが、DataTable.Select を応用することでソート処理ができます。 DataTable.Select() メソッドが DataTable の中でフィルタをかけるのに使えるということは(VB.Net)DataTableで特定の列の最大値を含む行…

(.Net)DictionaryEntryを使ってコンボボックスに表示文字列と処理用の値をセットする

ComboBox.Items.Add() や ComboBox.Items.AddRange() を使うとコンボボックスのリストに出てくる項目を追加することができますが、1つ(表示用)しか追加できません。なので、リストに表示するデータとそれに対応した処理用の値とを入れることができません。 …