PDA

View Full Version : ارسال فایل غکس از فرم به کریستال ریپورت



alicomputer
جمعه 13 بهمن 1402, 23:40 عصر
سلام دوستان
من روی فرمم یدونه عکس دارم می خوام وقتی گزارش میگیرم این عکس داخل گزارشم باشه چه روشی را پیشنهاد میدید


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

Dim modir As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtmodir"), TextObject)
modir.Text = txtShModir.Text

پرستو پارسایی
شنبه 14 بهمن 1402, 19:32 عصر
Imports CrystalDecisions.CrystalReports.Engine

' ...


Dim report As New ReportDocument()
report.Load("Path\To\Your\Report.rpt") ' مسیر فایل گزارش خود را در این قسمت قرار دهید


Dim imagePath As String = "Path\To\Your\Image.jpg" ' مسیر فایل عکس خود را در این قسمت قرار دهید
report.SetParameterValue("ImageParameter", imagePath) ' ImageParameter را با نام پارامتر عکس خود جایگزین کنید


' نمایش گزارش
CrystalReportViewer1.ReportSource = report
CrystalReportViewer1.Refresh()

ROSTAM2
شنبه 14 بهمن 1402, 20:01 عصر
سلام
پاسخی که در پست شماره 2 ارسال شده درسته ولی بهتره از روش جاسازی (Embed) تصویر استفاده کنید.
چرا که در غیر اینصورت تصویر توسط کاربران قابل تغییر خواهد بود....

alicomputer
سه شنبه 17 بهمن 1402, 22:05 عصر
سلام
من هم عکس را در خود فرم های برنامه نویسی اضافه کردنم و در پوشه خاصی نریختم، ولی نمی تونم چطوری این عکسو داخل کریستال ریپورت فراخوانی کنم

سلام
پاسخی که در پست شماره 2 ارسال شده درسته ولی بهتره از روش جاسازی (Embed) تصویر استفاده کنید.
چرا که در غیر اینصورت تصویر توسط کاربران قابل تغییر خواهد بود....

alicomputer
سه شنبه 17 بهمن 1402, 22:07 عصر
من از این کد استفاده میکنم، ریپورت ها را داخل خود ویژیوال استفاده میکنم
کریستال ریپورت 13
Dim oda As New SqlClient.SqlDataAdapter(strsqls, strconnection)
Dim adataset As New DataSet
oda.Fill(adataset, "Tbl_GharardadElam")
Dim rpt As New NameAtashBedoneSarbarg
rpt.Load("NameAtashBedoneSarbarg")
rpt.SetDataSource(adataset.Tables("Tbl_GharardadElam"))
''''''''''''''

Dim modir As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtmodir"), TextObject)
modir.Text = FrmMain.txtShModir.Text




FrmRep.CrystalReportViewer1.ReportSource = rpt
FrmRep.CrystalReportViewer1.Refresh()
FrmRep.ShowDialog()



Imports CrystalDecisions.CrystalReports.Engine

' ...


Dim report As New ReportDocument()
report.Load("Path\To\Your\Report.rpt") ' مسیر فایل گزارش خود را در این قسمت قرار دهید


Dim imagePath As String = "Path\To\Your\Image.jpg" ' مسیر فایل عکس خود را در این قسمت قرار دهید
report.SetParameterValue("ImageParameter", imagePath) ' ImageParameter را با نام پارامتر عکس خود جایگزین کنید


' نمایش گزارش
CrystalReportViewer1.ReportSource = report
CrystalReportViewer1.Refresh()

پرستو پارسایی
چهارشنبه 18 بهمن 1402, 20:33 عصر
' تعریف متغیر برای ذخیره مسیر فایل عکس
Dim imagePath As String = "PATH_TO_YOUR_IMAGE_FILE"


' تعیین مسیر فایل عکس به پارامتر گزارش
rpt.SetParameterValue("ImageParam", imagePath)


' تغییر متن مدیر در گزارش
Dim modir As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtmodir"), TextObject)
modir.Text = FrmMain.txtShModir.Text

اینگونه تست بفرمائید

alicomputer
سه شنبه 08 اسفند 1402, 01:51 صبح
' تعریف متغیر برای ذخیره مسیر فایل عکس
Dim imagePath As String = "PATH_TO_YOUR_IMAGE_FILE"


' تعیین مسیر فایل عکس به پارامتر گزارش
rpt.SetParameterValue("ImageParam", imagePath)


' تغییر متن مدیر در گزارش
Dim modir As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtmodir"), TextObject)
modir.Text = FrmMain.txtShModir.Text

اینگونه تست بفرمائید

جواب نداد شاید من مسیرو اشتباه میرم

alicomputer
سه شنبه 08 اسفند 1402, 01:55 صبح
155440
می خوام نرم افزارم اگر چند شرکتی شد توانایی اینو داشته باشه که هر شرکتی بتونه لوگوی خودشو جایگزین این لوگو کنه
ولی نمی دونم چطوری باید فراخوانی کتم
ترجیهم اینکه لوگو از داخل فرم به کریستال ریپورت ارسال بشه نه از طریق پوشه

155441
پارامتر داخل گزارش اضافه کردن و در لوکیشن غکس هم مطابق ابن آموزش (https://barnamenevis.org/showthread.php?305444-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA) انجام دادم ولی تا گزارشو می خواهد نشان دهد پیام بالا نمایش داده می شوذ که مسیر عکسو می خواد
155442

پرستو پارسایی
سه شنبه 08 اسفند 1402, 18:01 عصر
اگر تصمیم دارید کاربر لوگو رو انتخاب کنه از این کد میتونی ایده بگیری

Imports CrystalDecisions.CrystalReports.Engine

Public Class Form1


Private Sub ButtonSelectLogo_Click(sender As Object, e As EventArgs) Handles ButtonSelectLogo.Click
Dim openFileDialog As New OpenFileDialog()
openFileDialog.Filter = "Image Files|*.png;*.jpg;*.jpeg;*.gif;*.bmp"


If openFileDialog.ShowDialog() = DialogResult.OK Then
PictureBoxLogo.Image = Image.FromFile(openFileDialog.FileName)
End If
End Sub


Private Sub ButtonGenerateReport_Click(sender As Object, e As EventArgs) Handles ButtonGenerateReport.Click
Dim report As New ReportDocument()
report.Load("YourReportFile.rpt")


Dim logoByteArray As Byte() = ImageToByteArray(PictureBoxLogo.Image)
report.SetDataSource(logoByteArray)


CrystalReportViewer1.ReportSource = report
End Sub


Private Function ImageToByteArray(image As Image) As Byte()
Dim ms As New MemoryStream()
image.Save(ms, ImageFormat.Png)
Return ms.ToArray()
End Function


End Class

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

Imports System.Data.SqlClient

Public Class Form1
Private connectionString As String = "Data Source=.\SQLEXPRESS;Initial Catalog=YourDatabase;Integrated Security=True"
Private connection As New SqlConnection(connectionString)


Private Sub ButtonSelectLogo_Click(sender As Object, e As EventArgs) Handles ButtonSelectLogo.Click
Dim openFileDialog As New OpenFileDialog()
openFileDialog.Filter = "Image Files|*.png;*.jpg;*.jpeg;*.gif;*.bmp"


If openFileDialog.ShowDialog() = DialogResult.OK Then
PictureBoxLogo.Image = Image.FromFile(openFileDialog.FileName)


' ذخیره تصویر لوگو در پایگاه داده
Dim imageBytes As Byte() = ImageToByteArray(PictureBoxLogo.Image)
SaveLogoToDatabase(imageBytes)
End If
End Sub


Private Sub SaveLogoToDatabase(imageBytes As Byte())
Dim query As String = "INSERT INTO CompanyLogo (LogoImage) VALUES (@LogoImage)"
Dim command As New SqlCommand(query, connection)
command.Parameters.Add("@LogoImage", SqlDbType.Image).Value = imageBytes


connection.Open()
command.ExecuteNonQuery()
connection.Close()
End Sub


Private Function ImageToByteArray(image As Image) As Byte()
Dim ms As New MemoryStream()
image.Save(ms, ImageFormat.Png)
Return ms.ToArray()
End Function


Private Sub ButtonGenerateReport_Click(sender As Object, e As EventArgs) Handles ButtonGenerateReport.Click
Dim report As New ReportDocument()
report.Load("YourReportFile.rpt")


' بازیابی تصویر لوگو از پایگاه داده
Dim logoBytes As Byte() = GetLogoFromDatabase()
Dim logoStream As New MemoryStream(logoBytes)
Dim logoImage As Image = Image.FromStream(logoStream)


PictureBoxLogo.Image = logoImage


' ارسال تصویر لوگو به گزارش
report.SetDataSource(logoBytes)


CrystalReportViewer1.ReportSource = report
End Sub


Private Function GetLogoFromDatabase() As Byte()
Dim query As String = "SELECT LogoImage FROM CompanyLogo"
Dim command As New SqlCommand(query, connection)
Dim adapter As New SqlDataAdapter(command)
Dim dt As New DataTable()


connection.Open()
adapter.Fill(dt)
connection.Close()


Dim logoBytes As Byte() = DirectCast(dt.Rows(0)("LogoImage"), Byte())
Return logoBytes
End Function
End Class

alicomputer
چهارشنبه 09 اسفند 1402, 00:04 صبح
با عرض معدرت، کد شما رو کجای دستوراتم جا بدهم؟ فراخوانی گزارش من با شما متفاوته


' On Error Resume Next Dim strconnection As String = ("Data Source=" & server & ";Initial Catalog=Main;User ID=ali;Password=!@#;")
Dim oconnetion As New SqlClient.SqlConnection(strconnection)
Dim strsqls As String




If LblSN.Text <> "" Then
strsqls = "select * from Tbl_GarantyElam where SN LIKE N'" & (LblSN.Text) & "' ORDER BY id ASC"
Dim oda As New SqlClient.SqlDataAdapter(strsqls, strconnection)
Dim adataset As New DataSet


oda.Fill(adataset, "Tbl_GarantyElam")


Dim rpt As New GarantyElam


rpt.Load("GarantyElam")
rpt.SetDataSource(adataset.Tables("Tbl_GarantyElam"))


Dim Sherkat As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtSherkat"), TextObject)
Sherkat.Text = FrmMain.lblSherkat.Text


Dim adres As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtadress"), TextObject)
adres.Text = FrmMain.txtShAdres.Text + "_" + " تلفن: " + FrmMain.txtShTel.Text




FrmRep.CrystalReportViewer1.ReportSource = rpt

alicomputer
چهارشنبه 09 اسفند 1402, 00:53 صبح
با این روش جواب گرفتم
کد ها را باید بغد از دستور
CrystalReportViewer1.ReportSource = rpt
مینوشتم



' تعریف متغیر برای ذخیره مسیر فایل عکس
Dim imagePath As String = "PATH_TO_YOUR_IMAGE_FILE"


' تعیین مسیر فایل عکس به پارامتر گزارش
rpt.SetParameterValue("ImageParam", imagePath)


' تغییر متن مدیر در گزارش
Dim modir As CrystalDecisions.CrystalReports.Engine.TextObject = CType(rpt.ReportDefinition.Sections(3).ReportObjec ts("txtmodir"), TextObject)
modir.Text = FrmMain.txtShModir.Text

اینگونه تست بفرمائید