Author |
Topic |
|
Arsenyi
Rwanda
4 Posts |
Posted - 05/10/2005 : 17:38:18
|
Подскажите, пожалуйста, можно ли документ Visio сохранить в MS SQL Server в поле Image и обратно считать его? |
|
TuzhibaevTA
Russia
85 Posts |
Posted - 05/12/2005 : 06:33:28
|
Конечно можно! Но это будет уже извращенство :) документ Visio это xml-подобный файл, делайте выводы сами...
Тужибаев Тимур |
|
|
TuzhibaevTA
Russia
85 Posts |
Posted - 05/12/2005 : 07:37:30
|
quote: Originally posted by TuzhibaevTA
Конечно можно! Но это будет уже извращенство :) документ Visio это xml-подобный файл, делайте выводы сами...
Тужибаев Тимур
Пардон, забыл сказать, xml-файл получиться при условии если будет выставлен соот отрибут в options/Save/Save Visio files as
Тужибаев Тимур |
|
|
algama
2 Posts |
Posted - 11/28/2005 : 13:14:02
|
quote: Originally posted by TuzhibaevTA
Конечно можно! Но это будет уже извращенство :) документ Visio это xml-подобный файл, делайте выводы сами...
Тужибаев Тимур
А можно подробностей. я так и не смог найти метода позволяющего загрузить документ из строки. |
|
|
Voland
91 Posts |
Posted - 11/29/2005 : 11:13:04
|
Можно и сохранить и считать, для этого поле должно быть BLOB. Я делаю это в делфи так: СОХРАНЯЮ
Len:=SCHEME.Size; index:=0; while index<Len do begin if (Len-index) >= BlockSize then Size:=BlockSize else Size:=Len-index;
buf:=AllocMem(Size); SCHEME.ReadBuffer(buf^, Size); CTLib.WriteText(buf,Len,Size); freemem(Buf,Size);
index:=index+size; end;
ЧИТАЮ Тут сложнее, нужны 2 хранимых на сервере
while Total<Size do begin Count := min(Size-Total,32000); with Query do begin SQL.Text := Format('exec sp_meSchemePicDataBlock %d'+#13#10+',%d,'+#13#10+'%d', [SCHEME_CODE_NOW,Total,Count]); Open; (Fields[0] as TBlobField).SaveToStream(SCHEME); end; Total:=Total+Count; end;
пишу и читаю блоками по 32000байта, т.к. больше не поддерживается... Все это через временный файл потока SCHEME
Тексты хранимых, одна для получения размера поля, вторая для непосредственного чтения
if object_id("sp_meSchemePicDataLength") is not null drop proc sp_meSchemePicDataLength go
create proc sp_meSchemePicDataLength(@scheme_id T_SMALLINT) as begin select datalength(SCHEME_DATA) as SIZE from SCHEMES where SCHEME_CODE=@scheme_id end go
if object_id("sp_meSchemePicDataBlock") is not null drop proc sp_meSchemePicDataBlock go
create proc sp_meSchemePicDataBlock(@scheme_id T_SMALLINT,@idx int,@length int) as declare @val varbinary(16) begin select @val = textptr(SCHEME_DATA) from SCHEMES where SCHEME_CODE=@scheme_id
readtext SCHEMES.SCHEME_DATA @val @idx @length end
___ Кто ищет тот найдет __ |
|
|
|
Topic |
|
|
|