У меня проблема с чтением поля blob из базы данных, содержащей файл msword и сохраняющий его в файле (.doc/.docx). Что Мори это прекрасно работает в Delphi 2010, но в Delphi XE2 сохранены файлы invalid.This мой кодЧтение msword из blob-файла Delphi xe2
dane.SQLtmp.Close;
dane.SQLtmp.SQL.Clear;
dane.SQLtmp.SQL.Add('select wydruk,typ,IdWydruku from wydruki where nazwa=:d0');
dane.SQLtmp.Params[0].AsString:=name;
dane.SQLtmp.Open;
if dane.SQLtmp.RecordCount> 0 then
begin
t:=TMemoryStream.Create;
t.Position:=0;
TblobField(dane.sqltmp.FieldByName('wydruk')).saveToStream(T);
T.SaveToFile('C:\FILE'+filetpe);
t.Free;
end;
Сохранение файла в базе данных:
dane.SQLtmp.Close;
dane.SQLtmp.SQL.Clear;
dane.SQLtmp.SQL.Add('insert into Wydruki (Nazwa,Operator,wydruk,opis,typ,rodzaj,podmiot,typsplaty,grupa,podgrupa)');
dane.Sqltmp.SQL.Add('VALUES (:d0,:d1,:d2,:d3,:d4,:d5,:d6,:d7,:d8,:d9)');
dane.SQLtmp.Params[0].AsString:=NazwaPliku; //File name
dane.SQLtmp.Params[1].AsInteger:=glowny.ID_operator;
t:=TMemoryStream.Create;
t.Position:=0;
t.LoadFromFile(OpenFile.FileName);
t.Position:=0;
dane.sqltmp.Params[2].LoadFromStream(t,ftBlob);
dane.SQLtmp.Params[3].AsString:=opis;
dane.SQLtmp.Params[4].AsString:=typ; // file type
// .
// .
// .
dane.SQLtmp.ExecSQL;
В Delphi 2010 он работал ...:/
Что такое 'filetpe'? –
Тип файла, это может быть .doc/docx – Svenson
Вы уверены, что используете правильный тип файла в соответствии с фактическими данными в блобе? Присвоение .docx в фактический файл .doc делает его недоступным для Word, в то время как он по-прежнему работает (при открытии с Word 2007, по крайней мере). –