|
■No47555 (だい さん) に返信
> コントロールにパラメータとなるプロパティを持たせるということですか。
> Txt_HinCD.HinCDはちょっと複雑化しているような気もします。
これには同意します。
そもそも TextBox の派生クラスにする必要はないのではないでしょうか。
パラメータを保持するだけのクラスを用意して DataBinding で TextBox と関連付けると
いうやり方ではだめなのでしょうか。
Public Class Form1
Private Parameter_ As New Parameter()
Private Sub Form1_Load(...) Handles MyBase.Load
TextBox1.DataBindings.Add("Text", Parameter_, "HogeTable.HinCD.Value")
TextBox2.DataBindings.Add("Text", Parameter_, "HogeTable.HinName.Value")
End Sub
Private Sub ButtonSelect_Click(...) Handles ButtonSelect.Click
...
Dim command As New OleDbCommand()
command.CommandText = _
"Select * From `HogeTable` Where `hin_cd` = ? And `hin_name` = ?"
command.Parameters.Add(Parameter_.HogeTable.HinCD)
command.Parameters.Add(Parameter_.HogeTable.HinName)
...
End Sub
End Class
Public Class Parameter
Private HogeTable_ As New HogeTable()
Public Sub New()
End Sub
Public ReadOnly Property HogeTable() As HogeTable
Get
Return HogeTable_
End Get
End Property
End Class
Public Class HogeTable
Private HinCD_ As New OleDbParameter("@hin_cd", OleDbType.Integer)
Private HinName_ As New OleDbParameter("@hin_name", OleDbType.VarChar)
Public Sub New()
End Sub
Public ReadOnly Property HinCD() As OleDbParameter
Get
Return HinCD_
End Get
End Property
Public ReadOnly Property HinName() As OleDbParameter
Get
Return HinName_
End Get
End Property
End Class
> clsParametersに値をセットするにはインスタンスを作成しなければならない。この場
> 合はNewしても大丈夫なので、セットまでは可能。
> 次にclsParametersの値を読む際も同様にインスタンスしなければならない。が、イン
> スタンスを作成してしまうとNewされるので値はブランクとなる。
値を読む際に新しいインスタンスを作成してはいけないです。値をセットする際に作成し
たインスタンスを参照する必要があります。
|