実際にプログラムとして利用するためには
- まだ登録されていない情報の場合:新規登録
- もう登録されている情報の場合:更新登録
では新規登録と更新登録をどうやって見分けるか?
takeはよくデータベースにIDというカラムを作成してそれによって判断しています。
フォームにVisibleをFalseに設定したLabelコントロールを作っておいてIDの値を読み出しておきます。
したがってIDに値が設定されていたら更新登録、設定されていなければ新規登録となるわけです。
今回は
If lblID.Text.Length = 0 Then 新規登録するコード Else 更新登録するコード End Ifという形で書こうと思っています。
次は残りの更新登録のコードを書きます。
Private Sub RecordInsert()
If tbコード.Text.Length = 0 Then Exit Sub
Dim sbSqlCommand As New System.Text.StringBuilder("")
Dim SqlCommand As New OleDb.OleDbCommand()
If lblID.Text.Length = 0 Then
'新規登録
sbSqlCommand.Append("INSERT INTO 住所マスター")
SqlCommand.Append(" (コード, 会社名, フリガナ, 部署担当, 郵便番号, 住所1, 住所2, TEL, EMail)")
SqlCommand.Append(" VALUES (@コード, @会社名, @フリガナ, @部署担当, @郵便番号, @住所1, @住所2, @TEL, @EMail);")
SqlCommand.CommandText = sbSqlCommand.ToString
SqlCommand.Parameters.Add("@コード", OleDb.OleDbType.Char)
SqlCommand.Parameters("@コード").Value = tbコード.Text
SqlCommand.Parameters.Add("@会社名", OleDb.OleDbType.Char)
SqlCommand.Parameters("@会社名").Value = tb会社名.Text
SqlCommand.Parameters.Add("@フリガナ", OleDb.OleDbType.Char)
SqlCommand.Parameters("@フリガナ").Value = tbフリガナ.Text
SqlCommand.Parameters.Add("@部署担当", OleDb.OleDbType.Char)
SqlCommand.Parameters("@部署担当").Value = tb部署担当.Text
SqlCommand.Parameters.Add("@郵便番号", OleDb.OleDbType.Char)
SqlCommand.Parameters("@郵便番号").Value = tb郵便番号.Text
SqlCommand.Parameters.Add("@住所1", OleDb.OleDbType.Char)
SqlCommand.Parameters("@住所1").Value = tb住所1.Text
SqlCommand.Parameters.Add("@住所2", OleDb.OleDbType.Char)
SqlCommand.Parameters("@住所2").Value = tb住所2.Text
SqlCommand.Parameters.Add("@TEL", OleDb.OleDbType.Char)
SqlCommand.Parameters("@TEL").Value = tbTEL.Text
SqlCommand.Parameters.Add("@EMail", OleDb.OleDbType.Char)
SqlCommand.Parameters("@EMail").Value = tbEMail.Text
Else
'[更新登録するコードを書く予定]
End If
Dim db As New database.MSAccess.DBAccess
If db.ExecuteSqlCommandNonQuery(SqlCommand) = 1 Then
Call FormClear()
Call dgvFill()
Else
Dim ex As Exception = db.SQLException
MsgBox(ex.Message)
End If
End Sub