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

نام تاپیک: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

  1. #1

    Question ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

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

    یک جدول دارم با این وضعیت :
    Capture.JPG

    خب همانطور که مشخصه بعضی از کد ملی ها تکراری هستند
    من در واقع میخوام برای هر فرد یک کاغذ A5 به عنوان کاربرگ غیبت فردی چاپ بگیرم
    این روش رو انجام دادم و مشکلی نیست
    1- ابتدا میام به صورت group by بر اساس کد ملی اطلاعات رو توی یک دیتاگریدویو نمایش میدم
    2- وقتی کاربر روی یک ردیف دوبار کلیک می کنه اون کد ملی رو میگیرم و یک بار دیگه یک دیتاتیبل میسازم و اطلاعات رو از جدول میخونم این بار بدون group by و با شرط کد ملی = ؟؟؟ که کد ملی رو از سلول اول میگیرم
    3- اطلاعات دیتاتیبل رو میفرستم برای استیمول و تمام

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

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

    در ضمن اینطوری خواستم دیتاتیبل بسازم اما نشد :

    for (var i = 0; i < rgv.RowCount; i++)
    {
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    SQLiteConnection con = new SQLiteConnection(con);
    SQLiteCommand cmd = new SQLiteCommand("SELECT * FROM student where melli like '" + rgv.ChildRows[i].Cells["melli"].Value + "'", con);
    SQLiteDataAdapter ad = new SQLiteDataAdapter(cmd);
    DataSet ds = new DataSet();
    ad.Fill(ds, "student");
    }


    وقتی چند مورد را تیک میزنم فقط کد ملی آخری که تیک خورده گرفته میشه و دیتاتیبل بر اساس اون ساخته میشه (برای تست دیتاتیبل رو ریختم داخل یک دیتاگریدویو دیگه دیدم این شکلیه)

  2. #2

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    در حلقه فقط کدهای ملی تیک خورده را بدست بیارید. بعد از حلقه توسط یک کوئری با شرط مناسب اطلاعات را بدست آورده و به گزارش ارسال کنید.
    http://www.sqlitetutorial.net/sqlite-in
    در گزارش هم ابزارهایی هست که میتونید گروهبندی کنید.

  3. #3

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    در حلقه فقط کدهای ملی تیک خورده را بدست بیارید. بعد از حلقه توسط یک کوئری با شرط مناسب اطلاعات را بدست آورده و به گزارش ارسال کنید.
    http://www.sqlitetutorial.net/sqlite-in
    در گزارش هم ابزارهایی هست که میتونید گروهبندی کنید.
    ممنون
    پس منظورتون اینه که من اول یه حلقه بزنم و کد ملی های تیک خورده رو بدست بیارم و بعد اون رو بریزم توی لیست و برای نوشتن کوئری اونجایی که میخوام شرط بنویسم کد ملی رو مساوی لیست قرار بدم
    مثلا :
    select * from table where melli = "' + list + '"

    از اون لینکی که دادید تقریبا اینطوری متوجه شدم ...
    ممنون میشم اگر اشتباه فهمیدم بیشتر راهنمایی کنید
    به قولی اول من بتونم این مشکل رو حل کنم تا در نهایت دیتاتیبل رو درست کنم نهایتا گروه بندی رو سمت گزارش حل می کنم
    آخرین ویرایش به وسیله Mahmoud.Afrad : شنبه 12 آبان 1397 در 21:15 عصر

  4. #4

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    باید از کلمه کلیدی IN در شرط استفاده کنید. کدهای ملی را هم به طریقی به هم ملحق کنید.
    "select * from table where melli IN (" + string.Join(",", list) + ")"

  5. #5

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    ممنون استاد افراد
    با کلی ور رفتن بالاخره حل شد کد نهایی ام اینطوری شد :

    List<string> list = new List<string>();
    for (var i = 0; i < rgv.RowCount; i++)
    {
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    list.Add(rgv.ChildRows[i].Cells["melli"].Value.ToString());
    string ids = string.Join(",", list.Select(x => x.ToString()).ToArray());
    string query = string.Format("SELECT * FROM table WHERE melli in ({0})", ids);
    }


    خب همه چبز اوکی کار میکنه در خصوص چاپ هم از قابلیت group استفاده کردم و شرط رو گذاشتم روی کد ملی که بر اساس کد ملی اطلاعات دسته بندی میشه
    اما هنوز یه مشکل دیگه دارم وقتی ردیفی تیک میخوره اگر کد ملی ثبت شده اش بدون صفر شروع بشه هیچ مشکلی نیست و هر چند تا هم باشند اطلاعات به درستی کش میشن اما اگر کد ملی با صفر شروع بشه اطلاعات رو نمیخونه در صورتی که من همه رو از نوع استرینگ گرفتم (نوع ستون در جدول نوع لیست و ... همه از نوع استرینگ هستند)نمیدونم اشکال کار کجاست
    ممنون مبشم راهنمایی بفرمایید

  6. #6

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    نقل قول نوشته شده توسط barman.ar16 مشاهده تاپیک
    ممنون استاد افراد
    با کلی ور رفتن بالاخره حل شد کد نهایی ام اینطوری شد :

    List<string> list = new List<string>();
    for (var i = 0; i < rgv.RowCount; i++)
    {
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    list.Add(rgv.ChildRows[i].Cells["melli"].Value.ToString());
    string ids = string.Join(",", list.Select(x => x.ToString()).ToArray());
    string query = string.Format("SELECT * FROM table WHERE melli in ({0})", ids);
    }


    خب همه چبز اوکی کار میکنه در خصوص چاپ هم از قابلیت group استفاده کردم و شرط رو گذاشتم روی کد ملی که بر اساس کد ملی اطلاعات دسته بندی میشه
    اما هنوز یه مشکل دیگه دارم وقتی ردیفی تیک میخوره اگر کد ملی ثبت شده اش بدون صفر شروع بشه هیچ مشکلی نیست و هر چند تا هم باشند اطلاعات به درستی کش میشن اما اگر کد ملی با صفر شروع بشه اطلاعات رو نمیخونه در صورتی که من همه رو از نوع استرینگ گرفتم (نوع ستون در جدول نوع لیست و ... همه از نوع استرینگ هستند)نمیدونم اشکال کار کجاست
    ممنون مبشم راهنمایی بفرمایید
    خط 6 و 7 را از حلقه خارج کنید.
    breakpoint بزارید و محتوای query را چک و با محتوای جدول مقایسه کنید ببینید مشکل کجاست.
    ستون کدملی دقیقا نوععش چیه؟.

  7. #7

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    خط 6 و 7 را از حلقه خارج کنید.
    breakpoint بزارید و محتوای query را چک و با محتوای جدول مقایسه کنید ببینید مشکل کجاست.
    ستون کدملی دقیقا نوععش چیه؟.
    بله ممنون حواسم نبود از حلقه اوردم بیرون
    دیتابیسم sqlite هست و ستون کد ملی رو از نوع VARCHAR گرفتم
    وقتی همون ردیفی که کدملی با صفر شروع میشه رو انتخاب می کنم در واقع برگشت کوئری خالی خواهد بود برای بقیه کد ملی هایی که صفر اولشون نیست این مشکل وجود نداره
    اگر دستی برم توی دتابیس صفر اولش رو پاک کنم مشکل حل میشه
    فکر کنم توی همین کد یه مشکلی دارم
    توی قسمت دیگه از برنامه که نیاز به کوئری زدن به این شکل نیست همین کد ملی رو با صفر اول هم میتونم بگیرم و بفرستم برای چاپ
    جالب لیست رو هم از نوع استرینگ گرفتم نمیدونم اشکال کار کجاست
    جناب افراد مربوط به اون قسمت آخر کوئری نمیشه ؟؟؟
    ممنون

  8. #8

    نقل قول: ارسال اطلاعات به چاپ با چک باکس dataGridView به صورت تفکیک شده

    به صورت زیر اصلاح کنید.
    string ids = string.Join(",", list.Select(x => "'" + x + "'"));

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

  1. سوال: جدا کردن اعداد به صورت سه رقم سه رقم در datagridview
    نوشته شده توسط unique1984 در بخش C#‎‎
    پاسخ: 8
    آخرین پست: چهارشنبه 16 اردیبهشت 1394, 10:10 صبح
  2. سوال: جدا کردن اعداد به صورت سه رقم سه رقم در datagridview
    نوشته شده توسط mohammad kafiyan در بخش C#‎‎
    پاسخ: 27
    آخرین پست: یک شنبه 17 شهریور 1392, 08:19 صبح
  3. نوشتن در سرستونهای datagridview به صورت عمودی
    نوشته شده توسط soroosh_i58 در بخش VB.NET
    پاسخ: 0
    آخرین پست: چهارشنبه 27 آذر 1387, 22:37 عصر
  4. سوال: DataGridView به صورت Vertical
    نوشته شده توسط Meysamkh در بخش VB.NET
    پاسخ: 1
    آخرین پست: چهارشنبه 15 خرداد 1387, 14:54 عصر
  5. چاپ datagridview بصورت راست به چپ
    نوشته شده توسط SSoleimani در بخش VB.NET
    پاسخ: 4
    آخرین پست: یک شنبه 20 اسفند 1385, 14:12 عصر

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

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