Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Вниз

В чём грабли с createBlobStream?   Найти похожие ветки 

 
Shirson   (2003-04-03 13:33) [0]

Есть таблица в MSSQL8, в которой поле Doc типа image.
Записываю в него данные без проблем.
Эти данные в isqlw я вижу (0xD0CF11E0A1B11A.... и т.д.)
А вот когда пытаюсь эти данные загрузить в поток, поток оказывается пустой.


var:
TS:TStream;
pBuff:PByte;
begin
adotable1.Open;
adotable1.Edit;
TS:=AdoTable1.createBlobStream(AdoTable1.FieldByName("Doc"),bmRead);
GetMem(pBuff,TS.size);
...


TS - пустой.
TS.size равно 0.
BDGrid, подключенный к AdoTable1, строку с (BLOB) показывает.
Варианты с AdoQuery и adodataset дают такой же результат - поток пуст.

В чём грабли?


 
Johnmen   (2003-04-03 13:43) [1]

А так ?

var
MS : TMemoryStream;
...
MS:=TMemoryStream.Create;
TBlobField(AdoTable1.FieldByName("name")).SaveToStream(MS);


Кстати, adotable1.Edit; лишнее...


 
Shirson   (2003-04-03 13:56) [2]

Попробовал. То же самое :( Поток MS пуст, MS.size=0


 
Shirson   (2003-04-03 14:08) [3]

Добавил кусочек, который TBlobField выводит в строковую переменную. В переменной каля-баля появляется, но TBlobField(AdoTable1.FieldByName("name")).SaveToStream(MS) в поток не записывает.
Гремлины?


 
blackman   (2003-04-03 14:21) [4]

ms.Position:= 0;
и забирай


 
Shirson   (2003-04-03 14:28) [5]

>blackman

position и так равен 0. Поток пустой, нет там ничего.
(твой вариант тоже проверил, понятно дело, нифига).

Прямо наваждение какое-то...


 
Johnmen   (2003-04-03 14:32) [6]

>Shirson © (03.04.03 13:56)
>MS.size=0

Непонятки, однако....:)



 
Shirson   (2003-04-03 14:37) [7]

>Johnmen

Полные непонятки. После операции загрузки в поток, его длина равна 0. У меня уже мозги кипят, я нифига понять немогу. А ведь гадость какая-то наверняка. Мелкая и незаметная.


 
Shirson   (2003-04-03 15:18) [8]

Так что, никто с таким не сталкивался? Или все с BLOB полями как-то иначе работают?


 
blackman   (2003-04-03 15:29) [9]

http://yandex.ru/yandpage?q=373064944&p=1&qs=text%3Dblob%26serverurl%3Dblackman.wp-club.net/


 
Clickmaker   (2003-04-03 16:54) [10]

var Stream: TADOBlobStream;

Stream := TADOBlobStream.Create(TBlobField(Query.Fields[0]), bmRead);
try
if (Stream.Size > 0) then Что-то.LoadFromStream(Stream);
finally
Stream.Free;
end;


 
Shirson   (2003-04-03 17:54) [11]

Спасибо, сделал. Правда обходным путём и крышу почти сорвало :(

TBF:=TBlobField(adoquery1.fields.FieldByName("Doc"));
MS:=TMemoryStream.Create;
TBF.SaveToStream(MS);
l:=ms.Size;
ms.SaveToFile("C:\4\SQL2_49156.cpb");

Вот когда стрим записал себя в файл (нормально), а l оказалось равным нулю - крышу у меня сорвало окончательно и бесповоротно. Причём, что самое обидное, когда захотел поделиться сорванной крышей с народом, всё заработало нормально... т.е. size стал не нулевым :( Это просто гониво какое-то.

Ладно, с этим хоть разобрался. Теперь, вот, пытаюсь этот поток сбросить в clipboard...

ms.Read(pbuff,l);
ClipBoard.Open;
MH:=GlobalHandle(pBuff);
Clipboard.SetAsHandle(49156,MH);
ClipBoard.Close;

А клипборд пустой...
Пора домой, пока окончательно катушки не съехали...



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

Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.141 c
7-67566
coder-lamer
2003-02-05 17:42
2003.04.21
CD-Writer


6-67414
matlash
2003-02-20 15:37
2003.04.21
Панель для MS Internet Explorer.


14-67547
MVVD
2003-04-04 15:09
2003.04.21
Почему не работает HELP в DELPHI6?


1-67329
denis24
2003-04-09 11:50
2003.04.21
Потоки


1-67314
Александр Целых
2003-04-06 13:33
2003.04.21
Как отловить обращение пользователя к дисководу А: ???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский