Skip to content

Visual Basic.NET いろいろなテクニック7

Posted in Visual Basic .NET, プログラム関係, and 技術メモ


業務アプリで使用できそうなものを五月雨に記録しておく。
まとまるまで待っていると忘れてしまうために・・・。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」ですが、データベース製品その他で処理が異なります。

↓こんな感じで見えるようになります。

この後は

Visual Basic.NET ComboBoxの小技①


のテクニックを応用して制御できれば汎用性の向上に役に立つと思います。

Be First to Comment

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA