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

نام تاپیک: جستجوی رکورد در پایگاه داده Access

  1. #1

    Question جستجوی رکورد در پایگاه داده Access

    سلام من می خوام وقتی کاربر فیلد تکراری وارد کرد . در پایگاه داده ام که اکسس است جستجو انجام بدم. و سپس اگر تکراری بود پیام بده . این جستج رو چطوری انجام بدم؟

  2. #2

    نقل قول: جستجو

    خب اگه پایگاهتو در یه dataGridView بریزی می تونی از روش ساده زیر استفاده کنی

    foreach (DataGridViewRow dgr in dataGridView1.Rows)
    if (dgr.Cells["نام فیلد مورد نظر برای جستجو"].Value.ToString() == textBox1.Text)
    MessageBox.Show("Error");

    این کد میاد مقادیر موجود یک فیلد رو در دیتاگرید مقایسه میکنه

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    1,112

    نقل قول: جستجو

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

  4. #4

    نقل قول: جستجو

    از پاسختون ممنونم. میشه بیشتر توضیح بدین. نفهمیدم.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    1,112

    نقل قول: جستجو

    فرض کنید می خواید اسم تکراری وارد نشه. تمام اسم ها یا قسمتی که لازم می شه رو بخونید و در یک لیست ژنریک قرار بدید.

    List<string> names=....


    حالا وقتی اسمی وارد می شه می تونید از دستور زیر استفاده کنید


    if (names.IndexOf( new name )!=-1)
    {
    تکراری
    }


    و اگر اسم تکراری نبود بعد از ذخیره در دیتابیس، اسم رو به لیست اضافه کنید.

  6. #6
    VIP آواتار Sajjad.Aghapour
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اهل کاشانم .. روزگارم بد نیست
    پست
    1,265

    نقل قول: جستجو

    نیازی به این کارا نیست....

    cmd.CommandText="select * from users where username='GoogleA5'";
    connection.Open();
    SqlDataReader reader=cmd.ExecuteReader();

    if(reader.Read())
    {
    //GoogleA5 exists
    }
    reader.Close();
    connection.Close();


    ...
    موفق باشید/
    ...
    Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    1,112

    نقل قول: جستجو

    cmd.CommandText="select * from users where username='GoogleA5'";
    connection.Open();
    SqlDataReader reader=cmd.ExecuteReader();

    if(reader.Read())
    {
    //GoogleA5 exists
    }
    reader.Close();
    connection.Close();
    فکر می کنم هر چی کمتر به طور مستقیم سراغ دیتابیس بریم بهتره.

  8. #8

    نقل قول: جستجو

    نقل قول نوشته شده توسط Vahid_moghaddam مشاهده تاپیک
    فرض کنید می خواید اسم تکراری وارد نشه. تمام اسم ها یا قسمتی که لازم می شه رو بخونید و در یک لیست ژنریک قرار بدید.

    List<string> names=....
    حالا وقتی اسمی وارد می شه می تونید از دستور زیر استفاده کنید


    if (names.IndexOf( new name )!=-1)
    {
    تکراری
    }
    و اگر اسم تکراری نبود بعد از ذخیره در دیتابیس، اسم رو به لیست اضافه کنید.
    من که اصلا سر درنیاوردم چی میگین. من مبتدی ام. کجا بنویسم و چی رو؟

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    1,112

    نقل قول: جستجو

    اینجا دو تا روش گفته شد. روشی که دوستمون sajjadlove در پست6 گفتند و روشی که من پیشنهاد دادم. هر دو درست هستند و معایب و مزایای خودشون رو دارن. هر کدوم براتون راحت تره، همون رو استفاده کنید.
    شما داده ها رو از دیتابیس می خونید، مثلا با datareader یا اونها رو در یک table قرار می دید یا از معماری سه لایه استفاده می کنید، به هر روش، بالاخره داده ها رو دارید. فرض کنید یکی از فیلدهای شما فیبد نام هست و نمی خواید که نام تکراری وارد دیتابیس بشه. اگه این فیلد کلید باشه برنامه به شما خطا می ده. می تونید از این خطا استفاده کنید. اگه کلید نباشه، یا به هر دلیلی نخواید هنگام update خطا رخ بده، می تونید مثل روش پست 6 ابتدا چک کنید نام تکراری هست یا نه. اما روشی که من گفتم.
    شما یک لیست ژنریک درست می کنید. فرض می کنیم فیلد نام از نوع string هست.

    List<string> names=new List<string>();

    حالا این لیست رو با نام هایی که از دیتابیس خوندید به هر روشی که دوست دارید پر می کنید. مثلا با foreach

    foreach (DataRow row in Table)
    names.Add ( row["Name"].ToString());

    حالا نام ها رو خوندید و اونها رو در لیست دارید. وقتی نام جدیدی قراره وارد دیتابیس بشه، چک می کنید آیا این مقدار در لیست شما یعنی names هست یا نه. اگر بود نمی گذارید تراکنش انجام بشه. برای اینکه ببینید مقداری در لیست هست یا نه از IndexOf می تونید استفاده کنید. اگه مقدار در لیست نباشه خروجی IndexOf می شه 1-
    اگر نام تکراری نبود و نام رو وارد دیتابیس کردید، این نام رو باید به لیست خودتون اضافه کنید تا برای نام های بعدی مورد بررسی قرار بگیره. همچنین اگر نامی رو از دیتابیس Delete کردید اون رو از لیست هم با تابع Remove حذف کنید.

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1389
    پست
    93

    نقل قول: جستجو

    نقل قول نوشته شده توسط saluck مشاهده تاپیک
    سلام من می خوام وقتی کاربر فیلد تکراری وارد کرد . در پایگاه داده ام که اکسس است جستجو انجام بدم. و سپس اگر تکراری بود پیام بده . این جستج رو چطوری انجام بدم؟
    با توجه به اینکه شما کدی قابل فهم میخواهید :اگرفیلد موردنظر شماکلید است من حلقهTry رو پیشنهادمیکنم:

    }try
    کدهای برنامه(نیازی به کد جستجونیست)
    }
    }catch
    ;("کد تکراری است")messagebox.show
    }

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

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