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

Вниз

Что за глюк с картинками в таблице 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
1-14034
Abajun
2002-08-26 15:36
2002.09.05
Передача строки


1-14046
Shrek
2002-08-26 17:16
2002.09.05
BDE


3-13970
KAA
2002-08-14 19:17
2002.09.05
2000 Добавить в SELECT номер строки.


1-14137
race1
2002-08-23 13:06
2002.09.05
кнопка


1-14139
Cobalt
2002-08-23 17:26
2002.09.05
Передача указателя