ورود

View Full Version : حرفه ای: ذخیره عکس در اکسس با ADODC به صورت حرفه ای



AbbasVB
یک شنبه 12 خرداد 1392, 14:28 عصر
سلام دوستان
حرف جستجو رو نزنید که دیروز سایت رو زیر و رو کردم چیز به درد بخوری پیدا نکردم

می خوام تعدادی عکس رو داخل دیتابیس اکسس با ADODC ذخیره کنم خود عکس نه آدرس!
چندتا راه رو امتحان کردم به نتیجه مطلوب نرسیدم
یا ذخیره درست کار نمی کنه یا باز خوانی!!!!
با DATA نمی خوام کار کنم
فعلا ذخیره می شه باAppendChunk. ولی بس از بازخوانی با GetChunk چند بایت به اول فایل اضافه می کنه
که باعث می شه فایل خراب بشه
دوستان اگه می تونند کمک کنند فوری
خیلی گیرم

ho3ein.3ven
یک شنبه 12 خرداد 1392, 15:18 عصر
سلام . یه کامپوننت هست به نام dbimage.ocx اونو پیدا کن . با اون می تونی تو دیتابیس عکس ذخیره کنی . البته حجم دیتابیس رو خیلی خیلی میبره بالا.

AbbasVB
یک شنبه 12 خرداد 1392, 15:21 عصر
سلام . یه کامپوننت هست به نام dbimage.ocx اونو پیدا کن . با اون می تونی تو دیتابیس عکس ذخیره کنی . البته حجم دیتابیس رو خیلی خیلی میبره بالا.
ممنون
اونم دارم ازش خوشم نیومد
می خوام با کد نویسی انجام بدم نا با ابزار دیگه ای

محسن واژدی
یک شنبه 12 خرداد 1392, 16:19 عصر
سلام علیکم
میتوانید فایل تصویر را در آرایه بایتی ریخته سپس آرایه را در بانک ذخیره کنید

موفق باشید

AbbasVB
یک شنبه 12 خرداد 1392, 16:29 عصر
سلام علیکم
میتوانید فایل تصویر را در آرایه بایتی ریخته سپس آرایه را در بانک ذخیره کنید

موفق باشید
سلام
همین کار رو می کنم

ولی مشکل اینه که چند چند بایت به اول فایل اضافه می کنه وفایل رو خراب می کنه
الآن جند تا نمونه از سایت های خارجی گرفتم دارم روش کار می کنم مثل این که داره به نتیجه می رسه
فعلا خدا حافظ

siyn71
یک شنبه 12 خرداد 1392, 16:58 عصر
اگه به نتیجه رسیدی نمونه سورس رو به ما هم بده . ممنون

محسن واژدی
یک شنبه 12 خرداد 1392, 17:39 عصر
سلام
همین کار رو می کنم

ولی مشکل اینه که چند چند بایت به اول فایل اضافه می کنه وفایل رو خراب می کنه
الآن جند تا نمونه از سایت های خارجی گرفتم دارم روش کار می کنم مثل این که داره به نتیجه می رسه
فعلا خدا حافظ

سلام علیکم
تابع زیر را در ماژول کد قرار بدین:
Public Function GetPictureBinaryDatas(pPicture As Picture) As Byte()
On Error Resume Next
Dim iFrFile%
Dim arr() As Byte
Dim sTmpFile$
iFrFile% = FreeFile

sTmpFile$ = App.Path & "\tmp.xxx"

SavePicture pPicture, sTmpFile$

Open sTmpFile$ For Binary As iFrFile%
ReDim arr(LOF(iFrFile%))

Do While Not EOF(iFrFile%)
Get iFrFile%, , arr
If Err.Number <> 0 Then Exit Do
Loop

Close iFrFile%

Kill sTmpFile$

GetPictureBinaryDatas = arr
End Function

برای مثال:
Private Sub Command1_Click()
Adodc1.Recordset.Fields("fldPicture").Value = GetPictureBinaryDatas(Picture1.Picture)
End Sub

فیلد fldPicture از نوع OLE-Object است
موفق باشید

program2vb
یک شنبه 12 خرداد 1392, 18:26 عصر
سلام
همین کار رو می کنم

ولی مشکل اینه که چند چند بایت به اول فایل اضافه می کنه وفایل رو خراب می کنه
الآن جند تا نمونه از سایت های خارجی گرفتم دارم روش کار می کنم مثل این که داره به نتیجه می رسه
فعلا خدا حافظ

سلام بفرما اینو امتحان کن .... البته این فقط برای عکس نیس هر فایلی رو که خواستین میتونین داخلش ذخیره کنین ........


موفق و پیروز باشید در پناه خدا .... یاعلی

AbbasVB
یک شنبه 12 خرداد 1392, 20:28 عصر
سلام دوستان
ممنون از همه ی دوستان
بالاخره یکی از تاپیک های که ایجاد کردم جواب داده شد!!
یه نمونه خوب از اینترنت گیر آوردم کمک کرد


