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
اینگونه تست بفرمائید
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.