Форум: "Базы";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизParadox Найти похожие ветки
← →
Олег219 (2002-04-23 23:08) [0]Минуточку внимания...
Табличка парадоксовская, маленькая, чуть более 1000 записей, работало все долго, потом что-то кряк.. Теперь она великолепно смотрится DBD, или просто в гриде, но при попытке наложить фильтр, или применить locate, вся прога виснет намертво. Сношу индекс первичный (других нет, но он сложный), пытаюсь в DBD создать новый, после некоторого раздумия заявляется, что некий стек (и что за стек?) переполнен и неплохо бы сходить к врачу (в смысле - abort:-)
Кто подскажет, как лечить, или, хотя бы, в чем проблема здесь? В какой области искать, как защититься на будущее?
Заранее благодарен.
← →
Lusha (2002-04-24 09:21) [1]Для начала попробуйте пролистать ее в DBD до самого конца... Необходимо убедиться, что данные действительно целы...
← →
IPisk (2002-04-24 10:53) [2]Попробовать скопировать данные в новую таблицу,
т.е. как бы пересоздать старую.
← →
sniknik (2002-04-24 11:55) [3]как один из вариантов попробовать упаковку (если с таблицей долго работали то живых записей может быть гораздо меньше чем удаленных, тем более что она крякнулась и могут быть "убитые данные")
procedure TDatMod.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;
← →
VAleksey (2002-04-24 14:35) [4]
> sniknik © (24.04.02 11:55)
:)))
Ты вы каждом ответе теперь подобные примеры намерен приводить ?
← →
sniknik (2002-04-24 15:21) [5]что поделаеш у людей похоже поиск не работает. :-(
если надоело могу перестать.
← →
Олег121 (2002-04-25 00:23) [6]Листать пробовал, копировать (с помощью DBD) пробовал, эту большую штуковину попробую, если предварительно пойму.
Но вот что за стек переполнен? И вообще, не создаются новый праймари индекс - это как, почему? Насколько я разумею, при логической ошибке она просто выдаст проблемы в отдельной табличке (она - в смысле DBD).
← →
Lusha (2002-04-25 09:16) [7]Но вот что за стек переполнен?
Представьте себе картинку: два блока с данными внутри таблички имеют ссылки друг на друга... Как Вы думаете, что произойдет если где то в коде программы используется рекурсия при перемещении по данным?
Листать пробовал
То есть долистал от начала до конца?
И вообще, не создаются новый праймари индекс - это как, почему?
А что DBD по этому поводу ничего не говорит? Просто не создает?
В "кладовке" посмотрите программы восстановления Paradox структур...
← →
Erlend (2002-04-25 09:39) [8]Удали с диска все файлы table.*, а оставь table.db. Потом
открой в DBD. Он выругается и перестроит таблицу.
← →
Олег219 (2002-04-25 23:36) [9]Ребяты, я не совсем уж... Все это и пробовал, DBD и ругается на стек. Мне пофигу, я табличку очищу (на горе юзерам:)), просто любопытно, что же такого интересного могло произойти.
← →
sniknik (2002-04-25 23:53) [10]ну зашли и мне посмотреть.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c