PDA

View Full Version : مبتدی: چرا رکورد تکراری درج می کنه اشکال کجاست؟



momimomi
شنبه 17 فروردین 1392, 23:24 عصر
با سلام
در جدول استعلامات برای هر شخص ممکن است چندین استعلام از ادارات مختلف ثبت شود که شاید شماره و تاریخ یکسان داشته باشند برای جلوگیری از بروز چنین مشکلی سه فیلد شماره استعلام، تاریخ استعلام، از ، به طور همزمان بررسی می شوند و در صورت تکراری بودن از ثبت آن جلوگیری به عمل می آید، شما دوستان گرامی نظر دهید که اشکال این کدها کجاست؟ ضمنا جدول مربوطه کلید اصلی ندارد(اجبارا).
ممنون

private void btnSabtEstelam_Click(object sender, EventArgs e)
{
//ثبت استعلام غیر تکراری
OleDbConnection con = new OleDbConnection();
con.ConnectionString = @"provider = microsoft.jet.oledb.4.0;" + @"data source =TS.mdb";
OleDbDataAdapter da = new OleDbDataAdapter("select * from estelam where " +
"shestelam = @shestelam and taestelam = @taestelam and az = @az",con);

da.SelectCommand.Parameters.AddWithValue("@shestelam", txtsh.Text.Trim());
da.SelectCommand.Parameters.AddWithValue("@taestelam", faDatetaestelam.GetDateString().Trim());
da.SelectCommand.Parameters.AddWithValue("@az", cmbAz.Text.Trim());

DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count>0)
{
MessageBox.Show("این استعلام قبلا ثبت شده است");
}
else
{
OleDbCommand cmd = new OleDbCommand("INSERT INTO estelam (code,shestelam," +
"taestelam,az,subject,details,tavosool,shsabt,tasab t)" +
"values(@code,@shestelam,@taestelam,@az,@subject,@d etails,@tavossol,@shsabt,@tasabt)", con);
cmd.Parameters.AddWithValue("@code", txtCode.Text);
cmd.Parameters.AddWithValue("@shestelam", txtsh.Text);
cmd.Parameters.AddWithValue("@taestelam", faDatetaestelam.GetDateString());
cmd.Parameters.AddWithValue("@subject", cmbSubject.Text);
cmd.Parameters.AddWithValue("@az", cmbAz.Text);
cmd.Parameters.AddWithValue("@details", cmbDetail.Text);
cmd.Parameters.AddWithValue("@tavosool", faDatetavosool.GetDateString());
cmd.Parameters.AddWithValue("@shsabt", txtShSabt.Text);
cmd.Parameters.AddWithValue("@tasabt", faDatetasabt.GetDateString());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("استعلام با موفقیت ثبت گردید");

مرتضی تقدمی
شنبه 17 فروردین 1392, 23:48 عصر
سلام
تو کدها که به نظر مشکلی نیست. فقط اون trim هایی که در قسمت چک کردن گذاشتی، تو قسمت درج هم بذار شاید ازون باشه. احتمالش هست.
جدول چرا نباید کلید اصلی داشته باشه؟! الان شما خواسته باشی یک رکورد رو حذف کنی بر چه اساسی حذف می کنی؟ می تونی یک رکورد auto number بذاری که راحت باشه.
موفق باشید