کپی جدول sql در جدول اکسس

ساخت وبلاگ
سلام خدمت شما
من توی یه قسمت از برنامم نیاز دارم تا اطلاعاتی رو از یه جدول در sql بخونم و در یه جدول که ماله برنامه است و اکسس هست ذخیره کنم. هر چی گشتم روشی برای اینکار پیدا نکردم به همین علت مجبور شدم اطلاعات رو از sql واکشی کنم و داخل یه دیتاگرید نمایش بدم، بعدش ردیف به ردیف با استفاده از یه حلقه دیتاگرید رو پیمایش کنم و یکی یکی توی جدولم داخل اکسس ذخیره کنم!! اینکار به شدت زمان بر هست به همین جهت ازتون تمنا دارم کمکم کنید روش بهتری رو که زمان نمیبره انجام بدم. تشکر از شما

با این کد اطلاعات رو از sql میخونم و توی جدول نمایش میدم:

try
{
frmUpdateBank.ActiveForm.Cursor = Cursors.WaitCursor;
cmd.Connection = con;


cmd.CommandText = (txtcmd.Text);
adp = new SqlDataAdapter(cmd);
adp.Fill(ds, "Qry_BAS");
dgPersenel.DataSource = ds.Tables["Qry_BAS"];
frmUpdateBank.ActiveForm.Cursor = Cursors.Default;


}
catch
{
MessageBox.Show("خطایی رخ داده است", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
frmUpdateBank.ActiveForm.Cursor = Cursors.Default;
}

کد بالا زمان نمیبره و اطلاعات رو میخونه و نشون میده.

اما کدی که خط به خط میخونم و توی اکسس ذخیره میکنم اینه:




cmdDBTransfer.Connection = conDBTransfer;
cmdDBTransfer.CommandType = CommandType.Text;
cmdDBTransfer.CommandText = "Delete * from TBL_Master";
conDBTransfer.Open();
cmdDBTransfer.ExecuteNonQuery();
conDBTransfer.Close();
cmdDBTransfer.Parameters.Clear();
int tedade = Convert.ToInt16(dgPersenel.RowCount.ToString()) - 1;




for (int i = 0; i <= tedade; i++)
{
Application.DoEvents();
cmdDBTransfer.Connection = conDBTransfer;
cmdDBTransfer.CommandType = CommandType.Text;
cmdDBTransfer.CommandText = "INSERT INTO TBL_Master(Rank, Br, FirstName, LastName, PersonalCode, TOT, N, F, T, T2, a, JOB, UD) VALUES (@Rank=,@Branch=,@FirstName,@LastName,@PersonalCod e,@TOT=,@N=,@F=,@T=,@T2,@a=,@JOB=,@UD)";
cmdDBTransfer.Parameters.AddWithValue("@Rank", dgPersenel.Rows[i].Cells[0].Value.ToString());
cmdDBTransfer.Parameters.AddWithValue("@Branch", dgPersenel.Rows[i].Cells[1].Value.ToString());
cmdDBTransfer.Parameters.AddWithValue("@FirstName" , dgPersenel.Rows[i].Cells[2].Value.ToString());
cmdDBTransfer.Parameters.AddWithValue("@LastName", dgPersenel.Rows[i].Cells[3].Value.ToString());
cmdDBTransfer.Parameters.AddWithValue("@PersonalCo de", dgPersenel.Rows[i].Cells[4].Value.ToString());


if (dgPersenel.Rows[i].Cells[5].Value.ToString() != "")
{
cmdDBTransfer.Parameters.AddWithValue("@TOT", TOT(dgPersenel.Rows[i].Cells[5].Value.ToString()));
}
else
{
cmdDBTransfer.Parameters.AddWithValue("@TOT", "000000");
}




if (dgPersenel.Rows[i].Cells[6].Value.ToString() != "")
n = Convert.ToInt16(dgPersenel.Rows[i].Cells[6].Value.ToString());
else
n = 0;
cmdDBTransfer.Parameters.AddWithValue("@N", n);


if (dgPersenel.Rows[i].Cells[7].Value.ToString() != "")
f = Convert.ToInt16(dgPersenel.Rows[i].Cells[7].Value.ToString());
else
f = 0;
cmdDBTransfer.Parameters.AddWithValue("@F", f);


if (dgPersenel.Rows[i].Cells[8].Value.ToString() != "")
t = Convert.ToInt16(dgPersenel.Rows[i].Cells[8].Value.ToString());
else
t = 0;
cmdDBTransfer.Parameters.AddWithValue("@T", t);


if (dgPersenel.Rows[i].Cells[9].Value.ToString() != "")
t2 = Convert.ToInt16(dgPersenel.Rows[i].Cells[9].Value.ToString());
else
t2 = 0;
cmdDBTransfer.Parameters.AddWithValue("@T2", t2);


if (dgPersenel.Rows[i].Cells[10].Value.ToString() != "")
boy = int.Parse(dgPersenel.Rows[i].Cells[10].Value.ToString());
else
boy = 0;


if (dgPersenel.Rows[i].Cells[11].Value.ToString() != "")
wif = int.Parse(dgPersenel.Rows[i].Cells[11].Value.ToString());
else
wif = 0;


if (dgPersenel.Rows[i].Cells[12].Value.ToString() != "")
fam = int.Parse(dgPersenel.Rows[i].Cells[12].Value.ToString());
else
fam = 0;


if (dgPersenel.Rows[i].Cells[13].Value.ToString() != "")
dot = int.Parse(dgPersenel.Rows[i].Cells[13].Value.ToString());
else
dot = 0;


a = boy + wif + fam + dot;
cmdDBTransfer.Parameters.AddWithValue("@a", a);
cmdDBTransfer.Parameters.AddWithValue("@JOB", dgPersenel.Rows[i].Cells[14].Value.ToString());
cmdDBTransfer.Parameters.AddWithValue("@UD", dgPersenel.Rows[i].Cells[15].Value.ToString());




conDBTransfer.Open();
cmdDBTransfer.ExecuteNonQuery();
conDBTransfer.Close();
cmdDBTransfer.Parameters.Clear();
pb1.Value = pb1.Value + 1;// پروگرس بار
if (i != 0)
lblper1.Text = "%" + (i * 100 / tedade_enteghalaat); // درصد پیشرفت
}
MessageBox.Show("ثبت شد");


کد بالا زمان زیاد میبره. من چند تا قسمت دارم که با همین روش مجبور شدم کارشو انجام بدم که اونا تازه خیلی بیشتر کارای محاسباتی باید انجام بشه و زمان خیلی بیشتری هم میبره ذخیره کردنشون.

توی کد دومی اگه دقت کنید یه سری اعمال هم انجام دادم که البته به طور خلاصه همون چیزی که همون ابتدا گفتم رو میخوام انجام بدم. یعنی کپی یه جدول از Sql به جدولی در اکسس. حالا اگه یه سری تغییرات هم داشته باشه میخوام انجام بدم بعدش ذخیرش کنم. فقط سرعت برام خیلی مهمه . چون جداولم داده های خیلی زیادی دارن.

ممنون از توجهتون
تمپوs...
ما را در سایت تمپوs دنبال می کنید

برچسب : نویسنده : خنج tempos بازدید : 163 تاريخ : سه شنبه 10 بهمن 1396 ساعت: 5:22