برگزیده های پرشین تولز

چطور از VB يك عكس را در Access ذخيره كنيم و بر عكس

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
دوستان سلام
فرض كنيد يك فيلد در Access از نوع OLE داريم. چگونه مي توان يك عكس (يا صدا يا ...) را از VB در اين فيلد Insert يا Update كرد. همچنين چگونه مي توان از اين فيلد عكسي (يا صدايي يا ...) را خواند و در VB مثلا در يك ImageBox نشان داد (يا اگر صوت است مثلا در يك MMControl پخش كرد.
البته يه وقت يكي فكر نكنه كه مي خواد Text را از Access بخونه و بياد با قيافه حق به جانب كه اين كيه در فروم اومده و با كلي كلاس گذاشتن دستورات SQL را آموزش دهد. اگر كسي قبلا اين كار را نكرده قبل از پاسخ دادن يكبار تست كند.
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
سلام
عجب فرومي. يعني هيشكي بلد نيست جواب ما چيه؟ :eek:
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
با شناختي كه از بچه هاي اين فروم دارم فكر ميكنم حداقل 7-8 نفرشون بلدن شايد هم قبلا از اينكارها كرده باشن ولي اونجوري كه شما همون اول دم برقشون رو كوبيدي (كارفرما هم كه پول بده اينجوري شروط نميگذاره!) ترجيح دادن وارد اين قضيه نشن!
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
به نقل از mazoolagh :
با شناختي كه از بچه هاي اين فروم دارم فكر ميكنم حداقل 7-8 نفرشون بلدن شايد هم قبلا از اينكارها كرده باشن ولي اونجوري كه شما همون اول دم برقشون رو كوبيدي (كارفرما هم كه پول بده اينجوري شروط نميگذاره!) ترجيح دادن وارد اين قضيه نشن!

شايد شما درست بگي.

البته يه وقت يكي فكر نكنه كه مي خواد Text را از Access بخونه و بياد با قيافه حق به جانب كه اين كيه در فروم اومده و با كلي كلاس گذاشتن دستورات SQL را آموزش دهد. اگر كسي قبلا اين كار را نكرده قبل از پاسخ دادن يكبار تست كند.
در كل بگم كه قصد كلاس گذاشتن نيست. نه ما شما رو ميشناسيم نه شما ما رو پس دليلي نداره كلاس بذاريم. در ثاني شما اينجا داريد سوال ميكنيد. واقعا از كسي حضوري سوال كنيد همين جوري باهاش حرف ميزنيد؟
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
سلام

دوستان حق با شما بود. البته اين تصور از يكي از Replyها به من القا شد كه در آن يه بنده خدا يه چيزي خواسته بود و يه بنده خداي ديگه كلي نوشته بود كه بله بعضيا چيزاي ابتدايي از ما مي پرسند و خلاصه كلي از اين چيزها.

البته باز هم ميگم حق با شما بود. من با يه Reply نبايد اينجوري قاط مي زدم.

بگذريم. حالا بالاخره يكي جوابه ما را ميده؟ (اگه هر كي تا حالا به قول mazoolagh ترجيح داده وارده اين قضيه نشه لطفا وارد بشه. من اين رو لازم دارم و تا حالا چيزي براش پيدا نكردم)
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
به نقل از Niloufar :
سلام

دوستان حق با شما بود. البته اين تصور از يكي از Replyها به من القا شد كه در آن يه بنده خدا يه چيزي خواسته بود و يه بنده خداي ديگه كلي نوشته بود كه بله بعضيا چيزاي ابتدايي از ما مي پرسند و خلاصه كلي از اين چيزها.

البته باز هم ميگم حق با شما بود. من با يه Reply نبايد اينجوري قاط مي زدم.

بگذريم. حالا بالاخره يكي جوابه ما را ميده؟ (اگه هر كي تا حالا به قول mazoolagh ترجيح داده وارده اين قضيه نشه لطفا وارد بشه. من اين رو لازم دارم و تا حالا چيزي براش پيدا نكردم)

دو سه روز صبر كردم كس ديگه اي جواب بده ببينم اگر روش اون بهتره منهم از همون استفاده كنم! بنابراين فعلا به اطلاعات ناقص من قناعت كن:
1- بهتره اصلا از فيلدهاي ole براي نگهداري فايلها استفاده نشه (اگر توضيح ميخواي بگو) و يك فيلد متن كه آدرس فيزيكي يا url فايل رو نگهداري كنه جايگزين خيلي مناسبتري هست!
2- حالا اگر بهر دليل حتما اين فايلها بايد درون ديتابيس قرار بگيره بازهم بهتره كه بجاي embeded ole از BLOB استفاده بشه (دلايل اين رو هم اگر خواستي بپرس)
3- اگر 2 مورد بالا از نظرن مشكل نداره و dot net هم مورد قبولت هست (نه VB6) بگو تا با VB يا C راهنمايي كنم.
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
به نقل از mazoolagh :
1- بهتره اصلا از فيلدهاي ole براي نگهداري فايلها استفاده نشه (اگر توضيح ميخواي بگو) و يك فيلد متن كه آدرس فيزيكي يا url فايل رو نگهداري كنه جايگزين خيلي مناسبتري هست!
2- حالا اگر بهر دليل حتما اين فايلها بايد درون ديتابيس قرار بگيره بازهم بهتره كه بجاي embeded ole از BLOB استفاده بشه (دلايل اين رو هم اگر خواستي بپرس)
3- اگر 2 مورد بالا از نظرن مشكل نداره و dot net هم مورد قبولت هست (نه VB6) بگو تا با VB يا C راهنمايي كنم.

سلام

1- من هم دارم به ريتم نوشتن 1-... 2-... 3-... كه از جانب برخي دوستان (خصوصا بطور بارز فرود) ارائه مي شد عادت مي كنم. :rolleyes:
2- من پيشنهاد اول شما را متوجه شدم ولي نمي خواهم فايل ها را به طور فيزيكي در اختيار كاربر بگذارم كه بدون نياز به برنامه بتواند از آنها استفاده نمايد و اتفاقا همين باعث شد كه اين بند را شروع كنم.
3- در Access فيلد از نوع Ole Object وجود دارد ولي من چيزي به نام BLOB در آن سراغ ندارم. لطفا بيشتر توضيح دهيد.
4- ترجيحا VB6 چون اين پروژه اي كه دارم كار مي كنم را با VB6 كار كردم و خيلي هم جلو رفته ام.
5- اگر لطف كنيد ديگر دو سه روز صبر نكنيد. چون نياز شديد دارم.
6- عيد همگي دوستان پيشاپيش مبارك باشه.
 

emad86_20011

Registered User
تاریخ عضویت
4 فوریه 2004
نوشته‌ها
185
لایک‌ها
2
سن
36
محل سکونت
Mashhad, Iran
من كه كلا از حرفاتون سر در نياوردم...
لطفا يكي بياد اين بحث رو كامل كنه شايد به درد ما هم خورد :)
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
1- اين OLE Object در واقع همون فيلد BLOB هستش
اينم از خود اكسس :
An object (such as a Microsoft Excel spreadsheet, a Microsoft Word document, graphics, sounds, or other binary data) linked to or embedded in a Microsoft Access table.

