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

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

  1. #1

    Question مشکل در ارسال عکس به استیمول سافت به دفعات

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

    report.Dictionary.Variables["Image"].ValueObject = Image.FromFile(Application.StartupPath + @"\pic\st" + codemelli + ".jpg");


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

    StiReport report = new StiReport();
    report.LoadEncryptedReport(Application.StartupPath + @"\rep\stkar.mrx", "1234");
    DataTable dt = new DataTable();
    dt.Columns.Add("melli");
    dt.Columns.Add("name");
    dt.Columns.Add("family");
    for (var i = 0; i < rgv.RowCount; i++)
    {

    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    report.Dictionary.Variables["Image"].ValueObject = Image.FromFile(Application.StartupPath + @"\pic\st" + rgv.ChildRows[i].Cells[1].Value.ToString() + ".jpg");
    dt.Rows.Add(rgv.ChildRows[i].Cells[1].Value,
    rgv.ChildRows[i].Cells[2].Value,
    rgv.ChildRows[i].Cells[3].Value);
    }
    report.RegData("DataSource1", dt);
    report.Reset();
    report.Show();


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

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

  2. #2

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    به جای variable ، به DataSource1 و همچنین دیتاتیبل یک ستون از نوع image اضافه کنید. عکسها را هم به دیتاتیبل اضافه و به گزارش ارسال کنید.

  3. #3

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    به جای variable ، به DataSource1 و همچنین دیتاتیبل یک ستون از نوع image اضافه کنید. عکسها را هم به دیتاتیبل اضافه و به گزارش ارسال کنید.
    ممنون استاد بسیار عالی
    فقط یه جا مشکل برخوردم اون هم اینکه باید نوع ستونی که به دیتاتیبل اضافه می کنیم رو از نوع ایمیج معرفی کنیم اینطوری :

    dt.Columns.Add("image", typeof(System.Drawing.Image));

    اگر نوع مشخص نشه کار نمی کنه
    این رو گفتم شاید به درد فرد دیگه ای هم بخوره
    باز هم ممنون و متشکرم

  4. #4

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    یه سوال دیگه ...
    الان که تست گرفتم متاسفانه یه خطای دیگه دارم اون هم اینکه اگر بین اون هایی که تیک میخورند موردی باشه که عکس نداشته باشه باعث میشه اکسپشن بده و چاپ داده نشه
    چطوری میشه این رو مدیریت کرد که مثلا اگر عکسی موجود نبود اتفاقی نیفته یعنی بدون عکس چاپ بشه ... اگر هم بشه یه عکس پیشفرض داد بابت اون هایی که عکس ندارند که عالی میشه
    کد نهایی ام اینطوری شد :

    StiReport report = new StiReport();
    report.LoadEncryptedReport(Application.StartupPath + @"\rep\stkar.mrx", "1234");
    DataTable dt = new DataTable();
    dt.Columns.Add("melli");
    dt.Columns.Add("name");
    dt.Columns.Add("family");
    dt.Columns.Add("image", typeof(System.Drawing.Image));
    for (var i = 0; i < rgv.RowCount; i++)
    {
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    dt.Rows.Add(rgv.ChildRows[i].Cells[1].Value,
    rgv.ChildRows[i].Cells[2].Value,
    rgv.ChildRows[i].Cells[3].Value,
    Image.FromFile(Application.StartupPath + @"\pic\st" + rgv.ChildRows[i].Cells[1].Value + ".jpg"));
    }
    report.RegData("DataSource1", dt);
    report.Reset();
    report.Show();


    ممنون

  5. #5

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    نقل قول نوشته شده توسط barman.ar16 مشاهده تاپیک
    یه سوال دیگه ...
    الان که تست گرفتم متاسفانه یه خطای دیگه دارم اون هم اینکه اگر بین اون هایی که تیک میخورند موردی باشه که عکس نداشته باشه باعث میشه اکسپشن بده و چاپ داده نشه
    چطوری میشه این رو مدیریت کرد که مثلا اگر عکسی موجود نبود اتفاقی نیفته یعنی بدون عکس چاپ بشه ... اگر هم بشه یه عکس پیشفرض داد بابت اون هایی که عکس ندارند که عالی میشه
    کد نهایی ام اینطوری شد :

    StiReport report = new StiReport();
    report.LoadEncryptedReport(Application.StartupPath + @"\rep\stkar.mrx", "1234");
    DataTable dt = new DataTable();
    dt.Columns.Add("melli");
    dt.Columns.Add("name");
    dt.Columns.Add("family");
    dt.Columns.Add("image", typeof(System.Drawing.Image));
    for (var i = 0; i < rgv.RowCount; i++)
    {
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    dt.Rows.Add(rgv.ChildRows[i].Cells[1].Value,
    rgv.ChildRows[i].Cells[2].Value,
    rgv.ChildRows[i].Cells[3].Value,
    Image.FromFile(Application.StartupPath + @"\pic\st" + rgv.ChildRows[i].Cells[1].Value + ".jpg"));
    }
    report.RegData("DataSource1", dt);
    report.Reset();
    report.Show();


    ممنون
    اگر رکوردی عکس نداشته باشد مسیر عکس نامعتبر خواهد بود. قبل از خط11 چک کنید اگر رکورد دارای عکس نبود null و یا آدرس یک عکس پیشفرض را ارسال کنید.

  6. #6
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    نقل قول نوشته شده توسط barman.ar16 مشاهده تاپیک
    یه سوال دیگه ...
    الان که تست گرفتم متاسفانه یه خطای دیگه دارم اون هم اینکه اگر بین اون هایی که تیک میخورند موردی باشه که عکس نداشته باشه باعث میشه اکسپشن بده و چاپ داده نشه
    چطوری میشه این رو مدیریت کرد که مثلا اگر عکسی موجود نبود اتفاقی نیفته یعنی بدون عکس چاپ بشه ... اگر هم بشه یه عکس پیشفرض داد بابت اون هایی که عکس ندارند که عالی میشه
    کد نهایی ام اینطوری شد :

    StiReport report = new StiReport();
    report.LoadEncryptedReport(Application.StartupPath + @"\rep\stkar.mrx", "1234");
    DataTable dt = new DataTable();
    dt.Columns.Add("melli");
    dt.Columns.Add("name");
    dt.Columns.Add("family");
    dt.Columns.Add("image", typeof(System.Drawing.Image));
    for (var i = 0; i < rgv.RowCount; i++)
    {
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    dt.Rows.Add(rgv.ChildRows[i].Cells[1].Value,
    rgv.ChildRows[i].Cells[2].Value,
    rgv.ChildRows[i].Cells[3].Value,
    Image.FromFile(Application.StartupPath + @"\pic\st" + rgv.ChildRows[i].Cells[1].Value + ".jpg"));
    }
    report.RegData("DataSource1", dt);
    report.Reset();
    report.Show();


    ممنون
    طبق فرموده استادمون مهندس افراد



    StiReport report = new StiReport();
    report.LoadEncryptedReport(Application.StartupPath + @"\rep\stkar.mrx", "1234");
    DataTable dt = new DataTable();
    dt.Columns.Add("melli");
    dt.Columns.Add("name");
    dt.Columns.Add("family");
    dt.Columns.Add("image", typeof(System.Drawing.Image));
    for (var i = 0; i < rgv.RowCount; i++)
    {
    string imagepath = Application.StartupPath + @"\pic\st" + rgv.ChildRows[i].Cells[1].Value + ".jpg";
    if (!File.Exists(imagepath))
    {
    imagepath = "آدرس عکس پیشفرض";
    }
    if (!Convert.ToBoolean(rgv.Rows[i].Cells[0].Value)) continue;
    dt.Rows.Add(rgv.ChildRows[i].Cells[1].Value,
    rgv.ChildRows[i].Cells[2].Value,
    rgv.ChildRows[i].Cells[3].Value,
    Image.FromFile(imagepath));
    }
    report.RegData("DataSource1", dt);
    report.Reset();
    report.Show();




    دوست عزیز یه پیشنهادی هم بهتون بدم چون یه بار سر خودم اومده و کلی کار رو دستم گذاشت گفتم به شمام بگم. بجای استفاده از ایندکس ستون ها از اسمشون استفاده کنید. درصورت تغییر ترتیب ستونها باید ایندکسون رو تو کد نویسی تغییر بدید ولی اگه از اسمشون استفاده کنید اونهارو صرفا بر اساس اسماشون استفاده میکنید و نیازی به خاطر سپردن موقعیتشون نداری.
    rgv.Rows[i].Cells[0].Value
    رو مثلا به این صورت
    rgv.Rows[i].Cells["IsSelected"].Value

  7. #7
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    40
    پست
    1,236

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    سلام
    سه خط کد آخر رو به شکل زیر تغییر بده
    report.RegData("DataSource1", dt);
    //report.Reset();
    report.Render();
    report.Show(true);
    report.ResetRenderedState();

  8. #8

    نقل قول: مشکل در ارسال عکس به استیمول سافت به دفعات

    نقل قول نوشته شده توسط shahryari مشاهده تاپیک
    سلام
    سه خط کد آخر رو به شکل زیر تغییر بده
    report.RegData("DataSource1", dt);
    //report.Reset();
    report.Render();
    report.Show(true);
    report.ResetRenderedState();
    سلام
    ممنون بابت راهنمایی ... علت رو هم میفرمایید
    منظورم اینه که بابت سوالی که من پرسیدم هست یا یک تجربه کاری ...؟؟؟

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

  1. سوال: چگونه یک dataSet که حاوی دو تا dataTable هست را به گزارش استیمول سافت بفرستیم.
    نوشته شده توسط sayanpro در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: جمعه 06 آذر 1394, 17:20 عصر
  2. در صفحه اول هستیم ؟
    نوشته شده توسط amirepsilon در بخش PHP
    پاسخ: 5
    آخرین پست: دوشنبه 22 شهریور 1389, 22:35 عصر
  3. هاستینگ Tomcat! - نظر خواهی برایه هاستیگ با قیمت مناسب.
    نوشته شده توسط mazdadoost در بخش Java EE : نگارش سازمانی جاوا
    پاسخ: 4
    آخرین پست: یک شنبه 22 دی 1387, 00:49 صبح
  4. هاستینگ رایگان برای php
    نوشته شده توسط jazire در بخش PHP
    پاسخ: 2
    آخرین پست: چهارشنبه 06 اردیبهشت 1385, 14:05 عصر

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

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