![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Картинка в access
Sam Plastinin © (2003-07-22 09:43:00)
Здравствуйте! У меня следующая ситуация - в access"овской базе мне необходимо хранить картинки, для чего я задал данному полю тип "поле объекта OLE". Теперь, пытаясь вывести эту картинку в DBImage я получаю ошибку - дескать в поле нет картинки. В различных faq"ах и kuliba"х первым делом прелагается сделать отображение через blobstream, но то ли в 6-х Дельфях это все не поддерживается, то ли как то по-другому реализовано - не могу разобраться. Помогите пожалуйста, как лучше поступить. Заранее благодарю!
sniknik (2003-07-28 12:55:00) [1]
sniknik © (22.07.03 10:55)
>> DBImage я получаю ошибку
>ложи картинку в дельфях, а не в Access-е.
....
если положиш так, то ошибки не будет у DBImage параметры на поле пропишеш и все.
для image анологично обратный метод 2.
Sam (2003-07-28 11:45:00) [2]
Я так понял, что все предлагаемые мне советы предназначены для записи картинки в таблицу БД, а как мне вытащить ее на свет божий, т.е. отобразить в image или dbimage?
nv-vetal (2003-07-23 16:04:00) [3]
Nicolay, я знаю что стрельцы любят спорить, но тот метод что я предложил самый простой.
sniknik (2003-07-22 21:27:00) [4]
nv-vetal © (22.07.03 16:42)
> Все другие методы не работают.
поспорим?
nv-vetal (2003-07-22 16:42:00) [5]
надо через Делфи вставить картинку технология АДО, а потом уже мона смотреть. Все другие методы не работают.
Silla (2003-07-22 13:05:00) [6]
Попробуй посмотреть
http://www.all-for-delphi.narod.ru/files/example/picture.rar
Sam Plastinin (2003-07-22 11:12:00) [7]
спасибо!
sniknik (2003-07-22 10:55:00) [8]> DBImage я получаю ошибку
ложи картинку в дельфях, а не в Access-е.
к примеру
ADOCommand1.CommandText:= "UPDATE MyTable SET ImField=:ImField WHERE AUTOID="+ADODataSet1.FieldByName("AUTOID").AsString;
ADOCommand1.Parameters.ParamByName("ImField").LoadFromFile(Edit1.Text, ftGraphic);
ADOCommand1.Execute;
> но то ли в 6-х Дельфях это все не поддерживается
конечно не поддерживается, это надо на них программировать
чтото вроде
var st: string;
Stream: TMemoryStream;
begin
if ADODataSet1.Active then begin
Stream:= TMemoryStream.Create;
try
Image1.Picture.Bitmap.SaveToStream(Stream);
st:= ADODataSet1.FieldByName("AUTOID").AsString;
ADOCommand1.CommandText:= "UPDATE MyTable SET ImField=:ImField WHERE AUTOID="+St;
ADOCommand1.Parameters.ParamByName("ImField").LoadFromStream(Stream, ftGraphic);
ADOCommand1.Execute;
finally
Stream.Free;
( например счас выяснится, что примеры на ADO я совершенно зря приводил, у вас к нему отврашение(необязательно конечно)
> DBImage я получаю ошибку
ложи картинку в дельфях, а не в Access-е.
к примеру
ADOCommand1.CommandText:= "UPDATE MyTable SET ImField=:ImField WHERE AUTOID="+ADODataSet1.FieldByName("AUTOID").AsString;
ADOCommand1.Parameters.ParamByName("ImField").LoadFromFile(Edit1.Text, ftGraphic);
ADOCommand1.Execute;
> но то ли в 6-х Дельфях это все не поддерживается
конечно не поддерживается, это надо на них программировать
чтото вроде
var st: string;
Stream: TMemoryStream;
begin
if ADODataSet1.Active then begin
Stream:= TMemoryStream.Create;
try
Image1.Picture.Bitmap.SaveToStream(Stream);
st:= ADODataSet1.FieldByName("AUTOID").AsString;
ADOCommand1.CommandText:= "UPDATE MyTable SET ImField=:ImField WHERE AUTOID="+St;
ADOCommand1.Parameters.ParamByName("ImField").LoadFromStream(Stream, ftGraphic);
ADOCommand1.Execute;
finally
Stream.Free;
end;
end;
end;
> как лучше поступить
вопрос вопросов, ответа не бывает без отрыва от конкретной ситуации. (например счас выяснится, что примеры на ADO я совершенно зря приводил, у вас к нему отврашение(необязательно конечно)) ну и дело предпочтений конечно. (иногда закрываеш глаза на явный недостаток метода, по разным причинам)