Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.014 c
1-49104
Berg
2003-01-05 10:30
2003.01.16
Обработка исключений


14-49239
Wonder
2002-12-26 14:44
2003.01.16
В этом году вы увидите следующие серии фильма


3-48917
cta
2002-12-20 15:55
2003.01.16
Мастер деталей


1-49001
jen_bond
2003-01-04 20:50
2003.01.16
Что лучше сделать с записью параметров в ini


14-49316
WinNuker
2002-12-28 12:29
2003.01.16
Delphi 7





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