Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-14029
Игорь_ф
2002-08-22 01:19
2002.09.05
Помогите осуществить переход из паскаля в делфи!


1-14107
Юрий Федоров
2002-08-23 14:50
2002.09.05
Можно ли как-нибудь в DesignTime получить Application.ExeName?


4-14329
cult
2002-07-04 17:07
2002.09.05
WM_CancelMode - с чем его едят?


6-14206
Aleksandr
2002-06-25 15:33
2002.09.05
Как из вернутого сообщения выдернуть адресат?


1-14111
Loker
2002-08-23 18:05
2002.09.05
Cтранности с ShellExecute





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский