ورود

View Full Version : ذخيره عكس در اكسس



فردان فردان
دوشنبه 15 فروردین 1390, 07:50 صبح
چطور می تونیم یه عکس را در اکسس ذخیره کنیم
یعنی داخل فایل mdb قرار بگیرد
تا بتوانم از آن در فرمها و گزارشها بتوانیم مکررا استفاده کنیم؟
با تشكر فراوان

bita_ziba77
دوشنبه 15 فروردین 1390, 10:50 صبح
با سلام
در اين مورد بارها بحث شده است علي ايحال شما در اكسس 2007 يا 2010 يك جدول ساخته و يك فيلد با فرمت Attachment به آن اضافه نماييد.
در نهايت با افزودن فيلدي از جدول خود به فرم يا گزارشات به ان عكس دسترسي خواهيد داشت.

با تشكر

hf.farhadi
دوشنبه 15 فروردین 1390, 12:58 عصر
با سلام
توی 2003 امکانش وجود ندارد ؟

stabesh
دوشنبه 15 فروردین 1390, 22:12 عصر
با سلام
توی 2003 امکانش وجود ندارد ؟
باید نوع داده OLE باشه

فردان فردان
پنج شنبه 18 فروردین 1390, 07:24 صبح
باید نوع داده OLE باشه

توضيحات كاملتري نياز دارم؟ اگه امكان داره!
با تشكر فراوان

bhasoft
شنبه 20 فروردین 1390, 16:34 عصر
با سلام خدمت دوستان عزيزم.دوستان خوبم من اين كدهارو براي ذخيره و بازيابي عكس توي پايگاه داده اكسس با وي بي دات نت نوشتم.البته با كمك دوست بسيار خوبم مبتكر كد عزيز.واقعا خيلي به دادم رسيد و ازش خيلي ممنونم.
خلاصه خدمتتون عرض كنم من اين كدهارو با مصيبت پيدا كردم و تبديلشون كردم.اميدوارم به دردتون بخوره.تست هم شده و كاملا دقيق كار ميكنه.اگه مورد پسند بود 2تا صلوات بفرستين.مرسي


در ابتدا مفروضات مسئله :
فرض می کنم در پایگاه داده اكسس دیتابیسی با نام School و جدولی به نام Student دارم که فیلد primary key این جدول با نام stcode و فیلدی که تصویر دانش اموز را نگه داری می کند از نوع image و با نام stimage
است و در این جدول دانش آموزی با کد 1 اطلاعات آن وارد شده است.

در ابتدا تابعی به صورت زیر تعریف می کنم :

اين تابع عكس گرفته شده توسط openfilefolder را به كد باينري تبديل ميكنه:

PrivateFunction ConvertImageToByte(ByVal ImageLocation AsString) AsByte()
Dim fs AsNew FileStream(ImageLocation, FileMode.Open, FileAccess.Read)
Dim br AsNew BinaryReader(fs)
Dim picture AsByte()
Dim fInfo AsNew FileInfo(ImageLocation)
Dim numBytes AsLong = fInfo.Length
picture = br.ReadBytes(CInt(numBytes))
Return picture
EndFunction

با كد هاي زير عكس گرفته شده توي پايگاه داده اكسس ذخيره ميشه.

Dim comsave AsNew OleDbCommand()
comsave.Connection = myconnection
comsave.CommandText = "Insert Into student Values (@stcode,@stname,@stimage)";
comsave.Parameters.AddWithValue("@stcode", int.Parse(txtstcode.Text));
comsave.Parameters.AddWithValue("@stname", txtstname.Text);
comsave.Parameters.AddWithValue("@stimage", ConvertImageToByte(openImage.FileName));
comsave.ExecuteNonQuery()

تابع تبديل كد به عدد:

Private Function ConvertByteToImage(ByVal ImageByte As Byte()) As Image
Dim ms As New MemoryStream(ImageByte)
Dim img As Image
img = Image.FromStream(ms)
Return img
End Function



این تابع کدهای باینری مربوط به عکس ذخیره شده را گرفته و با استفاده از کلاس MemoryStream آنرا به صورت بافر در می آورد و با استفاده از متد FromStream از کلاس Image بافر را به تصویر تبدیل می کنیم.


و حالا خواندن عکس از دیتابیس :

Dim ConnectionString AsString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath & "\image.mdb"
Dim myconnect AsNew OleDb.OleDbConnection(ConnectionString)
myconnect.Open()
Dim comsearch AsNew OleDbCommand()
comsearch.Connection = myconnect
comsearch.CommandText = "Select stname,stimage From student Where stcode=" & Integer.Parse(T1.Text)
Dim reader As OleDbDataReader = comsearch.ExecuteReader()
reader.Read()
T1.Text = reader.GetValue(0).ToString()
PBx.Image = ConvertByteToImage(DirectCast(reader.GetValue(1), Byte()))
myconnect.Close()


pic1 نام کنترل pictureBox برای نمایش تصویر است.


دستورات بالا را در رویداد کلیک یک button بنویسید.


نکته : قبل از نوشتن دستورات بالا فضای نامی System.IO ، System.Data.Sql و System.Data.SqlClient را به پروژه خود اضافه کنید.

Imports System.IO
Imports System.Globalization
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Data.OleDb

s.alipour
دوشنبه 22 فروردین 1390, 11:10 صبح
با سلام
فيلدي با فرمت Attachment جهت نگهداري تصاوير در جدول داريم. فرمي هم داريم كه در آن يك كنترل از نوع image هست كه control source اش خالي است. حال مي خواهيم توسط برنامه نويسي در زبان برنامه نويسي اكسس (نه vb6 و...) تصوير مربوط به هر ركورد را ذخيره يا نمايش دهيم.
لطفا راهنمائي ام كنيد. با تشكر

