Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизЧто за глюк с картинками в таблице Paradox???!!! Найти похожие ветки
← →
Fissher (2002-08-15 22:53) [0]Столкнулся я тут с совершенно необъяснимым для себя явлением.
Есть у меня тут таблица "MyTable" с разными полями, а одно из них - "Picture" типа Graphic. Записываю я в это поле, значит, картинку BMP следующим образом:
Query.SQL.add("UPDATE MyTable SET Picture = :par WHERE Face = ""+Face_Key+"";");
ParamByName("par").DataType := ftBlob;
ParamByName("par").ParamType := ptInput;
ParamByName("par").LoadFromStream(ms,ftBLOB);
Картинка записывается, но:
Глюк №1)после ее извлечения из таблицы
Query.FieldByName("Picture").Size всегда = 0 !!! , хотя она при этом в Query содержится!
Глюк №2)
При удалении этой картинки (даже вместе со всей записью), она удаляется из файла MyTable .DB, а файл MyTable. MB размером совсем не уменьшается!!!
Что делать??? ПОМОГИТЕ!!! А то у меня так база все место на винте сожрет!!!!!!!
← →
Leran2002 (2002-08-16 08:10) [1]
> Query.FieldByName("Picture").Size всегда
Это нормально, т.к. это Блоб поле у него нет Size...
> не уменьшается!!!
При удалении записи размер таблицы не уменьшается...
Тебе просто нужно упаковать таблицу...
uses BDE;
// Pack a Paradox or dBASE table
procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
if not Table.Active then
raise EDatabaseError.Create("Table must be opened to pack");
if not Table.Exclusive then
raise EDatabaseError.Create("Table must be opened exclusively to pack");
Check(DbiGetCursorProps(Table.Handle, Props));
if Props.szTableType = szPARADOX then begin
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
end
else
if (Props.szTableType = szDBASE) then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else
raise EDatabaseError.Create("Table must be either of Paradox or dBASE " +
"type to pack");
Table.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Table1.Active then Table1.Close;
Table1.Exclusive:=true; // включаем эксклюзивный режим
Table1.Open; // таблица должна быть открыта
PackTable(Table1);
Table1.Close;
Table1.Exclusive:=false; // выключаем эксклюзивный режим
Table1.Open;
end;
← →
Desdechado (2002-08-16 10:17) [2]Size определяй у Stream"а, когда в него загрузишь картинку из блоба
а размер - так во всех СУБД такое, не пугайся
← →
Всем спасибо! Разобрался! (2002-08-16 12:08) [3]Всем огромное спасибо! Разобрался!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c