من از کد های زیر استفاده می کنم به خوبی جواب می دهد
Public Function DBAddNewData(strPicAddress As String, _
strTable As String, _
strDatabaseAddress As String)
On Error Resume Next
Dim nPos As Long
Dim AdodcRecordset As New ADODB.Recordset
Set AdodcRecordset = frmAddNew.AdoAddNew.Recordset

If (Dir(strPicAddress) <> "") Then

Open strPicAddress For Binary Access Read As #1
ReDim PictureData(LOF(1))
While (Not EOF(1))
Get #1, (nPos + 1), PictureData(nPos)
nPos = nPos + 1
Wend

Close #1

With AdodcRecordset

.AddNew

.Fields("Picture").Value = PictureData
.Update

AdoAddNew.Recordset.Requery
Set AdodcRecordset = Nothing
End With
End If
End Function

Public Sub DBDataReder(ByVal strThemName As String)
On Error Resume Next

Dim AdodcRecordset As ADODB.Recordset
Set AdodcRecordset = AdoGetData.Recordset
AdodcRecordset.MoveFirst
AdodcRecordset.Find "Name='" & strThemName & "'"
strName = AdodcRecordset.Fields("Name").Value

Dim bytData() As Byte
ReDim bytData(AdodcRecordset.Fields("Picture").ActualSize)
bytData = AdodcRecordset.Fields("Picture").Value

Open App.Path & "\Temp.jpg" For Binary Access Write As #1
Put #1, , bytData
Close #1

Set AdodcRecordset = Nothing
Image1.Picture = LoadPicture(App.Path & "\Temp.jpg")
End Sub


دوتا ADODC می خواد یا شی هم می شه AdoAddNew و AdoGetData


سلام بفرما اینو امتحان کن .... البته این فقط برای عکس نیست، هر فایلی رو که خواستین میتونین داخلش ذخیره کنین ........


موفق و پیروز باشید در پناه خدا .... یاعلی ممنون این رو قبلا داشتم، با DATA کار می کنه که من گفتم نمی‌خوام
همین پروژه رو که 45 مگ بود مجبور شده از اینترنت بگیرم و به دردم هم نخورد نمی‌دونم اون نفر قبلی با دیتابیسش چکار کرده بود که 70 مگ شده بود و هیچی توش نبود
بگذریم
کارم راه افتاد.
فقط یک مسئله
بعدا پروژه اش رو می گذارم

نمیشه عکس رو بدون این که توی یک فایل ذخیره کنیم نمایش بدیم؟

محسن واژدی
یک شنبه 12 خرداد 1392, 20:54 عصر
.
.
.
نمیشه عکس رو بدون این که توی یک فایل ذخیره کنیم نمایش بدیم؟
سلام علیکم
چرا، اگه شی PictureBox یا Image را به دیتابیس متصل کنید تصویر موجود در فیلد بانک را بدون نیاز به استخراج در فایل خارجی نمایش میدهد (مثل فیلدهای نوع رشته ای و ...)

موفق باشید

alipoor2009
دوشنبه 13 خرداد 1392, 02:10 صبح
دوستان تو این حالت جدید اندازه دیتابیس افزایش زیادی داره؟ - من قبلا با DBimage این کار را انجام می دادم و حتی عکس رو هم پاک می کردم باز سایز دیتابیس تغییری نمی کرد - دیدم اندازه دیتابیس زیاد می شه فقط آدرس فایل رو ذخیره می کنم - تو این حالت هم این گونه است؟

محسن واژدی
دوشنبه 13 خرداد 1392, 04:32 صبح
دوستان تو این حالت جدید اندازه دیتابیس افزایش زیادی داره؟ - من قبلا با DBimage این کار را انجام می دادم و حتی عکس رو هم پاک می کردم باز سایز دیتابیس تغییری نمی کرد - دیدم اندازه دیتابیس زیاد می شه فقط آدرس فایل رو ذخیره می کنم - تو این حالت هم این گونه است؟
بانک به اندازه فضای تصویر افزایش حجم داره، که البته بانک بعد از حذف تصویر تا زمانی که فشرده نشده به همان اندازه باقی میمونه

موفق باشید

mganbari1354
پنج شنبه 16 دی 1395, 22:41 عصر
باسلام چگونه می توانم عکس ذخیره شده دربانک اکسس را با دیتا گرید فراخوانی کنم به طوری که در imageنمایش داده شود باتشکر

isaac23
شنبه 18 دی 1395, 08:13 صبح
کاش یه نفر نخوه ذخیره سازی و بازیابی عکس ار دیتا بیس رو سورسش رو کامل قرار می داد . بقران ما هم خسته شدیم از بس دنبالش گشتیم.

ممنونم میشم یه نفر سورس کاملش قرار بده .

از دوست خوبمون آقا واژدی ممنونم میشم این کار. بکنه