PDA

View Full Version : عکس در دیتا بیس



mes
شنبه 15 شهریور 1382, 22:01 عصر
سلام خدمت شما اساتید محترم
یه سوال دارم که راستش خیلی مهمه اگه زحمت بکشید و بگید دعاتون می کنم
عزیزان می تونید بهم بگید که چطوری میتونم یه فیلد عکسی رو که در یه فایل بانک اطلاعاتی دارم رو تو دیتا ریپورت وقتی اسم یه شخصی میاد عکسش هم جلوش بیاد منظورم اینکه چجوری میتونم این عکسایی رو که توی فایلم دارم با یه شی ارتباطش بدم چون اون ایمیجی که تو ریپورت هست خاصیت دیتا نداره
خیلی خیلی ممنون می شم اگه بگید خدایی لنگم
خدا حافظ

روح اله معینی زاده
یک شنبه 16 شهریور 1382, 10:12 صبح
:lol: با سلام

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

امیدوارم به دردتون بخوره.

با احترام- خدانگهدار

mes
یک شنبه 16 شهریور 1382, 13:34 عصر
:lol: با سلام

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

امیدوارم به دردتون بخوره.

با احترام- خدانگهدار
منظورم آوردن عکس تو دیتا بیس تو یه دیتا ریپورت
اگه میشه زودتر

mes
یک شنبه 16 شهریور 1382, 23:20 عصر
به خدا خیلی فوریه اگه میشه بگین
من میخام از یه فایل بانک اطلاعاتی که دوتا فیلد داره یکی اسم و یکی عکس استفاده کنم و دیتا ریپورتی درست کنم که عکس هر کس رو جلوی اسمش بندازه
شرمنده ببخشید که همچین سوالایی می پرسم
اگه میشه زودتر کفته برنامم رو اگه عکس نزارم نمی گیره
دستتون درد نکنه
بازم میگم اگه میشه زودتر

