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

Вниз

Вопрос по работе с 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
4-1075903468
UNIVERSAL
2004-02-04 17:04
2004.04.11
Хук на мышь.


1-1079958830
RodAM
2004-03-22 15:33
2004.04.11
Переход D5 - D7


7-1080034578
Goida
2004-03-23 12:36
2004.04.11
Процессы, запущенные на компьютере....


14-1079638653
E1
2004-03-18 22:37
2004.04.11
А если создать аналог америкосовского JobFind а?


1-1079781918
Goida
2004-03-20 14:25
2004.04.11
Ошибка из Excel. Не пойму почему.