テーブルに値を入力するために使用している詳細ビューがあります。現在、値が正しく挿入されていますが、ユーザーが以前のレコードに干渉する可能性のある新しいレコードを入力しようとしているかどうかを確認する必要がありました。
ユーザーが2012-12-12に該当する新しいイベントを入力したが、同じユーザーがすでに2012-12-12のレコードを入力している場合、エラーがスローされ、レコードを挿入できません。
別のユーザーが2012-12-12を作成することもでき、それは許容できるため、時間の一意のレコードをチェックするだけでは機能しません。同じユーザーだけが同じイベントの日付を作成することはできません。したがって、テーブル内の2つのフィールドをチェックする必要があることはわかっていますが、コードでこのチェックを行う方法がわかりませんでした。
例えば:
ユーザー1の新しいイベント2012-12-12-----ok
ユーザー2の新しいイベント2012-12-12-----ok
ユーザー3の新しいイベント2012-12-12-----ok
ユーザー2の新しいイベント2012-12-12-----エラーをスローし、そのレコードの作成を許可しないようにする必要があります。
ユーザー3の新しいイベント2012-10-12-----ok
編集済み
現在、これを使用してテーブルを更新しています。
public void UpdateForm(Int64 requestid,
Decimal empid,
String leave,
DateTime startdate,
DateTime enddate,
String starttime,
String endtime,
String standby,
String status,
String rsn,
String remarks,
String approver,
String with,
String reqleave,
String FIRSTNAME,
String LASTNAME)
{
var CurrUser = "a03 ";
Account.Login uusr = new Account.Login();
CurrUser = uusr.User.Identity.Name.ToString().ToUpper();
var sql = "update TIME.request set empid=@empid, leave=@leave, with=@with, startdate=@startdate, reqleave=@reqleave, enddate=@enddate, starttime=@starttime, endtime=@endtime, standby=@standby, status=@status, rsn=@rsn, remarks=@remarks, approver=@approver where requestid = @requestid";
using (iDB2Connection conn = new iDB2Connection(GetConnectionString()))
{
conn.Open();
using (iDB2Command cmd = new iDB2Command(sql, conn))
{
cmd.DeriveParameters();
cmd.Parameters["@requestid"].Value = requestid;
cmd.Parameters["@empid"].Value = empid;
cmd.Parameters["@leave"].Value = leave;
cmd.Parameters["@startdate"].Value = startdate;
cmd.Parameters["@enddate"].Value = enddate;
cmd.Parameters["@starttime"].Value = starttime;
cmd.Parameters["@endtime"].Value = endtime;
cmd.Parameters["@standby"].Value = standby;
cmd.Parameters["@status"].Value = status;
cmd.Parameters["@rsn"].Value = rsn;
cmd.Parameters["@remarks"].Value = remarks;
cmd.Parameters["@approver"].Value = approver;
cmd.Parameters["@reqleave"].Value = reqleave;
cmd.Parameters["@with"].Value = with;
cmd.ExecuteNonQuery();
}
}
}