نمایش نتایج 1 تا 12 از 12

نام تاپیک: مشکل در ذخیره كردن عکس در ديتابيس

  1. #1
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801

    مشکل در ذخیره كردن عکس در ديتابيس

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

    جدول اکسس و فیلد OLE است مثلا بنام pic .

    <span dir=ltr>
     
    if &#40;OpenDialog.Execute&#41; then begin
    DBImage1.LoadFromFile&#40;OpenDialog.FileName&#41; ;
    Table.Post;
    end;
    </span>

    که دراینجا DBImage‌هم به فیلد عکس بایند شده است.

  2. #2
    کاربر تازه وارد آواتار samandari
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    ایران
    پست
    65
    با سلام
    من قبلا این مشکل رو داشتم ولی مشکل رو به شکل زیر حل کردم
    شما میتوانید با استفاده از یک Image و متد Loadfromfile تصویر مورد نظرتان را در آن نمایش دهید سپس تصویر موجود در داخل این Image را به Clipboard منتقل کنید و سپس اطلاعات موجود در Clipboard رو به DbImage منتقل کنید

  3. #3
    مهمان
    قبل از دادن مقادیر آیا insert یا Append یا edit کردین (گفتم شاید چون تو کدتون نیست احتمالا مشکل همین جا باشه ).

    ولی ای کاش متن error ها رو بنویسین .
    تا ببینیم چی مشکلی داره ولی الان n تا مشکل به ذهنم میرسه که هر کدومش ممکنه همون باشه .
    شاید احتمالا داری عکس از نوع غیر از bitmap میدی اگه این کارو میکنی مشکل همین جاست چون dbimage فقط نوع bitmap رو قادر به نمایش هست برا حل این مشکل یک سرچی تو سایت بزن کامپوننتش رو گذاشتم اون فقط نوع jpeg , jpg رو میگیره .



    :موفق:

  4. #4
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801
    به روش آقای سمندری :

    اینجوری میگین دیگه ؟ اول :‌
    <span dir=ltr>
     
    if&#40;OpenDialog1.Execute&#41; then
    begin
    Image1.Picture.LoadFromFile&#40;OpenDialog1.FileNa me&#41;;
    Clipboard.Assign&#40;Image1.Picture&#41;;
    DBImage1.PasteFromClipboard;
    end;

    </span>
    و بعدش هم که Table1.Post


    خب این خطا را میگیره :

    Non BLOB Column in Table Required to Perform Operation
    :mad:

    به روش آقا دادوند :
    رییس ! از اینهایی که میگی نیست ! فکری دگر کن :oops:

    اون کامپوننته را هم من که ندیدم ... اگه خودت ... دستت درست

  5. #5
    VIP آواتار hr110
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    ایران - تهران
    پست
    1,460
    یک راه سریع هم میتونه این باشه:

    لود کردن فایل:
      TBlobField&#40;ADOTable1.FieldByName&#40;'Pic'&#41  ;&#41;.SaveToFile&#40;'1.bmp'&#41;;
    Image1.Picture.LoadFromFile&#40;'1.bmp'&#41;;


    ذخیره فایل :
      TBlobField&#40;ADOTable1.FieldByName&#40;'Pic'&#41  ;&#41;.LoadFromFile&#40;'1.bmp'&#41;;
    ... چه بگویم که غم از دل برود چون تو بیایی

  6. #6
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801
    ممنون آقای ربیعی . روش شما را هم چک میکنم . ولی ای کاش یک نفر مشکل روش قبلی را هم بررسی میکرد.

    :flower:

  7. #7
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801
    ببخشید .... روش شما عکس را در فایل ذخیره کرده ؟

    یعنی از روی هارد میتوان به آن دسترسی داشت ؟

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

  8. #8
    VIP آواتار hr110
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    ایران - تهران
    پست
    1,460
    اره عزیز ، همینطوره :)

    ولی به این دو مثال هم که با استریم نوشته شده توجه کن، ضمناً برای فایلهای jpeg میباشد:

      uses jpeg;

    procedure TForm1.Button1Click&#40;Sender&#58; TObject&#41;;
    var
    Jpg&#58; TJpegImage;
    Stream&#58; TMemoryStream;
    begin
    Jpg &#58;= nil;
    Stream &#58;= nil;
    try

    // Create a JPEG image and load it from a file

    Jpg &#58;= TJpegImage.Create;
    Jpg.LoadFromFile&#40;'test.jpg'&#41;;

    // Create a stream and save the image to the stream

    Stream &#58;= TMemoryStream.Create;
    Jpg.SaveToStream&#40;Stream&#41;;
    Stream.Position &#58;= 0;
    Table1.Append;

    // Load the Blob field from the stream

    TBlobField&#40;Table1.FieldByName&#40;'Graph'&#41; &#41;.LoadFromStream&#40;Stream&#41;;

    Table1.Post;
    except
    jpg.Free;
    Stream.Free;
    raise;
    end;
    jpg.Free;
    Stream.Free;
    end;


    procedure TForm1.Table1AfterScroll&#40;DataSet&#58; TDataSet&#41;;
    var
    Stream&#58; TMemoryStream;
    Jpg&#58; TJpegImage;
    begin
    Jpg &#58;= nil;
    Stream &#58;= nil;
    try

    // Create a stream and load the contents of the Blob field

    Stream &#58;= TMemoryStream.Create;
    TBlobField&#40;Table1.FieldByName&#40;'Graph'&#41; &#41;.SaveToStream&#40;Stream&#41;;
    if Stream.Size > 0 then begin

    // Create a JPEG image and load it from the stream

    Jpg &#58;= TJpegImage.Create;
    Stream.Position &#58;= 0;
    Jpg.LoadFromStream&#40;Stream&#41;;

    // Assign the JEPG image to the Picture property of an Image

    Image1.Picture.Assign&#40;Jpg&#41;;

    end else
    Image1.Picture.Assign&#40;nil&#41;;
    except
    Image1.Picture.Assign&#40;nil&#41;;
    end;
    jpg.Free;
    Stream.Free;
    end;
    ... چه بگویم که غم از دل برود چون تو بیایی

  9. #9
    دوست عزیز سلام
    ضمن احترام به نظر همه دوستان
    حتما تو جدولتون یه فیلد برا عکس دارین مثلا اسمش هست image
    یه dbgrid بذارین و به table مرتبط کنین.data field رو image انتخاب کنین .با load کردن عکس تو dbimage عکستون تو پایگاه ذخیره میشه.من این کارو کردم اگه می خواین بگین برنامرو براتون بفرستم.

  10. #10
    شما میتوانید از image و loadfromfile استفاده کنید و سپس با دستور assign در فیلد مورد نظر درج نماپید .

    موفق باشید .

  11. #11
    من به یه روش کاملا متفاوت عکس رو توی بانک ذخیره می کنم بدین صورت که
    1- اول عکس مورد نظر رو با یه اوپن دیالوگ بازمی کنم .
    2- اون رو توی یه image نشون میدهم
    3- اگه کاربر خواست اون رو ذخیره کنه ابتدا اون رو با SavetoFile توی هارد ذخیره میکنم
    4- سپس اون رو توی یه Dbimage با loadfrimfile ذخیره می کنم

  12. #12
    محروم شده آواتار Babak-Aghili
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    در خاطرات شما
    پست
    801
    :D

    کل ماجرا این بود که ما نمیخواستیم عکس مستقیما در هارد باشد ... میخواستیم در دیتا بیس باشد ...

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •