Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение рисунков в MSSQL, Сохранение текстового файла с рисунками  
V
    Опции темы
j_kat
Дата 27.8.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Использую компонент TRxDbRichEdit.Пишу текст и загружаю картинки(.JPG) извне.В БД создано поле формата IMage.
Доступ через BDE.Использую TQuery,TDataSource
Попытка сохранить (Post) в этом поле просто текста идет на ура,а вот с картинкой ничего не выходит.Сообщение:
Invalid BLOB length.
Понимаю что так прямолинейно сохранить BLOB нельзя,но не могу найти механизм как это сделать.
Подскажите,пожалуйста.


var
  Stream1, Stream2 : TBlobStream;
begin
     
       {Dv- TDataSource}
  Dv.DataSet.Edit;
    {FieldByName('VV')-поле,куда хочу сделать запись}
    Stream2 := Dv.DataSet.CreateBlobStream(Dv.DataSet.FieldByName('VV'), bmReadWrite);
    Ошибка:
         Incompatible types TBlobStream TStream
  end;

Дальше и двинуться не могу smile 
PM MAIL   Вверх
Rodman
Дата 27.8.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



почитай статьи 
1."Загрузка изображений в Blob-поля"
2. "Извлечение изображения из BLOB-поля"
3. "Запись потока в BLOB-поле"
4. "Приёмы работы с BLOB (OLE/Memo) полями"

 из DRKB


Это сообщение отредактировал(а) Rodman - 27.8.2007, 14:17
PM MAIL WWW Skype GTalk YIM MSN   Вверх
j_kat
Дата 28.8.2007, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Rodman @ 27.8.2007,  14:12)
почитай статьи 
 из DRKB

Спасибо.Все прочитала.

procedure TForm1.Button1Click(Sender: TObject);
begin

TRxDBRichEdit.Lines.SaveToFile('c:\spline\ww1.rtf');


if not (Qv.State in [dsInsert, dsEdit]) then Qv.Edit;


(Dv.DataSet.fieldbyname('VV') as TBlobField).LoadFromFile('c:\spline\ww1.rtf');

Qv.Post;


 ---На Post идет ошибка Invalid BLOB length-----
Если в файле только текст,то ошибка не возникает,а если текст и картинка,то идет ошибка.
Что я делаю неправильно?
end;
PM MAIL   Вверх
Rodman
Дата 28.8.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



j_kat, какая СУБД. и весь текст для теста можно увидеть?

ЗЫ: подсвечивай код (для этого кнопка код)... 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
j_kat
Дата 28.8.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rodman,спасибо вам большое,что возитесь со мной.Я вам очень признательна.
СУДБ у нас Microsoft SQL.Доступ через BDE.Использую TQuery,TDataSource.В БД создана таблица из двух полей(пока для отладки),одно поле с номером записи(пока ставлю 1),второе поле IMage.
На форму (Делфи5) кладу компонент TRxDbRichEdit (имя Editor) и строку меню для выкладывания на форму рисунков с расширением,например,JPG

Код

procedure TForm1.InsertBitmap(Sender: TObject);
var
  Pict: TPicture;
begin
  with FOpenPictureDialog do begin
    if Execute then begin
      Pict := TPicture.Create;
      try
        Pict.LoadFromFile(FileName);
        Clipboard.Assign(Pict);
        Editor.PasteFromClipboard;
      finally
        Pict.Free;
      end;
    end;
  end;
end;


И кнопку для сохранения.

Код

procedure TForm1.Button1Click(Sender: TObject);
begin

Editor.Lines.SaveToFile('c:\spline\ww1.rtf');


if not (Qv.State in [dsInsert, dsEdit]) then Qv.Edit;


(Dv.DataSet.fieldbyname('VV') as TBlobField).LoadFromFile('c:\spline\ww1.rtf');

Qv.Post;


 end;

Где Qv - TQuery("select * from test_vv
                             where KOD=1")
Dv-TDataSource

Если я что-то опять упустила,вы подскажите,пожалуйста.Я уже столько всего начиталась,аж в глазах рябит,а ясности пока нет.


Это сообщение отредактировал(а) j_kat - 28.8.2007, 12:23
PM MAIL   Вверх
Rodman
Дата 28.8.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



блин и проэмулировать не могу... слушай, а обязательно блобы кидать??? может проще будет в Base64 конвертнуть и записать и при чтении наоборот...

Потому как я проверить то что ты делаешь не могу...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
j_kat
Дата 29.8.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С конвертацией погожу.Хочу еще помучиться smile 
А если я вопрос упрощу.И будет он такой.
Исходные данные:
1.MS SQL
2.BDE
3.Поле в БД определено как Image
3. TQuery,TDataSource
4.Любой RTF файл с картинкой и текстом в любом месте.
Как это файл записать в поле базы? 
PM MAIL   Вверх
Rodman
Дата 29.8.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(j_kat @  29.8.2007,  12:14 Найти цитируемый пост)
3.Поле в БД определено как Image

что то не понял... ты в Image хошь кроме картинки еще че то загнать?!

мне кажется тебе поле типа TEXT надо и туда твой поток записывать!!!


ЗЫ: два третих пункта!!! smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
j_kat
Дата 30.8.2007, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rodman,ты будешь долго смеяться,но я нашла в чем дело и это оказалось настолько просто,что даже стыдно сознаваться.Надо было в BDE изменить размер BLOB SIZE.И все пошло как по маслу.
Утешаю себя тем что глупость человеческая не знает пределов,а знания лишними не бывают.
СПАСИБО. smile 

Это сообщение отредактировал(а) j_kat - 30.8.2007, 07:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


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

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


 




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


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

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