powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / IBExpress и FireBird 1.5 - отказ работать с BLOB
8 сообщений из 8, страница 1 из 1
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560453
small vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять я попал :-(
Хочу читать и писать данные (jpg) в BLOB-полях. Читать - читает, а вот писать не хочет.

ОС - Windows 2000 Pro
Сервер - FireBird 1.5.4306
Клиент - Delphi 7 (IBExpress)

При попытке записи значения в BLOB-поле (строка уже существует), неважно запросом или ХП,
пишет "Unsupported Feature".
Может кто что-нибудь подскажет. Или посоветуйте, чем еще можно эту фигню записать...
...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560543
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветую конкретно задавать вопрос с конкретным кодом записи значения в поле...
А в данной постановке ответ один - у тебя ошибка в программе...

...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560686
small vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ээ,
есть таблица:
CREATE TABLE NTOVAR (
NTNUMBER BIGINT NOT NULL,
NTNAME VARCHAR(100) NOT NULL,
NTTYPE VARCHAR(50) NOT NULL,
NTIMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 8192
);
есть IBDatabase, IBTransaction (2шт.) и IBQuery.
В IBQuery.SQL такой текст:
INSERT INTO NTOVAR (
NTNAME,
NTTYPE)
VALUES (
:NTNAME,
:NTTYPE)
Выполняю так:
TransactEdit.StartTransaction;
IBInsTQuery.ParamByName('NTNAME').Value:= Trim(LabeledEdit1.Text);
IBInsTQuery.ParamByName('NTTYPE').Value:= Trim(LabeledEdit2.Text);
IBInsTQuery.ExecSQL;
TransactEdit.Commit;
Вставка записи происходит и видна читающим запросом (в другой транзакции).
Далее есть такая ХП:
CREATE PROCEDURE NTOVAR_U_IMAGE (
NTNUMBER BIGINT,
NTIMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 80)
AS
BEGIN
UPDATE NTOVAR
SET NTIMAGE = :NTIMAGE
WHERE (NTNUMBER = :NTNUMBER);
END
Выполняю ее так:
TransactEdit.StartTransaction;
ProcUpdPicT.ParamByName('NTNUMBER').Value:= IBTovarQueryNTNUMBER.Value;
ProcUpdPicT.ParamByName('NTIMAGE').Assign(MyPic);
ProcUpdPicT.ExecProc;
TransactEdit.Commit;
где MyPic - переменная типа TJPEGImage, ее содержимое также отрисовывается на форме
посредством Image: TImage; примерно так Image1.Picture.Assign(MyPic);
В момент выполнения процедуры ProcUpdPicT выдается сообщение - "EIBClientError: Unsupported Feature"

P.S.: Я дико извиняюсь за свое поведение, наверное что-то упустил, не хотелось бы засорять форум без причины...
...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560702
small vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и...
GDS32.dll "родная" - проверено....
и параметр NTIMAGE DataType - ftBlob, ParamType - ptInput
...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560704
small vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и...
GDS32.dll "родная" - проверено....
и параметр NTIMAGE DataType - ftBlob, ParamType - ptInput
...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560846
small vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое смешное (смех только несколько нервный ;) я эту фигню уже на PHP сделал...

$dbh = ibase_connect($host, $username, $password, 'win1251',0,3);
$handle = fopen("1.jpg", "r");
$new_blob = ibase_blob_import($dbh, $handle);
$query = ibase_prepare($dbh, "UPDATE NTOVAR SET NTIMAGE = ? WHERE NTNUMBER = 7");
ibase_execute($query, $new_blob);
ibase_close($dbh);

Смотрю через IBExpert, картинка на месте... И моя Delphi'йская прога ее тоже видит...

Буду дальше бодаться...
Но вот хоть режте меня, не понимаю, код уже раз сто прочитал и сначала до конца и наоборот. Может в самом деле FireBird уже настолько несовместим с Interbase :-(

P.S.: Пиво с меня ;-) (опосля конечно)
...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560871
small vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хи-хи...
Кажется мне лечиться надо :-(

Теперь так:
...
var
MyStream: TIBBlobStream;
begin
...
MyStream:= TIBBlobStream.Create;
MyStream.Mode:= bmReadWrite;
...
MyPic.SaveToStream(MyStream);
...
TransactEdit.StartTransaction;
ProcUpdPicT.ParamByName('NTNUMBER').Value:= IBTovarQueryNTNUMBER.Value;
//ProcUpdPicT.ParamByName('NTIMAGE').Assign(MyPic);
ProcUpdPicT.ParamByName('NTIMAGE').LoadFromStream(MyStream,ftBlob);
ProcUpdPicT.ExecProc;
TransactEdit.Commit;
...
MyStream.Free;
...
end;

P.S.: Пойду завтра врачу покажусь ;-)
P.P.S.: Вот слово даю, сначала семь раз буду думать, прежде чем спрашивать...
P.P.P.S.: Да и еще, в раздел USES надо добавить "Jpeg, IB, IBBlob, DB". Первые два у меня и раньше были... А вот без этой фигни вся эта конструкция не будет работать...
P.P.P.P.S.: А ведь 22 часа чистого времени угробил :-(
...
Рейтинг: 0 / 0
IBExpress и FireBird 1.5 - отказ работать с BLOB
    #32560988
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато приятно побеседовал сам с собой
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / IBExpress и FireBird 1.5 - отказ работать с BLOB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]