Форум: "Базы";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];
ВнизПочему? Найти похожие ветки
← →
_Vovan_ (2002-12-18 17:00) [0]Здравствуйте всем
Почему при выполнении запроса на удаление записи она удаляется и в программе больше не видна (даже при перезапусках программы и обновлении набора данных), а при просмотре БД из FoxPro она отображается после удаления.
← →
Сергей (2002-12-18 17:12) [1]видать pack надо сделать
← →
_Vovan_ (2002-12-18 17:14) [2]Для "чего" pack
← →
Сергей (2002-12-18 17:20) [3]потому что запись не удаляется физически, а только помечается на удаление. В проге наверно в гриде стоит не отображать удаленньіе (умолчание). для того чтоб запись удалить физически, надо сделать пак. Или я чета не доганяю :]
← →
Anatoly Podgoretsky (2002-12-18 23:02) [4]Видать у тебя Фокс настроен иначе
← →
_Vovan_ (2002-12-19 08:49) [5]Я как понимаю PACK делается из под FoxPro, а как его в таком случае сделать из под Delphi?
← →
danilka (2002-12-19 09:18) [6]В библиотеке RXLib, в юните BdeUtils есть процедура PackTable.
Если у тебя нет этой библиотеки, то могу прислать исходник этой функции.
← →
danilka (2002-12-19 09:25) [7]Вообще-то упаковка таблицы - довольно долгая операция, если база большая, то упаковка может занять несколько минут ил даже десятков минут, можешь представить, что с тобой сделают юзеры, если ты ее будешь делать после каждого удаления записи. :))
Обычно упаковку делает администратор БД, раз в неделю/месяц/год, в зависимости от БД.
Правильней будет в фоксовскую программу отстроить, чтобы не показывала записи, помеченые на удаление, а в дельфийской, при желании, сделать пункт меню или кнопку или еще чего, доступное только админу, по которой будет производится упаковка.
← →
_Vovan_ (2002-12-19 09:26) [8]Пришли пожалуйста на OGP-3@azot.ru
Заранее сенкс.
Только ка кя понял из названия нужен будет BDE. Я подключаюсь через ODBC.
← →
danilka (2002-12-19 10:17) [9]написал на OGP-3@azot.ru - письмо вернулось:
(reason: 550 5.1.1 <OGP-3@azot.ru>... User unknown)
← →
Slava (2002-12-19 10:28) [10]> _Vovan_ (19.12.02 09:26)
Если для фоксовой программы это не критично - видеть удаленные записи, то в папке с этой программой создай файл config.fp и в нем напиши:
DELETED=ON
Но это поможет, только если в самой программе не изменяются установки насильно.
А pack делать нужно, как сказал danilka (19.12.02 09:25), т.к. эта команда требует эксклюзивного доступа к таблице
← →
KSergey (2002-12-19 10:54) [11]Плюс ко всему, для паковки надо получить эксклюзивный доступ к таблице, так что до убийства пользователями дело не дойдет, пока они сами будут работать ;)
На самом деле для сетевой программы, использующей формат DBF, более правильна следующая логика: при необходимости добавить запись сначала ищется удаленная запись, если найдена - с нее снимается признак удаленности и новая запись помещается в нее. Ну а если не найдена - то реально добавляется. Как находить и снимать признак на дельфи - не знаю. Но это часто проскакивало.
← →
_Vovan_ (2002-12-19 11:05) [12]Спасибо за совет
← →
Anatoly Podgoretsky (2002-12-19 11:06) [13]KSergey © (19.12.02 10:54)
Так делать конечно можно, но стоит подумать стоит ли так делать. Все таки первичное назначение совсем для другого. Периодическая упаковка эффективнее, особенно если есть соответствующий пункт меню, но все таки желательно это не разрешать рядовому пользователю, эти записи часто помогают при разборках.
← →
_Vovan_ (2002-12-19 11:17) [14]Danilka, если не вломы, то скинь на
Vovan-110981@yandex.ru
← →
_Vovan_ (2002-12-19 12:33) [15]Спасибо Danilka, все получил.
← →
KSergey (2002-12-19 12:51) [16]Anatoly Podgoretsky © (19.12.02 11:06)
Вполне допускаю, что иногда это ни есть хорошо. Более того, боюсь, что такой метод чреват при интенсивной работе многих пользователей по удалению/вставке записей тем, что разные пользователи при добавлениии попытаются записать данные в одну и ту же удаленную запись.. Тут вообще концов тогда не соберешь.
Ну и конечно если есть необходимость в разборках - все удалленные представляют собой хороший лог, который в случае применения SQL сервера БД еще ой как приходтся делать ;)
В основном предложенный способ конечно хорош для БД, где в основном записи добавляются, и лишь изредка удаляются.
← →
Anatoly Podgoretsky (2002-12-19 12:55) [17]Лучше не использовать не по назначению, если редко удаляются, то тем более что не стоит тратить время на эту операция, если часто то необходим административный подход к упаковке.
← →
Kolyan (2002-12-19 13:06) [18]Люди, а мне не подкинете исходник для упаовки dBase III+? Буду очень благодарен. На kuibida@mail.ru.
← →
Anatoly Podgoretsky (2002-12-19 13:10) [19]Это почему подкидывать?, у тебя что Дельфи нет? В хелпе есть полноценный пример для dBase и Paradox
Но в dBase III+ ты запутаешься с индексами если они у тебя есть
← →
danilka (2002-12-19 13:43) [20]uses
...
Bde, DB, DBTables, dbconsts,
...
procedure TForm1.Button1Click(Sender: TObject);
var
Exclusive:boolean;
begin
Exclusive := Table1.Exclusive;
Table1.Close;
try
Table1.Exclusive := True;
Table1.Open;
try
Check(DbiPackTable(Table1.DBHandle, Table1.Handle, nil, nil, True));
finally
Table1.Close;
end;
finally
Table1.Exclusive := Exclusive;
Table1.Open;
end;
end;
_________________
под одбц ругается, под бде пашет, дбф-ки пакует
← →
Севостьянов Игорь (2002-12-20 18:27) [21]
> danilka (19.12.02 13:43)
> под одбц ругается, под бде пашет, дбф-ки пакует
Конечно ругается это функция (Check(DbiPackTable(Table1.DBHandle, Table1.Handle, nil, nil, True));
) только для BDE из модуля BDE.pas...
Borland не поделился с MS этой функцией :)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c