Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > как работать с картинками в базе ACCESS


Автор: freek 20.7.2005, 18:49
Вопорос в следующем в Access'ой базе нужно хранить фотографии и
выводить в окне на форме.. Как это осуществить???
ПРОбовал ставить на форму DBimage и связать с полем в базе, но он ругается
"bitmap image is not valid" и ничего не выводит smile

Автор: ТоляМБА 21.7.2005, 06:24
Если никто не поможет - воспользуйся советом Akin'ы от сюда
http://forum.vingrad.ru/index.php?showtopic=30093&hl=blob

Автор: chaos 21.7.2005, 06:55
вот код чтения иконок бд
(CBuilder)
Код

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ImageList1->Clear();
    ComboBox1->Clear();

    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Text = "SELECT Name, Obj FROM Icons";

    __try
    {
        TIcon *icon = new TIcon;

        try
        {
            ADOQuery1->Open();
            ADOQuery1->First();


            while(!ADOQuery1->Eof)
            {

                ComboBox1->Items->Add(ADOQuery1->FieldByName("Name")->AsString);

                icon->LoadFromStream(ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("Obj"), bmRead));
                ImageList1->AddIcon(icon);

                ADOQuery1->Next();
            }

        }
        catch(Eception &E)
        {
            ShowMessage(E.Message);
        }
    }
    __finally
    {
        ADOQuery1->Close();
        delete icon;
    }
}


а вот блин как записать непомню(тк нету на работе ни хелпа борландового)
помню что использовал TADOCommand
чето примерно так
Код

ADOCmd->CommandText = L"INSERT INTO table (name, img) VALUES(:nme, :img) ";
ADOCmd->Parameters->ParamByName(L"nme")->Value = "name";
ADOCmd->Parameters->ParamByName(L"img")->LoadFromStreаm....
ADOCmd->Excecute();



мой тебе совет: смотри методы SaveToStream у компонентов TImage... если картинка у тя на форме, и TParameter.LoadFromStream
можно сразу загружать из файла TParameter.LoadFromFile


Если где чето не так поправте

Автор: offline 21.7.2005, 12:36
http://forum.vingrad.ru/index.php?showtopic=47118&st=0&#entry369819

Автор: freek 21.7.2005, 19:20
мене нужно это в Delphi делать а не в С

Автор: chaos 21.7.2005, 20:54
вот приер добавления иконки
Код

                TMemoryStream *IcoStream;

                __try
                {
                    IcoStream = new(TMemoryStream);
                    IcoStream->Clear();

                    try
                    {
                        Image1->Picture->Icon->SaveToStream(IcoStream);

                        Form1->ADOCmd->CommandText = "INSERT INTO icons (Name, Obj) VALUES(:nme, :ico)";

                        Form1->ADOCmd->Parameters->ParamByName(L"nme")->Value = sNameIcon.c_str();
                        Form1->ADOCmd->Parameters->ParamByName(L"ico")->LoadFromStream(IcoStream, ftGraphic);

                        Form1->ADOCmd->Execute();

                        Form1->LoadIconInCB();
                    }
                    catch (Exception &E)
                    {
                        MessageDlg(E.Message, mtError, TMsgDlgButtons() << mbOK, 0);
                    }
                }
                __finally
                {
                    delete IcoStream;
                }
            }


Автор: chaos 22.7.2005, 06:40
Цитата(freek @ 21.7.2005, 19:20)
мене нужно это в Delphi делать а не в С

замент -> на . и будет тебе на делфи, в чем проблема то?

Автор: freek 22.7.2005, 21:06
А есть у когонить пример рабочей программы.. с аксессовской базой (по теме) и исходник к ней .. буду очень презнателен.... smile

З.Ы. НАдо позарез, а руки видать кривые smile

Автор: offline 23.7.2005, 13:43
Я же дал ссылку http://forum.vingrad.ru/index.php?showtopi...=0&#entry369819 тут все работает только замени ImgBMP : TBitmap; на ImgBMP : TJPEGImage;
Если не разберешься и очень уж сильно надо, то пиши на e-mail он в нике

Автор: freek 25.7.2005, 09:45
kirilllius спасибки за пример....
Вопрос еще вот в чем.. работа идет через поток, можно обойтись как-нибудь без него??? если нет то где можно почитать про потоки(знаний тоже 0) ???

Автор: offline 25.7.2005, 17:54
Delphi help или поисковик в интернете

Автор: КУБ 30.9.2006, 23:48
Всё это хорошо . Примеры и т.д. и т.п. 

Кто нибудь может вобще объяснить причину почему выдаётся сообщение "bitmap image is not valid" ????

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)