jon |
Отправлено: 11.04.2005, 09:56 |
|
Не зарегистрирован
|
Не могу понять как вставлять картинки в базу данных (IB) при помощи такой записи:
Table1->FieldValues["BMP"]=.....
Возможно ли это? |
|
AVC |
Отправлено: 11.04.2005, 10:12 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Картинка это не более чем "двоичные данные".
Обычно соответствующими методами оснащены Memo (Blob) поля.
Отредактировано AVC — 11/04/2005, 09:42 |
|
jon |
Отправлено: 11.04.2005, 10:26 |
|
Не зарегистрирован
|
Так при помощи данной записи я не смогу записать?
Нужно идти другим путем? |
|
AVC |
Отправлено: 11.04.2005, 10:42 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Может и сможете. А если поробовать?
|
|
jon |
Отправлено: 11.04.2005, 10:45 |
|
Не зарегистрирован
|
Я бы попробовал но не знаю как?
Как будет выглядеть в коде листинга? |
|
avc* |
Отправлено: 11.04.2005, 10:58 |
|
Не зарегистрирован
|
Сейчас прикину. А вам действительно нужно только так, через FieldValues или можно иначе?
|
|
jon |
Отправлено: 11.04.2005, 11:26 |
|
Не зарегистрирован
|
Если возможно иначе можно тогда иначе.
Мне хоть как-нибудь мучаюсь который день никак не могу.
У меня билдер 5 версия. |
|
AVC |
Отправлено: 11.04.2005, 11:53 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Каким компонентом работаете?
Вот рабочий код для Access — Ado поле Memo
CODE |
TDataSet *ds = ADOTable2;
if (!ds || !ds->Active || ds->IsEmpty()) return;
TBlobField *bfld = dynamic_cast<TBlobField*>(ds->FindField("FPict"));
if (!bfld) return;
bool needPost = false;
if (!(ds->State == dsEdit || ds->State == dsInsert))
{ ds->Edit();
needPost = true;
}
bfld->LoadFromFile("GStone.bmp");
if (needPost) ds->Post();
|
Этот код для FireBird поле типа Blob в строке Post вываливает ошибку. Пока не разобрался из за чего, но, все равно, сам код останется прежним. |
|
jon |
Отправлено: 11.04.2005, 12:00 |
|
Не зарегистрирован
|
Я пользуюсь компонентами InterBase. |
|
AVC |
Отправлено: 11.04.2005, 12:42 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Настроил связь и заменил в первой строке
CODE |
TDataSet *ds = IBTable1; // IB — Ok
//TDataSet *ds = Table1; // BDE — Ok
//TDataSet *ds = ADOTable2; // ADO — ошибки
|
Все работает
|
|
jon |
Отправлено: 11.04.2005, 14:11 |
|
Не зарегистрирован
|
Спасибо! Все работает.
Как масштабировать любую загружаемую картинку автоматом под фиксированный размер в BDImage? |
|
AVC |
Отправлено: 11.04.2005, 14:19 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
Determines whether bitmaps and metafiles assume the size and shape of the database image.
__property bool Stretch = {read=FStretch, write=SetStretch, default
=0};
Description
Set Stretch to true to cause the picture to assume the size and shape of the image control. When the image control resizes, the picture resizes also. Stretch resizes the height and width of the image independently. Thus, unlike a simple change in magnification, stretch can distort the image if the image control is not the same shape as the image.
| |
|
olegenty |
Отправлено: 11.04.2005, 15:50 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
поздно пришёл
одно НО!
получается, ты работаешь с набором данных, куда докачиваешь картинки, как поле. это не есть хорошо. для точности — это плохо. прикинь размер приложения в оперативке, при загруженной тысяче записей с картинками размером 1024х762 даже в формате JPG. грустно, да?
картинки надо докачивать отдельно, AfterScroll, да ещё с завязкой на таймер. чтобы, когда пользователь быстро скроллируется, не портить ему этот кайф...
|
|
AVC |
Отправлено: 11.04.2005, 16:58 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
А началть нужно переходом с Table на Query |
|