PDA

View Full Version : سوال: ثبت گروهی مشخصات پرسنل



SardareEshgh
دوشنبه 20 خرداد 1398, 14:07 عصر
دوستان سلام.
در کد زیر با یک ترد ، برنامه مشخصات پرسنل رو اول چک میکنه اگه قبلا ثبت نشده بود ، ثبت انجام میشه.
کاربر هر بار که دکمه ثبت رو میزنه تعداد پرسنلی که ثبت میشه بیشتر از50 نفر نیست. ممکنه کمتر باشه. اما مشکل اینجاست که ثبت همین 50 نفر طول میکشه و کاربر بلافاصله 50 نفر بعدی را وارد و دکمه ثبت رو میزنه! و برنامه هنگ میکنه. (کاربر این اسامی رو از توی اکسل کپی میکنه و در یک textBox وارد میکنه و دکمه ثبت رو میزنه).
این موارد رو چطوری باید مدیریت کرد که کاربر بتونه بدون هنگ کردن برنامه اسامی رو ثبت کنه.؟ دیتابیس اکسس و VS2008 .
ممنون




Thread t1;
ThreadStart ts1;

using (var cmd = new OleDbCommand(query, con))
{
ts1=new ThreadStart (InsertNames);
t1 = new Thread(ts1);

t1.Priority = ThreadPriority.Highest;
t1.Start();

}






void InsertNames()
{

WordSpel word = new WordSpel();

for (int t = 0; t < txtnames.Length; t++)
{
string name = word.TextSplit(txtnames[t].Trim()).Split('@').ElementAt(0);
string family = word.TextSplit(txtnames[t].Trim()).Split('@').ElementAt(1);

metod.connectMetod(out con, out com, out oda, out dt);

query = "select * from Tblpersonal where BakhshName=@BakhshName and name=@name and family=@family";

com.Parameters.AddWithValue("@BakhshName", bakhsh);
com.Parameters.AddWithValue("@name", name);
com.Parameters.AddWithValue("@family", family);

com.CommandText = query;
oda.SelectCommand = com;
oda.Fill(dt);

if (dt.Rows.Count == 0)
{
com.Parameters.Clear();

query = "insert into Tblpersonal (name,family,BakhshName,minshift,maxshift) " +
"values (@name,@family,@BakhshName,@minshift,@maxshift)";

com.Parameters.AddWithValue("@name", name.Trim());
com.Parameters.AddWithValue("@family", family.Trim());
com.Parameters.AddWithValue("@BakhshName", bakhsh.Trim());
com.Parameters.AddWithValue("@minshift", _MinShift);
com.Parameters.AddWithValue("@maxshift", _MaxShift);

com.Connection = con;
com.CommandText = query;
if (con.State == ConnectionState.Closed)
con.Open();
com.ExecuteNonQuery();
}//if

Thread.Sleep(100);

}//for

}

محمد رضا فاتحی
دوشنبه 20 خرداد 1398, 22:29 عصر
شما اگه از backgroundWorker استفاده کنید مشکلتون حل میشه