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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2009, 19:28   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос BLOB поле

Возникла необходимость загружать очень большой объем текста в БД. Использую БД Paradox, BDE. Слышал, что для этого нужно использовать BLOB-поля. Вот, поиском по форуму, нашел код чтения и запись в это самое поле.
Код:
Чтение и запись BLOB-файла в БД

Вставка файла в поле базы данных
Код:

if OpenDialog1.Execute then
begin
ADOQuery1.Insert;
tblobfield(form1.ADOQuery1.FieldByName('MyBlob')).LoadFromFile(OpenDialog1.FileName);
ADOQuery1.Post;
end;
Чтение файла из Базы Данных
Код:

var
ptkwrd:Tmemorystream;
begin
ptkwrd:= Tmemorystream.Create;
tblobfield(form1.ADOQuery1.FieldByName('MyBlob')).SaveToStream(ptkwrd);
ptkwrd.Position:=0;
ptkwrd.SaveToFile('temp.doc');
shellexecute(Handle, 'open','temp.dwg',nil,nil,SW_SHOWNORMAL);
ptkwrd.Free;
Мне не понятны в этих кодах некоторые слова. Что значат вот эти названия?
tblobfield, ptkwrd. Поясните пожалуйста? Может есть еще какие-нибудь способы хранения большого текстс в БД?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 15:19   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Я разобрался с предыдущим вопросом. Помогите пожалуйста переделать код чтения из BLOB поля, чтобы текст выводился из поля например в Memo. Код:
Код:
//запись
procedure TForm1.BitBtn6Click(Sender: TObject);
var
 Blob: TBlobStream;
begin
 if OpenDialog1.Execute then
 begin
  Query1.Insert;
  TBlobField(Query1.FieldByName('TEKST')).LoadFromFile(OpenDialog1.FileName);
  Query1.Post;
 end;
end;

//чтение
procedure TForm1.BitBtn7Click(Sender: TObject);
var
 Ptkwrd: TMemoryStream;
 Blob: TBlobStream;
begin
 Ptkwrd:=TMemoryStream.Create;
 TBlobField(Query1.FieldByName('TEKST')).SaveToStream(Ptkwrd);
 Ptkwrd.Position:=0;
 Ptkwrd.SaveToFile('temp.doc');
 ShellExecute(0,'open','temp.doc',nil,nil,SW_SHOWNORMAL);
 Ptkwrd.Free;
end;
Как переделать код?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 15:40   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дык это... Просто кинь на форму DBMemo и настрой его на базу и поле...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.06.2009, 15:49   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Эээ...ну да, точно. Ну вот добавил я его щас и настроил на пооле, но вместо текста отображаются какая-то строчка с иероглифами, а сам текст не показывается. У меня правильно процедуры записаны-то?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 16:04   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
artemavd
Стоп! А что в Мемо поле хранится? В какой кодировке? Какая информация?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.06.2009, 16:13   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от Stilet
А что в Мемо поле хранится?
Не понял. В смысле в таблице у которого типа поля Memo?
Цитата:
Сообщение от Stilet
В какой кодировке? Какая информация?
Информация обычная. Обычный вордовский документ с расширением .doc. Нужно его содержимое загрузить в BLOB-поле, чтобы в дальнейшем путем запроса его отображать.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 16:39   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вордовский документ
А-а-а вот де собака прирыла...
простой МЕМО его не отобразит.

Самое простое выгрузить из БЛОБ во временный DOC файл, и тупо его запустить (через ShelLExecute).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.06.2009, 16:41   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Самое простое выгрузить из БЛОБ во временный DOC файл, и тупо его запустить (через ShelLExecute
Но у меня же будет много документов загружаться. Все же их во временный файл не выгрузишь. может все таки можно с вордовскими доками сделать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 16:45   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Все же их во временный файл не выгрузишь
Ну... Думаю что так всетки будет проще... Я не знаю лично компонентов, которые могут отображать DOC файлы...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.06.2009, 16:48   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от Stilet
Я не знаю лично компонентов, которые могут отображать DOC файлы...
...из BLOB-полей?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После ввода в поле по Enter нужно перейти на другое поле! •ScReam•™ Помощь студентам 2 16.06.2009 08:47
Выгрузка с базы BLOB-поле tsergey Помощь студентам 1 17.04.2009 14:16
картинки в BLOB полях Toxa БД в Delphi 1 23.04.2007 13:34
BLOB в string _andrews_ БД в Delphi 0 20.04.2007 12:05
Как очистить Blob поле Anticoors Общие вопросы Delphi 0 08.01.2007 01:38