![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FireBird BLOB [D6]
Zabludshiy © (2007-07-16 16:58:00)Доброго времени суток. Помогите плс. Не получается изменить блоб. На форме IBDatabase, к нему подключен IBDataset и IBSQL. В таблице (firebird) есть поле типа BLOB. При попытке изменить его (там только текст должен быть) делаю следующим образом:
...
IBDS1.Edit;
IBDS1MEMO.Value:=str;
IBDS1.Post;
...
Пишет "Cannot modify a read-only dataset".
Само поле - не read only, в IBDataset не нашел даже такого свойства. Другие поля (не блобы) изменяю легко через IBSQL,
Может туплю, подскажите как бороться или ссылку на внятную статью/книгу про работу с блобами IB/FB в delphi.
Delphi 6, FireBird
Zabludshiy (2007-07-16 19:25:00) [1]Заработало. Спасибо всем за помощъ!
Zabludshiy (2007-07-16 19:22:00) [2]Вот и я подозреваю, что где-то что-то в свойствах нето... Спасибо, будем разбираться.
engine (2007-07-16 19:18:00) [3]> [8] Zabludshiy (16.07.07 19:16)
> Я хочу понять, почему не работает [1]
Ну у меня нет оснований полагать, что [1] не работает.
В моих проектах отлично работает.
Zabludshiy (2007-07-16 19:16:00) [4]Пробовал несколькими способами записывать этот блоб, так как написано
в Zabludshiy (16.07.07 16:58);
потом через IBDS1MEMO.loadfromstream;
получилось только так как Zabludshiy (16.07.07 18:58) [4],
но я так понимаю что это не совсем правильно.
Я хочу понять, почему не работает [1]
engine (2007-07-16 19:12:00) [5]> [6] Zabludshiy (16.07.07 19:07)
То, что тебе написали в [1] и то, что ты написал в [4] совершенно разные вещи.
Используй параметры.
Zabludshiy (2007-07-16 19:07:00) [6]MEMO - это и есть блоб.
engine (2007-07-16 19:06:00) [7]> [4] Zabludshiy (16.07.07 18:58)
А при чем здесь блоб?
Zabludshiy (2007-07-16 18:58:00) [8]Дык почему тогда когда выполняется такой код
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('update ORGANIZATIONS set ');
IBSQL1.SQL.Add('MEMO = '''+str+''' ');
IBSQL1.SQL.Add('where ORG_ID = '+IBDS1.fieldbyname('ORG_ID').AsString );
IBSQL1.ExecQuery;
IBDS1.Close;
IBDS1.Open;
и размер строки str около 100К вываливается ошибка, а если размер около 10К - всё нормально записывается?
engine (2007-07-16 18:43:00) [9]> [2] Zabludshiy (16.07.07 18:39)
не правильно ты всё понимаешь.
Zabludshiy (2007-07-16 18:39:00) [10]Через update, как я понимаю, не получится передать строку больше 32к, в принципе я так и делаю, но не уверен, что со временем этого не будет мало...
Desdechado (2007-07-16 17:01:00) [11]UPDATE tbl SET blb = :prm WHERE id = :x
и читать справку Modifying read-only datasets