ورود

View Full Version : درج عکس در گزارش



msh_gold
چهارشنبه 13 آذر 1387, 13:07 عصر
با سلام آقا مرتضی اگه میشه برای من یه مشکل دیگه علاوه بر فراخوانی عکس از بانک در گزارش پیش اومده موقع استفاده از کریستال ریپورد در سیستم دیگه فرم لوگین برای username وpassword باز میشه اگه یه لطفی کنی و راه حل این مشکل رو هم بگی ممنون میشم.بانکم sql express است

MORTEZA66
چهارشنبه 13 آذر 1387, 14:38 عصر
سلام دوست من
اين كدها براي نمايش عكس در يك گزارش هست


Dim con22 As New SqlClient.SqlConnection(con1.ConnectionString)
con22.Open()
'Dim dset2 As New DataSet
'dset2.Dispose()
'dset2 = New DataSet
Dim dr As DataRow
Dim dt As New DataTable
sqltext = "select UserPic from tblmembers where memberid='" + PrKeySearchtxt.Text.Trim + "'"
Dim dap22 As New SqlClient.SqlDataAdapter(sqltext, con2)
dap22.Fill(dt)
dr = dt.Rows(0)
Dim arrPicture() As Byte = CType(dr("UserPic"), Byte())
'Create a new instance of the dataset
Dim dsImgRpt As New ImageDset
'Create a new row in the dataset
Dim imgdr As ImageDset.ImageTlbRow = dsImgRpt.ImageTlb.NewImageTlbRow
'fill this field with a byte array
imgdr.Photo = arrPicture
''Add the new row to the dataset
dsImgRpt.ImageTlb.Rows.Add(imgdr)
'
arrPicture = Nothing

'''''
Dim imagereport As New Report
imagereport.SetDataSource(dsImgRpt)
Dim subrep As CrystalDecisions.CrystalReports.Engine.Subreports
subrep = IdCartrpt.Subreports
subrep.Item(0).SetDataSource(dsImgRpt)
'
con2.Close()

imagedset يك ديتا ست هست با دو ستون يك از نوع string و يكي از نوع Byte
اين كدها رو از توي يكي از برنامه هام كپي گرفتم ببخشيد ديگه يكم شلوغ پلوغه ولي خيلي نكات رو پوشش ميده
براي مشكل نمايش كادر هم توضيح كامل هم براي اكسس و هم براي sql دادم كافيه يه سرچ با نام كاربري morteza66 بكني حتما پيدا ميشه توي همون صفحه اول اينم يكي از همون جوابهاست
http://barnamenevis.org/forum/showthread.php?t=127240

من چون داشتم حركت ميكردم به سمت ولايت فرصت نشد زياد توضيح بدم اگه مشكلي بود بگو تا 5شنبه بعد از ظهر بيان توضيحات كامل بدم

MORTEZA66
چهارشنبه 13 آذر 1387, 14:43 عصر
اينجوري هم ميشه از نمايش اون كادر با بانك sql جلوگيري كرد فقط كافيه همون جا زمان نمايش گزارش يه كانكشن بسازي و به ديتا اداپتري كه استفاده مي كني نسبت بدي


Dim con22 As New SqlClient.SqlConnection(con1.ConnectionString)
con22.Open()
Dim dap22 As New SqlClient.SqlDataAdapter(sqltext, con22)

MORTEZA66
چهارشنبه 13 آذر 1387, 14:48 عصر
اينم sampleهاي مرتبط

msh_gold
جمعه 15 آذر 1387, 10:15 صبح
سلام آقا مرتضی متاسفانه من از این کد ها نتونستم استفاده کنم.اگه میشه یه خورده بیشتر توضیح بدید ممنون میشم.مثلا متغییر ها رو توضیح بدید که از چه نوعی هستند.

MORTEZA66
شنبه 16 آذر 1387, 23:29 عصر
تمام متغيرها در همون جا تعريف شده اند منظور شما كدوم يكي است؟
قسمت هايي اش رو كه فهمش براتون مشكله بگيد تا بگم

MORTEZA66
شنبه 16 آذر 1387, 23:42 عصر
تعريف يك كانكشن با همون كانكشن استرينگ كه به بانكتون وصل ميشيد


Dim con22 As New SqlClient.SqlConnection(con1.ConnectionString)
con22.Open()

خوندن عكس از بانك و ذخيره اون به صورت ارايه اي از نوع بايت


Dim dr As DataRow
Dim dt As New DataTable
sqltext = "select UserPic from tblmembers where memberid='" + PrKeySearchtxt.Text.Trim + "'"
Dim dap22 As New SqlClient.SqlDataAdapter(sqltext, con2)
dap22.Fill(dt)
dr = dt.Rows(0)
Dim arrPicture() As Byte = CType(dr("UserPic"), Byte())


تعريف متغيري از نوع ديتاستي كه گفتم بايد با دو ستون به برنامه اضافه كنيد و نسبت دادن عكس خونده شده به اون احتمالا مشكل شما در همين ستون ها و جدول هاي ديتاست است ديتاست رو هم براتون ميذارم ImageTlb نام جدول ديتاست و photo نام ستون از نوع بايت است


Dim dsImgRpt As New ImageDset
'Create a new row in the dataset
Dim imgdr As ImageDset.ImageTlbRow = dsImgRpt.ImageTlb.NewImageTlbRow
'fill this field with a byte array
imgdr.Photo = arrPicture
''Add the new row to the dataset
dsImgRpt.ImageTlb.Rows.Add(imgdr)
'
arrPicture = Nothing

MORTEZA66
شنبه 16 آذر 1387, 23:52 عصر
قسمت اخر رو قبول دارم يكمي شايد گيج كننده باشه چون صفحه گزارش عكس به صورت يه subReportدر گزارش اصلي است و كار با subReportهاربطي به ماجرا نداره اما شما بايد ديتاستي رو كه درست كرديد به عنوان DataSource اون صفحه گزارشي بذاريد كه عكس اونجا وجود داره به همين راحتي!


Dim imagereport As New Report
imagereport.SetDataSource(dsImgRpt)

و در صفحه گزارشتون هم فيلدي از نوع oleObject يا BlobField وجود دارد البته با oleObject امتحان نكردم ولي فرقي نداره

MORTEZA66
یک شنبه 17 آذر 1387, 00:00 صبح
اينم ديتاست كه گفتم امتحان كن

mohamadsamin
سه شنبه 22 بهمن 1387, 06:49 صبح
salam bacheha man mikham tarighe ye gharar dadan o save kardane ax dar sql server 2000 ba tashakor