نمایش نتایج 1 تا 6 از 6

نام تاپیک: کپی جدول sql در جدول access

  1. #1
    کاربر دائمی
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    مشهد
    پست
    243

    کپی جدول sql در جدول access

    سلام خدمت شما
    من توی یه قسمت از برنامم نیاز دارم تا اطلاعاتی رو از یه جدول در 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 به جدولی در اکسس. حالا اگه یه سری تغییرات هم داشته باشه میخوام انجام بدم بعدش ذخیرش کنم. فقط سرعت برام خیلی مهمه . چون جداولم داده های خیلی زیادی دارن.

    ممنون از توجهتون

  2. #2
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: کپی جدول sql در جدول اکسس

    با سلام
    اگر میخواید کل دیتابیس sql رو به اکسس تبدیل کنید با حفظ اطلاعات میتونید از نرم افزار ESF Database Migration Toolkit استفاده کنید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  3. #3
    کاربر دائمی
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    مشهد
    پست
    243

    نقل قول: کپی جدول sql در جدول اکسس

    نقل قول نوشته شده توسط danialafshari مشاهده تاپیک
    با سلام
    اگر میخواید کل دیتابیس sql رو به اکسس تبدیل کنید با حفظ اطلاعات میتونید از نرم افزار ESF Database Migration Toolkit استفاده کنید
    تشکر از شما
    بالاخره یه نفر جواب داد :دی

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

    اگه راهنمایی کنید ممنون میشم ....

  4. #4

    نقل قول: کپی جدول sql در جدول access

    سلام
    از باز کردن و بستن کانکشن داخل حلقه خودداری کنید ، قبل از حلقه کانشکن رو باز کنید و بعد از حلقه اون رو ببندید (در واقع به ازای هر تعداد رکورد که میخواهید Insert کنید ، فقط یکبار کانکشن باز و بسته بشه)
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  5. #5
    کاربر دائمی
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    مشهد
    پست
    243

    نقل قول: کپی جدول sql در جدول access

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام
    از باز کردن و بستن کانکشن داخل حلقه خودداری کنید ، قبل از حلقه کانشکن رو باز کنید و بعد از حلقه اون رو ببندید (در واقع به ازای هر تعداد رکورد که میخواهید Insert کنید ، فقط یکبار کانکشن باز و بسته بشه)

    تشکر از شما
    خب یه سوال مهم اونم اینکه تنها راه حل منطقی همینه؟؟ یعنی روش دیگه ای وجود نداره که سرعتش بالاتر باشه؟ چون اطلاعات خیلی زیاده. یه جدول دیگه دارم که حدود 12 هزار رکورد داره که تعداد ستون های زیادی هم داره و زمان خیلی زیادی میبره. میخوام بدونم هیچ راه دیگه ای وجود نداره برا این موضوع؟

  6. #6
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,499

    نقل قول: کپی جدول sql در جدول access

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


    ممنون از توجهتون[/RIGHT]
    سلام دوست من.
    نیازی نیست که اطلاعات رو سمت کلاینت بیارید و ...
    از طریق SQL Server شما می تونید عملیات insert, read, update, delete رو روی یک جدول اکسس یا هر پایگاه داده دیگه ای که از طریق OLEDB قابل دسترس باشه، انجام بدید.
    فقط نیازه که از دستور OPENDATASOURCE استفاده کنید و جدول مورد نظر رو باز کنید.
    به این شکل تقریبا:

    INSERT INTO
    OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','DataBase =MyDatabase.MDB').TableName
    SELECT * FROM MySqlTableName;



    البته در صورتی که نام فیلد ها با هم مغایرت داشته باشه می تونید فیلد ها رو داخل دستور insert و select مشخص کنید و اگر پردازش خیلی زیادی روی اطلاعات نیاز بود می تونید قبل از insert، اطلاعات رو داخل یک جدول موقت واکشی کنید و بعد از پردازش داخل access قرار بدید.
    موفق باشید.
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

تاپیک های مشابه

  1. مبتدی: انتقال اطلاعات(insert) یک جدول access به جدول مشابه در sql
    نوشته شده توسط shahin60 در بخش C#‎‎
    پاسخ: 7
    آخرین پست: شنبه 17 مهر 1395, 21:38 عصر
  2. پاسخ: 2
    آخرین پست: جمعه 16 مهر 1395, 20:08 عصر
  3. سوال: کپی کردن یک رکورد sql در همون جدول (باشرط خاص)با زبان C#‎
    نوشته شده توسط hichkasebikas در بخش C#‎‎
    پاسخ: 5
    آخرین پست: سه شنبه 07 شهریور 1391, 07:36 صبح
  4. یه سوال در مورد انتخاب نام جدول با دستور SQL در پایگاه داده ACCESs
    نوشته شده توسط night-wolf در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 2
    آخرین پست: پنج شنبه 09 تیر 1390, 22:24 عصر
  5. کپی جدول در DB
    نوشته شده توسط mesaem در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: جمعه 17 مرداد 1382, 08:52 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •