Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 12:51   #1
MIGUR
Пользователь
 
Регистрация: 07.01.2008
Сообщений: 13
По умолчанию Blob ошибка записи

Добрый день товарищи !

БД на ФБ:
Код:
CREATE TABLE MSGW (
    ID       INTEGER NOT NULL,
    MSGTEXT  BLOB SUB_TYPE 1 SEGMENT SIZE 8192 CHARACTER SET WIN1251
);
Пробую переписать блоб поле

Код:
var
MS: TBlobStream;
begin
db1.IBDataSet4.Edit;
Memo1.Lines.SaveToStream(MS);
(db1.IBDataSet4.FieldByName('MSGTEXT') as TBLOBField).LoadFromStream(MS);
db1.IBDataSet4.Post;
Ms.Free;
end;
Выдаёт ошибку "Stream write error"

Такой способ записи:

Код:
db1.IBDataSet4.Edit;
db1.IBDataSet4.FieldByName('MSGTEXT').AsString := memo1.Lines.Text;
db1.IBDataSet4.Post;
Так же ругается: "feature is not supported"

Кто знает подскажите в чём ошибка, поиск результатов не дал
MIGUR вне форума Ответить с цитированием
Старый 25.06.2013, 13:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так попробуйте
Код:
Memo1.Lines.SaveToStream(MS);
MS.Position:=0;
(db1.IBDataSet4.FieldByName('MSGTEXT') as TBLOBField).LoadFromStream(MS);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.06.2013, 14:51   #3
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Код:
ParamByName('MSGTEXT').AsBlob:=Memo.Text;
но у меня
Код:
MSGTEXT BLOB SUB_TYPE -1

Последний раз редактировалось superedward; 25.06.2013 в 14:58.
superedward вне форума Ответить с цитированием
Старый 26.06.2013, 12:34   #4
MIGUR
Пользователь
 
Регистрация: 07.01.2008
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так попробуйте
Код:
Memo1.Lines.SaveToStream(MS);
MS.Position:=0;
(db1.IBDataSet4.FieldByName('MSGTEXT') as TBLOBField).LoadFromStream(MS);
Так же продолжает ругаться на stream write error

Цитата:
Сообщение от superedward Посмотреть сообщение
Код:
ParamByName('MSGTEXT').AsBlob:=Memo.Text;
но у меня
Код:
MSGTEXT BLOB SUB_TYPE -1
Через параметры аналогичная ситуация Feature is not supported
Не помогло и изменение SUB_TYPE на -1

Последний раз редактировалось Stilet; 26.06.2013 в 17:55.
MIGUR вне форума Ответить с цитированием
Старый 26.06.2013, 13:42   #5
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IBDataSet4.Open;
  IBDataSet4.Insert;
  IBDataSet4.FieldByName('id').AsInteger := Random(1000);
  TBlobField(IBDataSet4.FieldByName('MSGTEXT')).AsString := Memo1.Text;
  IBDataSet4.Post;
  IBDataSet4.Transaction.Commit;
end;
SelectSQL.Text
Код:
SELECT * 
FROM msgw
InsertSQL.Text
Код:
INSERT INTO msgw VALUES(:id, :msgtext)
это так, "на коленке" ... нужное подогнать под себя
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 26.06.2013 в 13:52.
Yurk@ вне форума Ответить с цитированием
Старый 26.06.2013, 15:03   #6
MIGUR
Пользователь
 
Регистрация: 07.01.2008
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IBDataSet4.Open;
  IBDataSet4.Insert;
  IBDataSet4.FieldByName('id').AsInteger := Random(1000);
  TBlobField(IBDataSet4.FieldByName('MSGTEXT')).AsString := Memo1.Text;
  IBDataSet4.Post;
  IBDataSet4.Transaction.Commit;
end;
SelectSQL.Text
Код:
SELECT * 
FROM msgw
InsertSQL.Text
Код:
INSERT INTO msgw VALUES(:id, :msgtext)
это так, "на коленке" ... нужное подогнать под себя
Так же ошибка


Может дело в InterBase 7.1 ?
MIGUR вне форума Ответить с цитированием
Старый 26.06.2013, 15:09   #7
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

косяк где-то в другом месте, а не в коде.
Цитата:
БД на ФБ:
Цитата:
Может дело в InterBase 7.1
ты на сервере IB поднимаешь базу FB ???
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 26.06.2013, 15:10   #8
MIGUR
Пользователь
 
Регистрация: 07.01.2008
Сообщений: 13
По умолчанию

Видимо в этом и косяк ?)
MIGUR вне форума Ответить с цитированием
Старый 26.06.2013, 15:16   #9
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А не пробовали перед выполнением Memo1.Lines.SaveToStream(MS) создать этот самый MS?
ReportCube вне форума Ответить с цитированием
Старый 26.06.2013, 15:18   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var MS: TMemoryStream;
begin
  MS:=TMemoryStream.Create;
  Memo1.Lines.SaveToStream(MS);
  MS.Position:=0;
  db1.IBDataSet4.Edit;
  TBLOBField(db1.IBDataSet4.FieldByName('MSGTEXT')).LoadFromStream(MS);
  db1.IBDataSet4.Post;
  Ms.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление изображения в blob через sql. Blob пустой. athleet БД в Delphi 3 01.05.2012 06:41
Ошибка отложения записи Серёга0629 Операционные системы общие вопросы 0 14.01.2012 10:16
Ошибка в записи формулы Файзулка Помощь студентам 4 16.01.2011 19:17
Ошибка работы с blob полем, в похожем проекте все работает Lokos БД в Delphi 6 25.02.2010 08:17
Ошибка отложеной записи Rio309 Компьютерное железо 4 02.11.2008 18:24