Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизВопрос по работе с Blob Найти похожие ветки
← →
wik (2004-03-11 10:10) [0]У меня проблема. Никак не могу закачать на MSSQL картинку, когда использую ClientDataset (Midas)
Код на Delphi следующий :
.....
strm : TStream;
param : TParam;
begin
with DM.spExecute do begin //spExecute :TClientDataSet
CommandText:="sp_photos";
Params.Clear;
param:=Params.CreateParam(ftBlob, "@image", ptInput);
param.Size:=MaxInt;
strm:=TMemoryStream.Create;
Image.Picture.Bitmap.SaveToStream(strm);
Params.ParamByName("@image").LoadFromStream(strm,ftBlob);
Execute;
strm.Free;
....
На сервере :
CREATE TABLE [dbo].[tbEmployeePhotos] (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[Photo] [image] NULL
)
CREATE PROCEDURE sp_photos
@image image
as
insert into tbEmployeePhotos(photo) values(@image)
.....
При выполнении хр. процедуры Delphi выдает ошибку "Operand Type clash : text is incompatible with image"
Может, кто-нибудь знает, почему это происходит, потому что по логике вещей код правильный.
← →
Asdor © (2004-03-11 11:34) [1]А вот и не правильный. :)
with DM.spExecute do begin //spExecute :TClientDataSet
CommandText:="exec sp_photos :image";
Params[0].ParamType:=ptInput;
strm:=TMemoryStream.Create;
Image.Picture.Bitmap.SaveToStream(strm);
Params[0].LoadFromStream(strm,ftBlob);
Execute;
strm.Free;
← →
wik (2004-03-11 11:50) [2]Не знаю, всегда так делал и все в порядке было.
Вот как раз при такой записи генерится ошибка "Could not find stored procedure exec sp_photos :image"
← →
Asdor © (2004-03-11 12:12) [3]А у тебя spExecute с чем на сервере связан?
если с TStoredProc, то я неправ иу тебя было все правильно...
я думал там TQuery.
По поводу параметров - а какой тип поля определит BDE если ты обратишься к твоей таблице?
Попробуй вместо [Photo] [image] NULL [Photo] [Text] NULL.
У BDE много "особенностей".
← →
wik (2004-03-11 12:26) [4]Да пробовал и так, и так. Но я использую ADO, а не BDE.
Кстати, если напрямую вызывать хранимую процедуру TStoredProc без ClientDataset, все проходит с песнЯми. Получается, что это глюк TStoredProc.
Может так и сделать, но тогда не знаю, как саму картинку передать серверу (без файла)
← →
Asdor © (2004-03-11 12:41) [5]
> Да пробовал и так, и так. Но я использую ADO, а не BDE.
>
> Кстати, если напрямую вызывать хранимую процедуру TStoredProc
> без ClientDataset, все проходит с песнЯми. Получается, что
> это глюк TStoredProc.
Наверное проблемы при совмещении ADO с Midas; Там как-то весело параметры присваиваются...
> Может так и сделать, но тогда не знаю, как саму картинку
> передать серверу (без файла)
Например так:
Делаешь на сервере метод SavePicture(Value:Variant)
На клиенте вызываешь Server.SavePicture(PictureField.AsVariant);
← →
wik (2004-03-11 14:56) [6]Вот как раз и проблема, что картинка как Variant не передается.
Но все равно спасибо
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c