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

نام تاپیک: تغییر مقادیر یک datatable در dataset (برای گزارش گیری)

  1. #1

    تغییر مقادیر یک datatable در dataset (برای گزارش گیری)

    سلام.
    من یه مشکل تو گزارش گیری دارم و یه راه حل براش به ذهنم رسیده. ولی به یه مشکل دیگه برخوردم. حالا همش رو می نویسم و از دوستان تقاضا دارم اگه راه حل بهتری دارن یا می تونن مشکم رو برطرف کنند یه کمک بکنن. ممنون.
    من یه فرم تو گزارشم درست کردم که یه عکس باید بیوفته بالاش و عکس تو هارد هست نه تو دیتابیس.
    من یه view از دیتابسم درست کردم ( به عنوان منبع اطلاعاتی برای گزارشم) بعد اونو گذاشتم تو دیتاست و ازش گزارشم رو ساختم.

    مشکل:
    از اونجایی که فیلد عکس تو دیتاستم نیست نتونستم عکس خاصی که می خوام رو بزارم تو گزارش.
    البته توسط هر کوئری که گزارش چاپ میشه، باید عکس خاص خودش بیاد تو گزارش. مثل گزارش مشخصات فردی که عکس شخص باید چاپ بشه.
    راه حل من:
    من می خوام یه فیلد باینری تو datatable ای که بوسیله view توی دیتاستم ساختم اضافه کنم. بعدش موقعی که می خوام فرم گزارش رو لود کنم عکسم رو از هارد بخونم و تبدیل به باینری کنم و بریزم تو اون فیلدی که به datatable اضاف کردم.
    Datatable هم که تو گزارش لود میشه، عکس رو نشون میده.
    حالا مشکلی که با این روش دارم اینه:
    اینکه یه فیلد باینری اضاف کنم به datatable رو بلدم. اما کدی که بتونم بهش مقدار بدم رو بلد نیستم
    اگه میشه در این مورد کمک کنید.
    مرسی.

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    {بین دو آکولاد}
    پست
    303

    نقل قول: تغییر مقادیر یک datable در dataset (برای گزارش گیری)

    من برا کار با تصویر از این کدها استفاده کردم و این کدها برا من کار کرد:

    /*****اضافه کردن عکس به فرم*********/
    عکس رو میتوان از این طریق به یک پیکچر باکس اضافه کرد.


    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
    fileName = openFileDialog.FileName;
    pictureBox1.Image = Image.FromFile(fileName);
    }


    /********ذخیره کردن عکس از کامپیوتر به دیتابیس اس کیو ال********/
    تبدیل ایمیج به باینری



    private string fileName = @"C:\Users\Windows\Documents\client.jpg";
    Image img;
    img = Image.FromFile(fileName);
    byte[] bar = ImageToByteArray(img);


    که در آن تابع ImageToByteArray
    را به صورت زیر تعریف کنید:


    public byte[] ImageToByteArray(Image img)
    {
    using (MemoryStream ms = new MemoryStream())
    {
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
    return ms.ToArray();
    }
    }


    و یادت باشه ذخیره تصویر در دیتابیس اس کیو ال باید در یک ستونی از نوع varbinary(MAX)
    باشد.

    /********* فراخوان عکس از اس کیو ال به روی فرم ویندوزی********/
    تابع loadPicture عکس را در دیتا ستتان پر می کند
    که در آن از تابع
    byteArrayToImage()
    استفاده شده که در زیر تعریف شده است.


    private void loadPicture()
    {
    string conn = global::Motaleh.Properties.Settings.Default.Conn;
    SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT Pic FROM Users WHERE UserID = "+FormMain.UserID, conn);
    DataSet dataSet = new DataSet();
    dataAdapter.Fill(dataSet);

    if (dataSet.Tables[0].Rows.Count == 1)
    {

    Byte[] data = new Byte[0];
    data = (Byte[])(dataSet.Tables[0].Rows[0]["Pic"]);
    Image img = byteArrayToImage(data);
    yourPictureBox.Image = (Image)img.Clone();

    }
    }

    و تابع byteArrayToImage به صورت زیر تعریف می شود

    public System.Drawing.Image byteArrayToImage(byte[] byteArrayIn)
    {
    System.Drawing.Image returnImage = null;
    try
    {
    MemoryStream ms = new MemoryStream(byteArrayIn);
    returnImage = System.Drawing.Image.FromStream(ms); // Here I am getting Parameter is not valid' error.
    }
    catch (Exception e)
    {
    //string str = e.Message;
    MessageBox.Show(e.Message);
    }
    return returnImage;
    }


  3. #3

    نقل قول: تغییر مقادیر یک datable در dataset (برای گزارش گیری)

    سلام.
    من نمی خوام عکس رو تو دیتابیس بریزم.
    من می خوام عکس رو از تو هارد یه راس بریزم تو دیتاست. (بدون اینکه دیتابیس رو دخیل کنم).

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    {بین دو آکولاد}
    پست
    303

    نقل قول: تغییر مقادیر یک datable در dataset (برای گزارش گیری)

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


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace imageFromHardToDataTableToForm
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    DataSet ds;
    private void button1_Click(object sender, EventArgs e)
    {
    //Create a new DataTable.
    DataTable dt = new DataTable("tblTest");
    DataColumn column;
    DataRow row;

    //Create new DataColumn, set DataType, ColumnName
    //and add to DataTable.
    column = new DataColumn();
    column.DataType = System.Type.GetType("System.Byte[]");
    column.ColumnName = "Pic";
    column.AutoIncrement = false;
    column.Caption = "ParentID";
    column.ReadOnly = false;
    column.Unique = false;
    dt.Columns.Add(column);
    ds = new DataSet();
    //add datatable to dataset
    ds.Tables.Add(dt);

    //read image from hard
    string fileName = @"C:\Users\Windows\Documents\client.jpg";
    Image img;
    img = Image.FromFile(fileName);
    byte[] bar = ImageToByteArray(img);

    //Create a row and add to dt
    row = dt.NewRow();
    row["Pic"] = bar;
    dt.Rows.Add(row);



    if (ds.Tables[0].Rows.Count == 1)
    {

    Byte[] data = new Byte[0];
    data = (Byte[])(ds.Tables[0].Rows[0]["Pic"]);
    Image imgTemp = byteArrayToImage(data);
    pictureBox1.Image = (Image)imgTemp.Clone();

    }
    }

    private Image byteArrayToImage(byte[] byteArrayIn)
    {
    System.Drawing.Image returnImage = null;
    System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArrayIn);
    returnImage = System.Drawing.Image.FromStream(ms);
    return returnImage;
    }

    private byte[] ImageToByteArray(Image img)
    {
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
    return ms.ToArray();
    }
    }
    }
    }


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

  1. سوال: مشکل برای گزارش گیری از مقادیر فارسی
    نوشته شده توسط veniz2008 در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: جمعه 19 شهریور 1389, 11:26 صبح
  2. خطا در استفاده از dataset برای گزارش
    نوشته شده توسط niloo17 در بخش ابزارهای گزارش سازی
    پاسخ: 4
    آخرین پست: شنبه 05 تیر 1389, 19:12 عصر
  3. سوال: استفاده از dataset برای گزارش گیری
    نوشته شده توسط niloofar norouzi در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 20 مهر 1387, 19:07 عصر
  4. ساخت query برای گزارش گیری
    نوشته شده توسط shafiee در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: دوشنبه 12 دی 1384, 00:36 صبح
  5. چگونگی ثبت تاریخ برای گزارش گیری
    نوشته شده توسط Chabok در بخش VB.NET
    پاسخ: 4
    آخرین پست: سه شنبه 20 اردیبهشت 1384, 17:26 عصر

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

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