Using cnn As DbConnection = 略 Using cmd As DbCommand = 略 cmd.Connection = cnn cmd.CommandType = CommandType.Text cmd.CommandText = "BEGIN :nReturnValue := FuncAAA.FuncAAA(:nCd); END;" Dim pRet As DbParameter = 略 pRet.ParameterName = "nReturnValue" pRet.Direction = ParameterDirection.ReturnValue pRet.DbType = DbType.Int32 cmd.Parameters.Add(pRet) Dim pCd As DbParameter = 略 pCd .ParameterName = "nCd" pCd .Value = 123 pCd .Direction = ParameterDirection.Input pCd .DbType = DbType.Int32 cmd.Parameters.Add(pCd ) cmd.ExecuteNonQuery() Console.WriteLine(pRet.Value.ToString) End Using End Using
.NET ストアドファンクションをキックするには?
ストアドプロシージャではなくストアドファンクションをキックする方法です。
.NET DateTimePickerで1桁入力しTabキーで移動すると入力値が取得できない
DateTimePickerで日付などを1桁入力し、Tabキーで移動するとDateTimePickerのValidatingイベント、Validatedイベントで入力値を取得することができません。
VS2005、VS2008で確認しました。
このような画面でDateTimePickerの日付部分に1桁「1」を入力し、Tabキーでコントロールを移動します。
Formには以下のようなコードを書きました。
実行結果は以下のようになりました。
Leave:2008/10/02 8:54:24
Validating:2008/10/02 8:54:24
Validated:2008/10/02 8:54:24
ValueChanged:2008/10/01 8:54:24
これは年月日のいずれでも1桁入力し、Tabキーで移動した場合に発生します。
回避方法はLeaveイベントでMe.ActiveControl = Me.ActiveControlを記述します。
実行結果は以下のようになりました。
ValueChanged:2008/10/01 9:12:40
Leave:2008/10/01 9:12:40
Validating:2008/10/01 9:12:40
Validated:2008/10/01 9:12:40
DateTimePickerを継承したカスタムコントロールを作成し、Leaveイベントで以下のようにしておくと便利かと思います。
VS2005、VS2008で確認しました。
このような画面でDateTimePickerの日付部分に1桁「1」を入力し、Tabキーでコントロールを移動します。
Formには以下のようなコードを書きました。
Public Class Form1 Private Sub DateTimePicker1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.Leave Console.WriteLine("Leave:" & Me.DateTimePicker1.Value.ToString) End Sub Private Sub DateTimePicker1_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.Validated Console.WriteLine("Validated:" & Me.DateTimePicker1.Value.ToString) End Sub Private Sub DateTimePicker1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles DateTimePicker1.Validating Console.WriteLine("Validating:" & Me.DateTimePicker1.Value.ToString) End Sub Private Sub DateTimePicker1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged Console.WriteLine("ValueChanged:" & Me.DateTimePicker1.Value.ToString) End Sub End Class
実行結果は以下のようになりました。
Leave:2008/10/02 8:54:24
Validating:2008/10/02 8:54:24
Validated:2008/10/02 8:54:24
ValueChanged:2008/10/01 8:54:24
これは年月日のいずれでも1桁入力し、Tabキーで移動した場合に発生します。
回避方法はLeaveイベントでMe.ActiveControl = Me.ActiveControlを記述します。
Public Class Form1 Private Sub DateTimePicker1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.Leave '1桁入力しTabキーで移動した際に入力値が取得できない問題を回避します。 Me.ActiveControl = Me.ActiveControl Console.WriteLine("Leave:" & Me.DateTimePicker1.Value.ToString) End Sub Private Sub DateTimePicker1_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.Validated Console.WriteLine("Validated:" & Me.DateTimePicker1.Value.ToString) End Sub Private Sub DateTimePicker1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles DateTimePicker1.Validating Console.WriteLine("Validating:" & Me.DateTimePicker1.Value.ToString) End Sub Private Sub DateTimePicker1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged Console.WriteLine("ValueChanged:" & Me.DateTimePicker1.Value.ToString) End Sub End Class
実行結果は以下のようになりました。
ValueChanged:2008/10/01 9:12:40
Leave:2008/10/01 9:12:40
Validating:2008/10/01 9:12:40
Validated:2008/10/01 9:12:40
DateTimePickerを継承したカスタムコントロールを作成し、Leaveイベントで以下のようにしておくと便利かと思います。
Public Class CustomControl1 Inherits System.Windows.Forms.DateTimePicker Protected Overrides Sub OnLeave(ByVal e As System.EventArgs) Me.FindForm.ActiveControl = Me.FindForm.ActiveControl MyBase.OnLeave(e) End Sub End Class
登録:
投稿 (Atom)
-
DataTableから重複を除くには と DataTableの集約計算を行う(Compute) を利用して、DataTableをグループ化し集計を行います。 以下のようなデータが入ったDataTableから、Field1とField2で重複を取り除き集計をおこないます。...
-
前回「 PLSQL SELECTの結果を取得する ~取得結果が1行の場合~ 」に続き 今回はSELECTの結果が複数行の場合です。 SELECTの結果が複数行の場合はカーソルを使用します。 カーソルとは SELECTの結果セットに対して、1行ずつデータを取り出し、順次...
-
datatableの集約計算を行うにはDataTable.Compute メソッドを使用します。 Dim As Object '最大値を求める value = datatable.Compute("Max(集計列名)", Nothing) ...