業務アプリで使用できそうなものを五月雨に記録しておく。
まとまるまで待っていると忘れてしまうために・・・。ww
なお、このブログ内に記載しているソースの転載・転用については何も縛りはありません。
ご使用の状況の如何に問わず、作者たる当方は結果についてその責任を一切負いません。ご使用は自己責任の範囲でお願いいたします。
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
【エラー(例外)を発生させる】
任意のタイミングやプログラム上で問題無くても運用上で問題となる処理(戻り値の異常など)でそのまま後続の処理が走っては困る場合があります。
通常はエラーを「Try ~ Catch ex As Exception」で拾っているような処理の場合に引っかからない類のもので意図的にひっかけたい場合に利用すると便利です。エラーの内容も自分で記述できます。
「Try ~ Catch ex As Exception」でひっかけるのに使いますので例外を発生させるイメージととらえてください。
Throw New Exception("A処理の途中でエラーが発生しました。確認してください。")
Exceptionの後に例外内容を自分で記述することにより、発生元を特定するのに役に立ちます。
仕掛け過ぎとThrowしてますので呼び出し元に戻って例外を吐くことを忘れないようにしてください。
意外と思った場所とは違うところで例外を確認してしまうハメになってしまいます。
※例
「Try ~ Catch ex As Exception」の中で「Throw New 」を利用する場合は同じスコープ内の「Catch ex As Exception」で拾うことになります。
Try If SampleProcess(intA) = False Then '特定の条件の時にエラー(例外)を発生 Throw New Exception("SampleProcessでエラーが発生しました。") End If Catch ex As Exception MessageBox.Show(ex.Message,"例外内容",MessageBoxButtons.OK, MessageBoxIcon.Error) End Try
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
【ComboBoxにデータベースから取得した値をListに入れる】
プログラムの状況によってコンボボックスの選択項目を可変したいと考えてました。
そんな中、コンボボックスの項目をプログラムでベタベタ書くのではなく、データベースに登録になっているデータで候補を取れないかと足掻いてみました。
やりたいこと①
データベースのテーブルにコンボボックスの項目IDと項目名を登録してそれを表示する
①データベースに定義
②データベースからデータを
※実際に実行するときの記述
'【 発行指定(ComboBox_OBJ000) 】 Call ComboBoxInsert(Me.ComboBox_OBJ000, "02")
※データベースから持ってくるプロシージャ
'-------------------------------------------------------------------------------- ' ComboBox内容の取得処理(出力系選択コンボボックス処理) '-------------------------------------------------------------------------------- Public Sub ComboBoxInsert(ByVal objComboBox As System.Windows.Forms.Control, ByVal strSelectCode As String) Dim strValues As DataTable = Nothing Dim intA As Integer = 0 For intA = 1 To Len(strSelectCode) 'テーブルにデータのセット strValues = MasterDataGet(Mid(strSelectCode, intA, 1)) 'エラー処理 If strValues.Rows.Count = 0 Then Exit Sub End If DirectCast(objComboBox, ComboBox).Items.Add(strValues.Rows(0).Item("項目ID").ToString & ":" & strValues.Rows(0).Item("項目値").ToString) Next '初期値の表示 DirectCast(objComboBox, ComboBox).Text = DirectCast(objComboBox, ComboBox).GetItemText(DirectCast(objComboBox, ComboBox).Items(0)) End Sub
データベースからデータを取得してDataTableにセットする関数は「MasterDataGet」ですが、データベース製品その他で処理が異なります。
この後は
のテクニックを応用して制御できれば汎用性の向上に役に立つと思います。