Как установить изображение из базы данных в отчет StimulsoftC#

Место общения программистов C#
Ответить
Anonymous
 Как установить изображение из базы данных в отчет Stimulsoft

Сообщение Anonymous »

Я разработал форму отчета, которая имеет 5 полей с изображениями, прикрепленных к переменным с типом изображения в Stimulsoft.
В моем приложении Winform с неизвестным количеством утверждающих 1-5. Я хочу распечатать форму и динамически добавлять подпись утверждающего лица в эти поля с изображениями. Код кнопки «Печать»:

Код: Выделить всё

private void btnPrint_Click(object sender, EventArgs e)
{
if (dgvList.CurrentRow == null)
{
MessageBox.Show("لطفاً یک درخواست انتخاب کنید.");
return;
}

int requestId = Convert.ToInt32(dgvList.CurrentRow.Cells["RequestID"].Value);

DataTable dtProducts = new DataTable();
DataTable dtRequest = new DataTable();
DataTable dtSignatures = new DataTable();

using (SqlConnection conn = new SqlConnection(ConnectionDB))
{
conn.Open();

using (SqlDataAdapter daProducts = new SqlDataAdapter(
"SELECT * FROM RequestProducts WHERE RequestID = @RequestID", conn))
{
daProducts.SelectCommand.Parameters.AddWithValue("@RequestID", requestId);
daProducts.Fill(dtProducts);
}

using (SqlDataAdapter daRequest = new SqlDataAdapter(
"SELECT * FROM Requests WHERE RequestID = @RequestID", conn))
{
daRequest.SelectCommand.Parameters.AddWithValue("@RequestID", requestId);
daRequest.Fill(dtRequest);
}

using (SqlDataAdapter daSignatures = new SqlDataAdapter(@"
SELECT u.FullName, u.SignatureImage
FROM Approvals a
INNER JOIN Users u ON a.ApproverID = u.UserId
WHERE a.RequestID = @RequestID
ORDER BY a.Level", conn))
{
daSignatures.SelectCommand.Parameters.AddWithValue("@RequestID", requestId);
daSignatures.Fill(dtSignatures);
}

StiReport report = new StiReport();
string reportPath = Path.Combine(Application.StartupPath, "Reports", "Report.mrt");
report.Load(reportPath);

// ثبت دیتاسورس‌ها
report.RegData("Products", dtProducts);
report.RegData("Request", dtRequest);

report.Dictionary.Synchronize();

for (int i = 0; i < 5; i++)
{
string nameVar = $"Name{i + 1}";
string sigVar = $"Signature{i + 1}";

if (i < dtSignatures.Rows.Count)
{
report[nameVar] = dtSignatures.Rows[i]["FullName"].ToString();

var bytes = dtSignatures.Rows[i]["SignatureImage"] as byte[];
if (bytes != null && bytes.Length > 0)
{
using (MemoryStream ms = new MemoryStream(bytes))
report[sigVar] = Image.FromStream(ms);
}
else
{
report[sigVar] = null;
}
}
else
{
report[nameVar] = "";
report[sigVar] = null;
}
}

report.Show();
}
}
Я проверил код во время выполнения, и таблица данных подписи имеет значение, но в конце нет никакой подписи.

На изображении показано свойство, которое я установил для полей изображений.

Изображение



Подробнее здесь: https://stackoverflow.com/questions/798 ... oft-report
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»