بايد با اين نوع فيلد كار كني.
2- من مشكل ديگري رو هم به زودي براتون پيش بيني ميكنم: سرعت. تا به حال نشده من يه فيلد باينري داشته باشم و آخرش سرعت كم نيارم. يعني اون آخر مكافاتي ميشه براتون. براي BDE بورلند فيلدهايي با سايز 15 كيلو به بالا فقط تا 150 تاي اول جواب ميده و سرعت مناسبه - اكسس تا 200 تا (نهايتش) SQL Server بسته به سرورش و اگه خلوت باشه تا 800 و 1000 هم مشكل نداشتم -'گاهي كه سيستم بدجوري شلوغ پلوغ بوده كم آورده- بيشترشم پيش نيومده تست كنم. اما با MySql نميدونم چطور كار ميكنه : فقط يگم خيلي!! هر چي اضافه ميكنم انگار كم نمياره!!!

اوراكل هم نميدونم!
3- براي رفع اين مشكل آخري توصيه ميكنم فيلد باينري رو تو همون جدول نذاري. مثلا يه جدول ديگه درست كن و يك فيلد براي ارتباط بذار - مثل ID مشترك- منظورم اينه كه كلا يه فايل ديگه بساز. البته راه عالي نيست اما بهتر ميشه. تا نيازم نداري سراغ جدول دوم نرو.
براي درك بيشتر كل اين متني كه الان ميخونيد -همين پست- از حجم آواتارم خيلي كمتره !! - يه چيزي در حدود يك سوم -
4 - من ديتابيس كار كردن با وي بي بلد نيستم چه رسد به BLOB!!!! :wacko:
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
2- من پيشنهاد اول شما را متوجه شدم ولي نمي خواهم فايل ها را به طور فيزيكي در اختيار كاربر بگذارم كه بدون نياز به برنامه بتواند از آنها استفاده نمايد و اتفاقا همين باعث شد كه اين بند را شروع كنم.
پس همونطور كه فرود اشاره كرد بايد همه مشكلاتش رو هم تحمل كني:
افزايش حجم ديتابيس access بصورت وحشتناك! يك فايل تصوير 2 مگا بايتي ممكنه 30 مگابايت به حجم فايل mdb اضافه كنه! ضمنا فايلهاي jpeg بصورت غير فشرده ذخيره ميشن. كلا اگر حجم واقعي تصاويرت 200 مگابايت بشه ديتابيست ميشه 2 گيگابايت (تصورش سخته ولي واقعيت داره)
علاوه بر اين بعضي وقتها اختلاف بين نرم افزارهايي كه هنگام طراحي ديتابيس براي ساختن عكسها استفاده شده با نرم افزارهاي كاربر ايجاد اشكال ميكنه (ممكنه اصلا تصوير رو نشون نده) گاهي اوقات در نرم افزارهاي يكسان اختلاف ورژن هم مساله ساز ميشه!
دست آخر اينكه اگر علت همه اين مصايب فقط كپي نگرفتن از عكسهات هست بدون كه فايده چنداني نداره و براي يك آدم وارد استخراج اطلاعات حتي از ديتابيسهاي داراي كلمه رمز امكانپذير هست. بهتره از روشهاي ديگه براي محافظت از عكسها استفاده كني!



