Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.05;
Скачать: CL | DM;

Вниз

Вопрос по хранению файлов в БД   Найти похожие ветки 

 
cyborg   (2009-02-13 14:41) [0]

Хочу сохранить в базе файл. Делаю это следующим образом.
procedure TForm1.Button1Click(Sender: TObject);
var
 blob: TStream;
 fs:TFileStream;
begin
 blob := MSQuery1.CreateBlobStream(MSQuery1.FieldByName("Enclosure"), bmWrite);
 try
   blob.Seek(0, soFromBeginning);
   fs := TFileStream.Create("d:\1.txt", fmOpenRead or fmShareDenyWrite);
   try
     MSQuery1.Insert;
     blob.CopyFrom(fs, fs.Size);
     MSQuery1.Post;
   finally
     fs.Free
   end;
 finally
   blob.Free
 end;
end;


Выдается сообщение: "MSQuery1: Field "Enclosure" not found."

Что нужно сделать чтобы поле все-таки находилось?


 
clickmaker ©   (2009-02-13 14:48) [1]

> Что нужно сделать чтобы поле все-таки находилось?

нужно, чтобы оно было в наборе данных, который возвращает запрос в MSQuery1


 
Johnmen ©   (2009-02-13 14:48) [2]

Надо, чтобы это поле было в наборе данных.
Что для этого сделать - тебе решать.


 
Petr V. Abramov ©   (2009-02-13 15:06) [3]

еще можно регистр букв проверить


 
cyborg   (2009-02-13 15:14) [4]

Добавил запрос: "Select [Enclosure] from dbo.[Enclosure]". Теперь поле находится, и даже добавляется одна запись. Но когда я хочу добвить следующую, выдается ошибка: "Dataset not in edit or insert mode."
Что за хрень? Почему когда добавляю первую запись DataSet находится в нормальном режиме, а потом в него нельзя добавлять?


 
Anatoly Podgoretsky ©   (2009-02-13 15:25) [5]

> cyborg  (13.02.2009 15:14:04)  [4]

Теперь надо что бы было в "edit or insert mode"


 
Anatoly Podgoretsky ©   (2009-02-13 15:25) [6]

> Petr V. Abramov  (13.02.2009 15:06:03)  [3]

Ну не Линксоиды же, какой еще регистр.


 
cyborg   (2009-02-13 15:31) [7]


> Anatoly Podgoretsky ©

А как его перевести в "edit or insert mode" и почему для первой записи этого не требовалось?


 
Сергей М. ©   (2009-02-13 15:34) [8]


> cyborg


Пример же в справке есть (цитирую):

 try
//сначала НД переводится в режим редактирования или вставки
   ClientDataSet1.Edit;
// и только после перевода в этот режим создается блоб-стрим, привязанный к нужному полю
   Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName("Remarks"),
bmReadWrite);
   try
...
// ну и наконец сохранение изменений и возврат НД в режим обзора
     ClientDataSet1.Post;
   finally
     Stream2.Free;
   end;



 
Сергей М. ©   (2009-02-13 15:37) [9]


> почему для первой записи этого не требовалось?
>


Видимо потоу что НД у тебя при этом по хз какой-то причине уже был в режиме вставки, потому ты и не схлопотал исключение. А по-хорошему должен был схлопотать уже при первой записи, если бы при этом НД находился в статусе dsBrowse


 
cyborg   (2009-02-13 15:45) [10]


> Сергей М.

Круто! Теперь все работает.
Спасибо, добрый человек!


 
Плохиш ©   (2009-02-16 10:54) [11]


> cyborg   (13.02.09 15:45) [10]

Стоит всё-таки прочитать какой букварь по основам выбранного языка программирования...


 
cyborg   (2009-02-16 16:44) [12]


> Плохиш

Да, неплохо было бы. Хотя на форуме часто быстрее можно получить ответ.

Еще вопрос. Допустим есть таблица: первое поле ID, второе Blob, третье Int. IDшник заполняется автоматически при добавлении новой записи. Как одновременно со вставкой блоба заполнить еще и Int?


 
clickmaker ©   (2009-02-16 16:49) [13]

> Как одновременно со вставкой блоба заполнить еще и Int?

ну ё-мое, совсем-то расслабляться уж не надо. Даже если "на форуме часто быстрее можно получить ответ".
добавить еще строчку кода после blob.CopyFrom(fs, fs.Size); не приходило в голову?


 
cyborg   (2009-02-17 09:53) [14]


> clickmaker

Что-то я стормозил. Пытался сначала остальные поля тоже через блобы добавлять :)



Страницы: 1 вся ветка

Текущий архив: 2009.04.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
15-1233588085
Кто б сомневался
2009-02-02 18:21
2009.04.05
Нарисовать коробку к ПО


2-1234282972
Dr. Genius
2009-02-10 19:22
2009.04.05
Загрузка ЦП в процентах


15-1232570914
Cyrax
2009-01-21 23:48
2009.04.05
Чем отличаются Nokia N95, Nokia N95 1 year navigation...


15-1233701918
Германн
2009-02-04 01:58
2009.04.05
RAD Studio 2007 vs BDS 2006


15-1234120264
istok2
2009-02-08 22:11
2009.04.05
как создать достать базу вебсайтов интернета...