mes
دوشنبه 17 شهریور 1382, 15:28 عصر
کمک :(

دوشنبه 17 شهریور 1382, 16:44 عصر
سلام
من این کار را با VB.Net و SQL Server تست کردم ... هیچ مشکل خاصی وجود نداشت :!: :?: :!:
در دیتابیس Northwind و جدول Categories یک فیلد وجود دارد که نوع آن Image است، یک گزارش روی این جدول درست کنین اگر عکس ها را در گزارش دیدین، مشکل از فیلد عکس شماست ولی اگر روی این جدول هم نتونستین انجام بدین، بگین تا براتون یک مثال درست کنم.
در ضمن شما می تونین از فیلد عکس در گزارش مانند فیلدهای معمولی استفاده کنین .

mes
دوشنبه 17 شهریور 1382, 22:28 عصر
من با بیسیک 6 کار می کنم و در ضمن من نمیتونم از ایمیج مثل یه فیلد تکست استفاده کنم اگه میشه برام یه مثال بیارید خیلی ممنون میشم
اگه میشه زودتر
باتشکر
ام.ای.اس

دوشنبه 17 شهریور 1382, 23:22 عصر
متاسفانه من با VB6 کار نکردم ..
در ضمن شما از CrystalReport استفاده می کنین ؟

mes
سه شنبه 18 شهریور 1382, 12:08 عصر
متاسفانه من با VB6 کار نکردم ..
در ضمن شما از CrystalReport استفاده می کنین ؟
کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک کمک
شمارو به خدا یکی به من بگه چیار کنم
شاید سوالم روخوب نپسیدم
ببینید عزیزان ما یه فایل بانک اطلاعاتی داریم که دوتا فیلد داره اسم و عکس و 100 تا رکورد داره می خایم یه دیتا ریپورت درس کنیم که اسم افراد رو جلو عکسشون بنویسه
تورو خدا کمکم کنید

:( :( :( :( :( :( :( :( :( :( :( :( :( :(

Abbas Arizi
سه شنبه 18 شهریور 1382, 12:28 عصر
دوست عزیز بعید میدونم توی DataReport امکان استفاده از فیلد تصویری وجود داشته باشه. چون اگه امکان داشت حتما تا الان یکی از دوستان راه حلش رو به شما گفته بود.

mes
سه شنبه 18 شهریور 1382, 12:35 عصر
دوست عزیز بعید میدونم توی DataReport امکان استفاده از فیلد تصویری وجود داشته باشه. چون اگه امکان داشت حتما تا الان یکی از دوستان راه حلش رو به شما گفته بود.
تورو به خدا این رو نگو
بدجوری وضع خرابه
پس چیکار کنم؟
یعنی برنامه نویسای ویژوال بیسیک برای عکس فکری نکردن
فک نمیکنم
بازم از تون ممنون میشم که از راه های دیگه راهنمایی م کنید

Abbas Arizi
سه شنبه 18 شهریور 1382, 12:43 عصر
باید از Crystal Reports استفاده کنید

mes
سه شنبه 18 شهریور 1382, 12:48 عصر
باید از Crystal Reports استفاده کنید
ببخشید ولی چطور،یعنی چی؟

Abbas Arizi
سه شنبه 18 شهریور 1382, 12:50 عصر
یعنی باید برید نرم افزار Crystal Reports که یک نرم افزار گزارشگیری قوی هست رو از بازار تهیه کنید و گزارشهاتون را با اون بسازید.

mes
سه شنبه 18 شهریور 1382, 12:56 عصر
یعنی باید برید نرم افزار Crystal Reports که یک نرم افزار گزارشگیری قوی هست رو از بازار تهیه کنید و گزارشهاتون را با اون بسازید.
تو اینتر نت نمی شه پیداش کرد
منظورم اینه حجمش چقدره

Abbas Arizi
سه شنبه 18 شهریور 1382, 13:00 عصر
فکر نمیکنم بصورت کامل از Internet بشه داونلودش کرد چون حجمش تقریبا زیاده. (البته بستگی به نوع اتصال شما داره)
به هر حال من الان آدرسی رو سراغ ندارم.

mes
سه شنبه 18 شهریور 1382, 13:05 عصر
فکر نمیکنم بصورت کامل از Internet بشه داونلودش کرد چون حجمش تقریبا زیاده. (البته بستگی به نوع اتصال شما داره)
به هر حال من الان آدرسی رو سراغ ندارم.
عباس جان اصمینان داری با اون کارمون را میوفته؟
البته واقعا از لطفی که کردین ممنونم

Abbas Arizi
سه شنبه 18 شهریور 1382, 13:07 عصر
بله. چون Crystal دیگه آخرشه. همین الان هم من یه تست کردم و دیدم که مشکلی نداره.

mes
سه شنبه 18 شهریور 1382, 13:09 عصر
بله. چون Crystal دیگه آخرشه. همین الان هم من یه تست کردم و دیدم که مشکلی نداره.
خیلی آقایی
حتما پیداش می کنم

Abbas Arizi
سه شنبه 18 شهریور 1382, 13:11 عصر
قربون شما. شما لطف دارید. چون کار خاصی نکردم.

mes
سه شنبه 18 شهریور 1382, 13:11 عصر
بله. چون Crystal دیگه آخرشه. همین الان هم من یه تست کردم و دیدم که مشکلی نداره.
خیلی آقایی
حتما پیداش می کنم

Voldemort
سه شنبه 18 شهریور 1382, 18:30 عصر
دوستان عزیز در وبلاگ خودم یک مقاله با فرمت PDF در زمینه ذخیره و بازیابی تصاویر ترجمه کرده ام. می توانید آن را دانلود کنید و از آن استفاده کنید. البته این مقاله در مورد ریپورتها نیست ولی می توانید آن را بسط دهید چون خیلی کلی است.

mes
پنج شنبه 20 شهریور 1382, 00:48 صبح
دوستان عزیز در وبلاگ خودم یک مقاله با فرمت PDF در زمینه ذخیره و بازیابی تصاویر ترجمه کرده ام. می توانید آن را دانلود کنید و از آن استفاده کنید. البته این مقاله در مورد ریپورتها نیست ولی می توانید آن را بسط دهید چون خیلی کلی است.
جادوگر جون اونرو قبلا خوندم ولی نتونستم جوابی برای خودم پیدا کنم
اگه میشه کمک

Voldemort
پنج شنبه 20 شهریور 1382, 11:43 صبح
فکر می کنم مشکل در اینجاست که شما می خواهید از طریق Bind یک کنترل این کار را انجام دهید. اگر به مقاله بیشتر توجه کنید می بینید که این مقاله در ارتباط با ذخیره و بازیابی تصاویر در حقیقت با کدنویسی با فیلد Memo و فایلهای معمولی کار می کند و بنابراین محدودیتی در مکان اجرای آن نیست. چه در Report ها از آن استفاده کنید و چه در فرمها و یا هرجای دیگر. یکبار دیگر سعی خودتان را بکنید.

mes
شنبه 22 شهریور 1382, 00:57 صبح
فکر می کنم مشکل در اینجاست که شما می خواهید از طریق Bind یک کنترل این کار را انجام دهید. اگر به مقاله بیشتر توجه کنید می بینید که این مقاله در ارتباط با ذخیره و بازیابی تصاویر در حقیقت با کدنویسی با فیلد Memo و فایلهای معمولی کار می کند و بنابراین محدودیتی در مکان اجرای آن نیست. چه در Report ها از آن استفاده کنید و چه در فرمها و یا هرجای دیگر. یکبار دیگر سعی خودتان را بکنید.
جادوگر جون کمک حل نمیشه
برنامرو ازم می خان
کمک :( :( :( :( :( :(

mes
پنج شنبه 27 شهریور 1382, 16:12 عصر
بله. چون Crystal دیگه آخرشه. همین الان هم من یه تست کردم و دیدم که مشکلی نداره.
خیلی آقایی
حتما پیداش می کنم
شرمنده من این رو ÷یداش کردم و این فیلد عکس رو هم قرار می دم تو صفحه آما انگار نه انگار
اگه میشه یه کمک دیگه
ممنوم
قربان شما
ام ای اس

Abbas Arizi
پنج شنبه 27 شهریور 1382, 19:16 عصر
اگه میشه دقیقا بگید چیکار کردید تا شاید ما بتونیم اشکال کار رو متوجه بشیم.

mes
پنج شنبه 27 شهریور 1382, 22:05 عصر
اگه میشه دقیقا بگید چیکار کردید تا شاید ما بتونیم اشکال کار رو متوجه بشیم.
ببین من هیچ کاری نکردم اگه میشه بگید که چطور میتونم بعد از اد کردن یه کریستال ریپورت تو برنامم میتونم دو تا فیلد نام خانوادگی و عکس رو بیارم که جلوی هم نشون بده البته اتصال با بانک اطلاعاتی ش درسته
ممنونم که کمکم میکنید
نمیدونم چطور از شما تشکر کنم
قربان شما
ام.ای.اس

Abbas Arizi
پنج شنبه 27 شهریور 1382, 23:56 عصر
وقتی از منوی Project شما Crystal Report رو اضافه میکنی یک دیالوگ ظاهر میشه. از Option ها همون اولی و از قسمت انتخاب Expert همون اولی یعنی Statndard (هر دو بصورت پیش فرض همین هستند)

http://abbas.europe.webmatrixhosting.net/Temp/Crystal01.jpg

وی OK کلیک کن.

در صفحه ای که ظاهر میشه روی Project کلیک کن. فرم انتخاب DataSource ظاهر میشود.

http://abbas.europe.webmatrixhosting.net/Temp/Crystal02.jpg

گزینه دوم یعنی ADO and OLE DB رو انتخاب کن و روی Build کلیک کن.

http://abbas.europe.webmatrixhosting.net/Temp/Crystal03.jpg

فرم انتخاب provider ظاهر میشه. Connection string رو مثل همونی که برای ADO ساختی اینجا هم بساز.

فرم بعدی که ظاهر میشه فرم انتخاب Recordset هست. روی SQL کلیک کن و روی TextBox پرس و جوی مربوط به رکوردست رو بنویس مثلا: SELECT * FROM Table1

http://abbas.europe.webmatrixhosting.net/Temp/Crystal04.jpg

روی OK کلیک کن. حالا روی همون صفحه اول (Standard Report Expert) روی Next کلیک کن تا به برگه بعدی ویزارد بری. اینجا محل ورود فیلدهاست. رو Add All کلیک کن تا همه فیلها به Report اضافه شوند.

http://abbas.europe.webmatrixhosting.net/Temp/Crystal05.jpg

حالا روی Finish کلیک کن.
الان Report آماده است ولی فیلد عکس رو اون نیست. برای آوردن فیلد عکس رو TreeView که سمت چپ Report قرار داره (Main Report) گره Database Fields رو باز کن با ماوس فیلد مربوط به عکس رو بگیر و بیار ش روی بخش Detalis گزارش (Drag&Drop)
تموم شد. فقط باید یه کم به ظاهر گزارش برسی.

امیدوارم که دیگه کارت راه بیفته.

mes
جمعه 28 شهریور 1382, 17:34 عصر
عباس جان البته کریسال من ورژن 9 و یکم با این فرق می کنه البته من همه این کارارو می کنم وعکس رو هم می کشم میاد و فیلش میاد ولی تو اصلی که ریپورت میاد عکس رو نشون نمی ده
نمی دونم چرا
بازم ممنون

Abbas Arizi
جمعه 28 شهریور 1382, 20:23 عصر
من توی ورژن همراه VS.NET (فکر کنم 9.2 باشه) هم بدون مشکل این کار رو انجام میدم. نمیدونم مشکل شما از کجاست؟

کم حوصله
شنبه 29 شهریور 1382, 00:17 صبح
آقای عریضی عزیز دوست ما مشکلش تو vb6 است نه تو vb.net و فکر می کنم این دو محیط تا حدودی با هم فرق کنند :?: :?:
البته من نمی دونم که این جوریه یا نه ولی چون شیما خانم هم که مثل شما .net کار می کنه همین پیشنهاد را داده بود ولی این دوستمون موفق به انجامش نشده بود :oops:

Abbas Arizi
شنبه 29 شهریور 1382, 00:25 صبح
خب مثال اولی با VB6.0 بود. ضمن این که اونجوریام نیست که من فقط با NET. کار کنم. VB6.0 ویژگیهایی داره که فکر نمیکنم هیچ وقت کسانی که باهاش کار کردن بتونن به طور کامل از اون جدا بشن و من اصلا با کسانی که سعی در کوبیدن اون دارن موافق نیستم. :oops:

mes
یک شنبه 30 شهریور 1382, 11:48 صبح
خب مثال اولی با VB6.0 بود. ضمن این که اونجوریام نیست که من فقط با NET. کار کنم. VB6.0 ویژگیهایی داره که فکر نمیکنم هیچ وقت کسانی که باهاش کار کردن بتونن به طور کامل از اون جدا بشن و من اصلا با کسانی که سعی در کوبیدن اون دارن موافق نیستم. :oops:
عباس جان منو ببخش چون اشتبا نوشتم 9 در صورتی که 9.2 بوده
ببخش :oops:
عباس جان کمک کن داداش
فهمیدی چی شد
عزیز من همه اون کارا و میکنم ولی وقتی که میاد اون عکس رو نشون نمی ده در صورتی که تو فایلم تو اون رکورد عکس هست اما..
ممنونمیشم اگه بازم با صبر مارو را بندازی

Abbas Arizi
یک شنبه 30 شهریور 1382, 11:51 صبح
شما توی DB از چه نوع فیلدی استفاده کردی. ممکنه اون فیلد از نوع سازگار نیست. یعنی توی Access میتونی اون فیلد رو به عنوان یک OLE OBJECT ببینی یا نه؟ اصلا از بانک Access استفاده میکنی یا چیز دیگه؟

mes
یک شنبه 30 شهریور 1382, 12:03 عصر
شما توی DB از چه نوع فیلدی استفاده کردی. ممکنه اون فیلد از نوع سازگار نیست. یعنی توی Access میتونی اون فیلد رو به عنوان یک OLE OBJECT ببینی یا نه؟ اصلا از بانک Access استفاده میکنی یا چیز دیگه؟
عباس جان بلی حتی تو فرممم از اون استفاده میکنم و مثلا ثبت نام میکنه و خیره

Abbas Arizi
یک شنبه 30 شهریور 1382, 12:07 عصر
متاسفانه من عقلم دیگه به جایی قد نمیده. :oops: از سایر دوستان تقاضا دارم که به یاری این دوست عزیز بشتابند. من هم روش فکر میکنم بلکه بفهمم گیر کارت کجاست؟
راستی میتونی فایل DB رو با EMail برای من بفرستی؟ البته یه رکورد توش باشه.

A.Noor
دوشنبه 31 شهریور 1382, 08:37 صبح
با سلام

یک راه هست اما چندان جالب نیست
در کریستال ریپورت می‌توان یک فایل تصویری روی ریپورت قرار داد . اگر این دوستمان
برایشان مقدور باشد که موقع گزارشگیری برای هربار فقط یک صفحه به چاپگر ارسال کنند ( یعنی نخواهند که چند صفحه را در یکبار چاپ به چاپگر ارسال کنند ) برنامه ای هست که تصویر را از دیتابیس بخواند و درون یک فایل تصویری ذخیره کند.

mes
دوشنبه 31 شهریور 1382, 10:02 صبح
نور عزیز اصلا نمیشه ازش اسفتاده کرد چون اطلاعات حدود 170 نفر رو باید یه جا چاپ کنه
عباس جان اینم دیتا بیسم که خاسته بودی

Abbas Arizi
دوشنبه 31 شهریور 1382, 10:51 صبح
من دیتابیس رو نگاه کردم. چیزی که فهمیدم اینه که مشکل شما در گزارش نیست بلکه در نوع ذخیره سازی تصویره و باید اون رو تغییر بدی.
میتونی بگی الان چه جوری عکسهارو ذخیره میکنی؟

mes
دوشنبه 31 شهریور 1382, 10:57 صبح
من دیتابیس رو نگاه کردم. چیزی که فهمیدم اینه که مشکل شما در گزارش نیست بلکه در نوع ذخیره سازی تصویره و باید اون رو تغییر بدی.
میتونی بگی الان چه جوری عکسهارو ذخیره میکنی؟
منظورت درست کردن فایل باشه که همون طوری که میبینی با یه او ال ای درست شده فیلدش
اما اگه منظورت ذخیرست یه دونه تو فورمم پیک گذاشتم که با یه دکمه میره و یه تصویر رو میخونه و در file nameاون قرار می ده و معمولی هم دیتا فیلد و دیتا سورس و اینا رو پر کردم
قربانت
ام.ای.اس :cry:

Abbas Arizi
دوشنبه 31 شهریور 1382, 11:40 صبح
ببین اگه برای ذخیره عکس از این تابع استفاده کنی مشکل حل میشه یا نه؟
آرگومان اول مسیر DB ، دوم مسیر تصویر، سوم پرس و جوی رکوردست و آخری نام فبلد تصویر است

Public Function AddPhotoToDb(sDbFile, strPhoto As String, strQuery As String, FieldName)
Dim intZeroFill As Integer
Dim lOffset As Long
Dim lSize As Long
Dim nHandle As Integer
Dim lSubChunks As Long
Dim Chunk() As Byte
Dim nFragmentOffset As Integer
Dim i As Integer
Dim lChunks As Long
Dim txtByteCount As Long

Const conChunkSize = 8192


Dim daoDB As DAO.Database
Dim daoRst As DAO.Recordset

Set daoDB = OpenDatabase(sDbFile)
Set daoRst = daoDB.OpenRecordset(strQuery)

If strPhoto = "" Then Exit Function

With daoRst
.AddNew

nHandle = FreeFile
Open strPhoto For Binary Access Read As nHandle

lSize = LOF(nHandle)

If nHandle = 0 Then
Close nHandle
End If

lChunks = lSize \ conChunkSize
nFragmentOffset = lSize Mod conChunkSize

ReDim Chunk(nFragmentOffset)

Get nHandle, , Chunk()
daoRst(FieldName).AppendChunk Chunk()

ReDim Chunk(conChunkSize)

lOffset = nFragmentOffset

For i = 1 To lChunks
Get nHandle, , Chunk()
daoRst(FieldName).AppendChunk Chunk()
lOffset = lOffset + conChunkSize
txtByteCount = lOffset
DoEvents
Next

.Update
End With

Close nHandle

daoDB.Close

Set daoDB = Nothing
Set daoRst = Nothing
End Function

البته این تابع از DAO استفاده میکنه و قبل از استفاده از اون باید DAO 3.51 رو به Refrence های پروژه اضافه کرده باشی.

Abbas Arizi
دوشنبه 31 شهریور 1382, 11:55 صبح
این هم همونه با ADO:

Public Function AddPhotoToDb(sDbFile, strPhoto As String, strQuery As String, FieldName)
Dim intZeroFill As Integer
Dim lOffset As Long
Dim lSize As Long
Dim nHandle As Integer
Dim lSubChunks As Long
Dim Chunk() As Byte
Dim nFragmentOffset As Integer
Dim i As Integer
Dim lChunks As Long
Dim txtByteCount As Long

Const conChunkSize = 8192

Dim adoCn As ADODB.Connection
Dim adoRst As ADODB.Recordset

Set adoCn = New ADODB.Connection
Set adoRst = New ADODB.Recordset

adoCn.Provider = "Microsoft.JET.OLEDB.4.0"
adoCn.Open sDbFile

adoRst.LockType = adLockOptimistic
adoRst.Open strQuery, adoCn

With adoRst
.AddNew

nHandle = FreeFile
Open strPhoto For Binary Access Read As nHandle

lSize = LOF(nHandle)

If nHandle = 0 Then
Close nHandle
End If

lChunks = lSize \ conChunkSize
nFragmentOffset = lSize Mod conChunkSize

ReDim Chunk(nFragmentOffset)

Get nHandle, , Chunk()
adoRst(FieldName).AppendChunk Chunk()

ReDim Chunk(conChunkSize)

lOffset = nFragmentOffset

For i = 1 To lChunks
Get nHandle, , Chunk()
adoRst(FieldName).AppendChunk Chunk()
lOffset = lOffset + conChunkSize
txtByteCount = lOffset
DoEvents
Next

.Update
End With

Close nHandle

adoCn.Close

Set adoCn = Nothing
Set adoRst = Nothing
End Function

mes
دوشنبه 31 شهریور 1382, 12:06 عصر
عزیز خوب من این کارارو با شیئ ها انجام دادم دیگه
ولی چشم امتحان میکنم

mes
دوشنبه 31 شهریور 1382, 12:30 عصر
عباس جان فکر نمی کنم از ذخیره عکی باشه عزیز می ونی برام یه مثال با یه دتا بیس ذیگه که درست کار میکنه بفرستی؟ البته شرمنده
ببخش منو چند روزه مزاحمم
یا علی

Abbas Arizi
دوشنبه 31 شهریور 1382, 13:00 عصر
این گزارش با Crytal 8.5 هست. نمیدونم با 9.2 تطابق داره یا نه؟ ولی به هرحال اگه بتونید اون رو باز کنید میبیند که عکسی رو که شما وارد کردید نشون نمیده ولی عکسی رو که من با همین روش ذخیره کرده ام نشون میده.

mes
دوشنبه 31 شهریور 1382, 15:00 عصر
عباس جان اگه این طور باشه حلش می کن
آق زحمت کشیدین
قربانت
ام.ای.اس
:wink:

mes
دوشنبه 31 شهریور 1382, 15:44 عصر
عباس جان با 9.2 سازگار نیست ولی تو اون دیتا بیسی که شما ذخیره کردی توش چنتا عکس رفتم وبا 9.2 یه ریپورت درس کردم در اون اول در طراحی عکسه میاد و لی در موقع اجرا دریغاز تصویر.
واقعا به خدا روم نمی شه بنویسم
قربانت
ام.ای.اس

Abbas Arizi
دوشنبه 31 شهریور 1382, 16:30 عصر
متاسفانه من Crsytal Report 9.2 رو به اون شکلی که شما داری ندارم تا بتونم بگم دقیقا باید چیکار کرد.
توی کدی که من ضمیمه کرده ام روی اون فرم گزارش توی Form_Load من یک کد برای تنظیم DataSource نوشته ام. ببین اون رو میشه روی گزارش پیاده کرد یا نه؟ اگر بتونی اون کار رو بکنی شاید این اشکال برطرف بشه.