فردان فردان
چهارشنبه 24 فروردین 1390, 11:09 صبح
با سلام خدمت دوستان عزيزم.دوستان خوبم من اين كدهارو براي ذخيره و بازيابي عكس توي پايگاه داده اكسس با وي بي دات نت نوشتم.البته با كمك دوست بسيار خوبم مبتكر كد عزيز.واقعا خيلي به دادم رسيد و ازش خيلي ممنونم.
خلاصه خدمتتون عرض كنم من اين كدهارو با مصيبت پيدا كردم و تبديلشون كردم.اميدوارم به دردتون بخوره.تست هم شده و كاملا دقيق كار ميكنه.اگه مورد پسند بود 2تا صلوات بفرستين.مرسي


در ابتدا مفروضات مسئله :
فرض می کنم در پایگاه داده اكسس دیتابیسی با نام School و جدولی به نام Student دارم که فیلد primary key این جدول با نام stcode و فیلدی که تصویر دانش اموز را نگه داری می کند از نوع image و با نام stimage
است و در این جدول دانش آموزی با کد 1 اطلاعات آن وارد شده است.

در ابتدا تابعی به صورت زیر تعریف می کنم :

اين تابع عكس گرفته شده توسط openfilefolder را به كد باينري تبديل ميكنه:

PrivateFunction ConvertImageToByte(ByVal ImageLocation AsString) AsByte()
Dim fs AsNew FileStream(ImageLocation, FileMode.Open, FileAccess.Read)
Dim br AsNew BinaryReader(fs)
Dim picture AsByte()
Dim fInfo AsNew FileInfo(ImageLocation)
Dim numBytes AsLong = fInfo.Length
picture = br.ReadBytes(CInt(numBytes))
Return picture
EndFunction

با كد هاي زير عكس گرفته شده توي پايگاه داده اكسس ذخيره ميشه.

Dim comsave AsNew OleDbCommand()
comsave.Connection = myconnection
comsave.CommandText = "Insert Into student Values (@stcode,@stname,@stimage)";
comsave.Parameters.AddWithValue("@stcode", int.Parse(txtstcode.Text));
comsave.Parameters.AddWithValue("@stname", txtstname.Text);
comsave.Parameters.AddWithValue("@stimage", ConvertImageToByte(openImage.FileName));
comsave.ExecuteNonQuery()

تابع تبديل كد به عدد:

Private Function ConvertByteToImage(ByVal ImageByte As Byte()) As Image
Dim ms As New MemoryStream(ImageByte)
Dim img As Image
img = Image.FromStream(ms)
Return img
End Function



این تابع کدهای باینری مربوط به عکس ذخیره شده را گرفته و با استفاده از کلاس MemoryStream آنرا به صورت بافر در می آورد و با استفاده از متد FromStream از کلاس Image بافر را به تصویر تبدیل می کنیم.

و حالا خواندن عکس از دیتابیس :

Dim ConnectionString AsString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath & "\image.mdb"
Dim myconnect AsNew OleDb.OleDbConnection(ConnectionString)
myconnect.Open()
Dim comsearch AsNew OleDbCommand()
comsearch.Connection = myconnect
comsearch.CommandText = "Select stname,stimage From student Where stcode=" & Integer.Parse(T1.Text)
Dim reader As OleDbDataReader = comsearch.ExecuteReader()
reader.Read()
T1.Text = reader.GetValue(0).ToString()
PBx.Image = ConvertByteToImage(DirectCast(reader.GetValue(1), Byte()))
myconnect.Close()


pic1 نام کنترل pictureBox برای نمایش تصویر است.

دستورات بالا را در رویداد کلیک یک button بنویسید.

نکته : قبل از نوشتن دستورات بالا فضای نامی System.IO ، System.Data.Sql و System.Data.SqlClient را به پروژه خود اضافه کنید.

Imports System.IO
Imports System.Globalization
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Data.OleDb

ضمن تشكر لطفا يك فايل نمونه را پيوست فرماييد.
با تشكر فراوان

mmakbarimm
دوشنبه 07 اسفند 1391, 07:52 صبح
با سلام
فيلدي با فرمت Attachment جهت نگهداري تصاوير در جدول داريم. فرمي هم داريم كه در آن يك كنترل از نوع image هست كه control source اش خالي است. حال مي خواهيم توسط برنامه نويسي در زبان برنامه نويسي اكسس (نه vb6 و...) تصوير مربوط به هر ركورد را ذخيره يا نمايش دهيم.
لطفا راهنمائي ام كنيد. با تشكر
با سلام
اگر فیلد شما فرمت Attachment دارد پس اکسس 2007 کار میکنید که برای ذخیره عکس کافیست در فرم خود از طریق تولبار ایکون Attachment را در داخل فرم خود قرار دهید و ان را به فیلد مربوطه در table خود ارتباط دهید
برنامه را اجرا کنید

korosh00
پنج شنبه 08 فروردین 1392, 18:03 عصر
بله با Attachment خیلی راحت تر است .
من از شما بابت این توضیحات تشکر دارم

naderbahri
جمعه 02 تیر 1396, 21:13 عصر
توی لینک زیر اموزش کاملی در مورد نحوه ذخیره تصاویر داده شده

http://officebaz.ir/course/%d8%b1%d9%88%d8%b4%d9%87%d8%a7%db%8c-%d9%85%d8%ae%d8%aa%d9%84%d9%81-%d9%86%da%af%d9%87%d8%af%d8%a7%d8%b1%db%8c-%d9%88-%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d8%aa%d8%b5%d8%a7%d9%88%db%8c%d8%b1-%d8%af%d8%b1/