PDA

View Full Version : ذخیره عکس در بانک از طریق دلفی



مسعود220
شنبه 24 مرداد 1383, 14:48 عصر
سلام به دوستان گرامی
یک مشکل دارم و آنهم این است که یک بانک در SQL ایجاد کرده ام که در یکی از جدول‌های آن فیلدی وجود دارد به نام Image که این جدول به فرمی که در دلفی ایجاد نموده‌ام متصل است (توسط Adodataset) و بر روی فرم دلفی نیز یک dbimage گذاشته ام و نمی دانم که چظور می توان با insert کردن یک عکس در این dbimage برای هر فرد در بانک عکسش را داشته باشم که در بانک ذخیره شود. :?:

v_shalchian
شنبه 24 مرداد 1383, 17:51 عصر
یکی از راهها برای اینکار این است که عکسها در جای مشخصی ذخیره شود و فقط آدرس آن عکس در داخل یکی از فیلدهای جدول نوشته شود.

سار
شنبه 24 مرداد 1383, 23:21 عصر
من هم زمانی قصد انجام چنین کار را داشتم اینجا هم مطرح کردم ولی کسی جواب نداد.
در نتیجه روش کار رو عوض کردم.

در مورد ذخیره آدرس عکس هم:
راستش این کار خیلی درست فکر نمیکنم باشه.
اگر اکهسا برای ما مهم باشه احتمالا عوض شدن جای آدرس و یا اصلا تغییر عکس هست.
این رو چکار کنیم؟

_alish_
یک شنبه 25 مرداد 1383, 09:27 صبح
آسانترین راه اینه که ابتدا از طریق AddField در FieldEditor Table or Queryفیلد تصویرت را اضافه کنی سپس با نام فیلد و LoadFromFile از یک OpenDialog آنرا خوانده و ذخیره کنی بگویم نام فیلد ترکیبی از نام تیبل یا Query بعلاوه نام فیلد در بانک می باشد .
حال سوال من از طریق ADOQuery1.FieldByName('Picture'). یا روش دیگر به چه صورت می شود این کار را کرد؟
ADOQuery1.FieldByName('Picture').Assign( چرا این کار نمی شود؟

سار
یک شنبه 25 مرداد 1383, 17:32 عصر
آسانترین راه اینه که ابتدا از طریق AddField در FieldEditor Table or Queryفیلد تصویرت را اضافه کنی سپس با نام فیلد و LoadFromFile از یک OpenDialog آنرا خوانده و ذخیره کنی بگویم نام فیلد ترکیبی از نام تیبل یا Query بعلاوه نام فیلد در بانک می باشد .
حال سوال من از طریق ADOQuery1.FieldByName('Picture'). یا روش دیگر به چه صورت می شود این کار را کرد؟
ADOQuery1.FieldByName('Picture').Assign( چرا این کار نمی شود؟آیا برای چنین Queryهایی اد فیلد فیلدی قرار میدهد؟

Insert into Person ('1021','ali','rahimi')

(امید)
یک شنبه 25 مرداد 1383, 18:01 عصر
باید از داده نوع blob استفاده کنی
توضیحات کامل : http://www.barnamenevis.org/forum/viewtopic.php?t=10669

مسعود220
دوشنبه 26 مرداد 1383, 06:59 صبح
دوستان از لطف همگی ممنونم امتحان میکنم ببینم چه می شود. :)

saeid356
جمعه 23 دی 1384, 10:32 صبح
با سلام به علاقه مندان به برنامه نویسی
من با یک روش تونستم عکس ها رو در فیلد جدولم قرار بدم بدون اینکه نیازی به استفاده از مسیر یا عکس بعد از exe شدن داشته باشم و اون اینه که :
یک db chart می سازین و عکس مورد نظر تونو از طریق دستور load from file به عنوان عکس پس زمینه db chart انتخاب می کنین.
بعد عکس db chart رو از دستور save to clip board به حافظه کپی کنید
حال می تونید روی dbimage برنامه خودتون رفته و اونو از طریق دستور load from clip board ذخیره کنین
از این روش شما دیگه نیازی به داشتن اصل فایل عکس هم پیدا نمیکنید.
اگر مشکل شما حل نشد اصل کد نویسی اونو واستون می فرستم.:چشمک: :قلب:

vcldeveloper
شنبه 24 دی 1384, 03:24 صبح
من با یک روش تونستم عکس ها رو در فیلد جدولم قرار بدم بدون اینکه نیازی به استفاده از مسیر یا عکس بعد از exe شدن داشته باشم
اگه با استفاده از امکان "جستجو پیشرفته" سایت در بخش دلفی عبارت BLOB را جستجو کنید، متوجه میشید که لازم نیست برای ذخیره عکس در بانک از روشهای عجیب و غریب استفاده کنید.

babak_delphi
یک شنبه 25 دی 1384, 01:25 صبح
من برای این کار دو راه خوب و اصولی بلدم
1 - استفاده از Blobstream و TStream و ذخیره عکس در فیلدی از نوع Blob
2 - استفاده از DBImage و وصل کردن آن به فیلد مورد نظر و انجام عمل Insert به شکل زیر :
AdoTable1.Append;
DBImage1.Picture.LoadFromFile(FILE_NAME);
{البته اگه این کار رو به شکل دیگه ای انجام میدین می تونین خط اول رو قبل از اون مثلا در OnShow فرم بنویسید}
AdoTable1.Post;

morteza saleh
یک شنبه 28 آبان 1385, 23:11 عصر
برای رفع این مشکل شما ابتدا باید یک Query که همراه با پارامتر است را بنویسید:

ADOQUERY1.SQL.TEXT:='INSERT TABLE1 (IMAGE1) VALUES (:PARAM1) ';

سپس :

.
.
VAR
BMP: TBITMAP;
BMP:=TBITMAP.CREATE(NIL);
BMP.LOADFROMFILE(PATH);
ADOQUERY1.PARAMSTR('PARAM1').ASSIGN(BMP);
ADOQUERY1.EXECSQL;