2013-09-09 4 views
2

Здравствуйте, я получил эту строку кода, чтобы загрузить изображение из базы данных Sql:Pass байт [] в качестве параметра ReportViewer

MemoryStream mem; 
    void zobraz_logo() 
    { 
     try 
     { 
      SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand("SELECT logo FROM firma WHERE id = 1", spojeni)); 
      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]["logo"]); 
       mem = new MemoryStream(data); 

      } 

     } 

     catch (Exception) 
     { 
      MessageBox.Show(""); 
     } 

    } 

Теперь я пытаюсь передать его в качестве параметра ReportViewer:

eportParameter[] parameter = new ReportParameter[18]; 

      parameter[18] = new ReportParameter("rp_logo", Image.FromStream(mem)); // this is the issue line 


      this.firmaTableAdapter.Fill(this.dataset_voucher.firma); 
      this.zajezdTableAdapter.Fill(this.dataset_voucher.zajezd,vybrana_akce,klientClass.Rocnik()); 


      this.reportViewer1.LocalReport.SetParameters(parameter); 
      this.reportViewer1.RefreshReport(); 


     } 

Я пытаюсь загрузить изображение как параметр в Image ReportViewer. Надеюсь, это возможно сделать так. Если нет, пожалуйста, предложите мне лучший способ сделать это?

На указанной линии я получаю сообщение об ошибке: Argument 2:cannot convert from System.Drawing.Image to String[]

Спасибо за ваше время.

+0

Возможный дубликат [Аргумент 5: невозможно преобразовать из 'System.Drawing.Image' в 'string' - вызов класса1 из основного класса] (http://stackoverflow.com/questions/16267104/argument-5-cannot- convert-from-system-drawing-image-to-string-call-cla) –

ответ

1

ну, как вы можете видеть ReportParameter принимающая строка, строковый массив и логическое значение, как вы можете видеть в MSDN.

Вы должны использовать один из них.

я не знаю, что изображение, но вы можете использовать это путь в докладе

parameter[18] = new ReportParameter("rp_logo", new string[]{dataImage}); 
+0

Спасибо за ваше время, я попробовал то, что вы предлагали, это: параметр [18] = новый ReportParameter («rp_logo», dataImage); (передавая исходные «данные», как в моем вопросе), но все еще получил ошибку: невозможно преобразовать байт [] в строку []. Не могли бы вы помочь мне преобразовать dataImage в строку [], пожалуйста? – Marek

+0

@Marek верная вещь, посмотрите на мое редактирование –

+0

еще раз спасибо, но все еще происходит. Когда я просто копирую то, что вы предложили. Разве вы не знаете, почему? Я сделал это так: Byte [] dataImage; и скопировал отредактированный ответ. – Marek

2

Я никогда не использовал средства просмотра отчетов, но в Crystal Report создается параметр/поле как тип объекта и вы передаете byte[] этому параметру/полю.

Смежные вопросы