VB.NETでは、VB6で使われていたNullキーワードが廃止された。


代わりに、SYstem.DBNull.Value を使う。


例)


If Obj is System.DBNull.Value Then


  ' 処理


End If


データベース:SQL Server


GROUP BY 使用時に、SELECT 内に MAX句を使うとレスポンスが極端に悪くなる。


できるだけGROUP BY 句内に列挙し、SELECT 内では使用しないほうがよい。


(遅い)

SELECT 製番, MAX(分類)

FROM 製番マスタ

GROPU BY 製番


(速い)

SELECT 製番, 分類

FROM 製番マスタ

GROPU BY 製番, 分類



DataGridViewコントロールでセルの値が変更されたらDBを更新する。



Dim glbCellChangeFlag As Boolean ' セルが変更されたフラグ

Form_Load イベントハンドラ
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

' DataGridViewにデータを表示する処理
DataGridView1.DataSource = DataSource

' このままではCellValidatedイベントが発生するのでフラグをFalseにする
glbCellChangeFlag = False

End Sub

' CellValueChangedイベントハンドラ

Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView1.CellValueChanged


  ' 変更されたセルがDB更新対象のセルであれば、フラグをTrueにする

If DataGridView1.Columns(e.ColumnIndex).Name = "売上金" Then

glbCellChangeFlag = True

End Select


End Sub

' CellValidatedイベントハンドラ
Private Sub DataGridView1_CellValidated(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs) _
Handles DataGridView1.CellValidated


' セルが変更されたフラグがTrueである
If glbCellChangeFlag Then

glbCellChangeFlag = False


' ## ここにデータベースの更新処理を記述する
    

End If


End Sub