Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вставить Picture 
V
    Опции темы
Flenger
  Дата 16.1.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.6.2006

Репутация: нет
Всего: нет



Доброе время суток!!!!!

Как в базу данных Paradox вставлять графические файлы *BMP? 
Там для поля(Field) нада выбрать тип(Type)  Graphic(G), но как вставить туда изображение…? 



PM MAIL   Вверх
Anikmar
Дата 16.1.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 59



Удобнее всего пожалуй через TMemoryStream.

Для варианта ADO + SQL я делаю так:
Код

//---------------------------------------------------------------------------
// SetGraphicField
// Помогает сохранить в BLOB поле картинку
// pQ - Запрос
// pPic - Картинка
// pFieldName - Имя поля
// Поле IsPicturePresent должно быть правильно установлено
bool TMAN_ADOVrec::SetGraphicField(
    TADOQuery * pQ,
    Jpeg::TJPEGImage * pPic,
    AnsiString pFieldName)
{
    bool Ret = true;
    TBlobField *pBf = NULL;
    TMemoryStream *pMS = NULL;

    pBf = (TBlobField*)pQ->FieldByName(pFieldName);

    if (!IsPicturePresent)
    {
        pBf->Clear();
        goto ExitProc;
    }

    try
    {

        pMS = new TMemoryStream;
        pPic->SaveToStream(pMS);
        pMS->Position = 0;
        pBf->LoadFromStream(pMS);
    }
    catch(...)
    {
        Ret = false;
    }

ExitProc:

    if (pMS != NULL) delete pMS;

    return Ret;
}



Это кусок моего класса, там используются служебные поля, но общая логика вполне ясна
PM MAIL ICQ   Вверх
Flenger
Дата 16.1.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.6.2006

Репутация: нет
Всего: нет



Anikmar Cенкс!!!!
PM MAIL   Вверх
Flenger
Дата 17.1.2007, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.6.2006

Репутация: нет
Всего: нет



Ну я вот делаю таки макаром:

Код


void __fastcall TForm1::DBGrid1EditButtonClick(TObject *Sender)
{
Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
if(DBGrid1->SelectedField == Table1Foto)

OpenDialog1->Execute();

Bitmap->LoadFromFile(OpenDialog1->FileName);
Table1->Edit();
TBlobStream *BS = new TBlobStream(((TBlobField*)(Table1->FieldByName("Foto"))),bmRead);
Bitmap->SaveToStream(BS);
Table1->Post();
Bitmap->Free();


}



Компилируется всё нормально а вот при загрузке файла выдаёт
BLOB not opened

Что я нетак зделал
PM MAIL   Вверх
Anikmar
Дата 17.1.2007, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 59



Мне кажется, что ошибка в режиме открытия потока. Чтобы быть уверенным - поставь режим открытия ReadWrite.
PM MAIL ICQ   Вверх
Flenger
Дата 18.1.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.6.2006

Репутация: нет
Всего: нет



Просто надо было изменить bmRead на bmWrite...

Огромное спасибо Anikmar!!!!!

PM MAIL   Вверх
Anikmar
Дата 18.1.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 59



Да не вопрос  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.