3- در Access فيلد از نوع Ole Object وجود دارد ولي من چيزي به نام BLOB در آن سراغ ندارم. لطفا بيشتر توضيح دهيد.
Binary Large OBject يعني اينكه محتواي يك فايل باينري عينا بايت به بايت در يك فيلد باينري مثل OLE يا Memo ذخيره بشه. خاصيتش اينه كه ديگه سربار حجم ديتابيس وجود نداره (عملا داره مقدارش زير پنج درصد ميشه) ولي نوشتن و خوندنش نياز به روشهاي خاص داره!


4- ترجيحا VB6 چون اين پروژه اي كه دارم كار مي كنم را با VB6 كار كردم و خيلي هم جلو رفته ام.
5- اگر لطف كنيد ديگر دو سه روز صبر نكنيد. چون نياز شديد دارم.
متاسفانه برنامه اش رو ندارم تا بتونم كد پيشنهادي رو قبلش تست كنم. بهتره از miladmovie و littlerabit كه تجربه بيشتري دارن كمك بگيري.
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
دوستان سلام

1- از mazoolagh بابت اين توضيحات ممنونم
2- در حال حاضر براي من داخل بانك بودن تصوير و صداها مهمتر از حجم ديتابيس است
3- از هر يك از دوستان (miladmovie و littlerabit و ...) كه اطلاعات بيشتري در اين زمينه يا در مورد BLOB كه mazoolagh توضيح آن را داد دارند ممنون مي شوم اگر راهنمايي نمايند
4- mazoolagh عزيز اگر راه ديگري هم براي محافظت از عكسها سراغ داريد (خارج از اين بحث و فقط براي يادگيري بيشتر) لطفا بيان فرماييد
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
در حال حاضر براي من داخل بانك بودن تصوير و صداها مهمتر از حجم ديتابيس است
اگر اصرار شما بر داخل بانك بودن تصاوير براي محافظت از آنهاست كه اينكار سودي نداره چون قرار دادن تصاوير در بانك بتنهايي و بدون تمهيدات كافي باعث محافظت از اونها نميشه - محافظت از تصاوير را ميتوان براي اطلاعات خارج بانك نيز ميتوان بهمان خوبي و شايد ساده تر هم انجام داد.

اگر راه ديگري هم براي محافظت از عكسها سراغ داريد (خارج از اين بحث و فقط براي يادگيري بيشتر) لطفا بيان فرماييد
ميشه هر نوع اطلاعاتي رو encrypt كرد - رمز گذاشتن و برداشتن رو ميتوني خودت با آلگوريتم هاي ساده هم انجام بدي (XOR-SHIFT-...) و يا از winzip - pkzip در حالت commandline براي باز كردن فايلهاي رمز شده استفاده كني. البته componentهاي آماده براي VB هم وجود داره.
در VB.Net با چند خط كد خيلي راحت ميشه يك فايل (تصوير رمز شده) رو خوند و محتوياتش رو در يك MemoryStream قرار داد - هر نوع تغييراتي لازم رو روش انجام داد (برداشتن رمز) و از اون MemoryStream يك Image ساخت. اين Image ميتونه مستقيما در يك PictureBox استفاده بشه. تمام عمليات در حافظه انجام ميشه و هيچ اثري از تصوير رمزبرداري شده روي ديسك ثبت نميشه تا بعدها قابل استفاده باشه. باحتمال زياد در VB6 هم ميشه مشابه همين رو انجام داد فقط شايد مشكلتر باشه و نياز به API Call پيدا بشه.
 

mostafa_gm

Registered User
تاریخ عضویت
4 آپریل 2005
نوشته‌ها
1,863
لایک‌ها
438
محل سکونت
My House
این یکی واقعا کار میکنه.
فايل zip رو دانلود كن بعد اجراش کن, البته بعد از كامپايل چون exe نداره.

AccessPicture.zip
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
سلام.
به نقل از mostafa_gm :
این یکی واقعا کار میکنه.
ماه تر از اين نمي شد. عالي بود. دقيقا عين جواب من بود. ممنون.
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
1- فینگلیش !!! ممنوع.
2- اینو میبرم به بخش مقالات.
 

ali2244

کاربر تازه وارد
تاریخ عضویت
9 ژانویه 2012
نوشته‌ها
1
لایک‌ها
0
این یکی واقعا کار میکنه.
فايل zip رو دانلود كن بعد اجراش کن, البته بعد از كامپايل چون exe نداره.

AccessPicture.zip

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

mahdi6848

کاربر تازه وارد
تاریخ عضویت
10 سپتامبر 2012
نوشته‌ها
1
لایک‌ها
0
هااااااااااااااااااااااااااااااای!!!!!!!!!!!!!
جمیعا!
ظاهرا دیر رسیدم و احتمالا جوابتونو گرفتین ولی اگر هنوز دنبال جوابین، یه نمونه برنامه عالی واسه این کار دارم. کدشو هم برای تصویر و هم برای هر فایل دیگه ای می تونید تغییر بدید.
برنامه رو خیلی جالب نوشتم فقط توضیحش مفصله اگر کسی لازم داشت خبرم کنه براش توضیح بدم.
فقط خواهشا در صورت نیاز بهم میل مزنید
اینم میلم:
[email protected]
 
بالا