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

Вниз

Физическое удаление записей   Найти похожие ветки 

 
Tumcoat ©   (2003-10-14 08:52) [0]

Уважаемые мастера, подскажите, как можно физически удалять записи из базы, а не помечать их как удаленные?

Я знаю что для полной (физической) очистки таблицы есть команда EmptyTable, а как удалить всего одну строку (физически, чтоб места не занимала)?

Заранее спасибо.


 
sniknik ©   (2003-10-14 09:01) [1]

а для одной строки такой возможности нет (только если сам файл править будеш как текстовый), только для всего файла и всех помеченных на удаление записей.


 
Tumcoat ©   (2003-10-14 09:10) [2]


> sniknik © (14.10.03 09:01) [1]
> только для всего файла
> и всех помеченных на удаление записей.


Тогда плиз подскажи хоть как удалить все помеченные на удаление записи?


 
Anatoly Podgoretsky ©   (2003-10-14 09:23) [3]

dbiPackTable c примерами


 
AbrosimovA ©   (2003-10-14 09:38) [4]

Я делал к примеру так:

Table1.First;//Переход на начало базы
Table1.MoveBy(2);//Переход на 3-ю запись(строку)
Table1.Delete;//Удаление выбранной(текущей) записи
Table1.First;//Переход опять на начало и одновременно
принять изменения


Всё работает.


 
Dr.sam   (2003-10-14 09:41) [5]

Упаковка таблицы (удаление всех помеченных на удаление записей)
В uses надо указать DbiTypes, DbiErrs, DbiProcs

procedure TForm1.BitBtn15Click(Sender: TObject);
var

Error: DbiResult;
ErrorMsg: String;
Special: DBIMSG;
begin

table1.Active := False;
try
Table1.Exclusive := True;
Table1.Active := True;
Error := DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szdBASE, True);
Table1.Active := False;
Table1.Exclusive := False;


finally
Table1.Active := True;

end;
case Error of
DBIERR_NONE:
ErrorMsg := "Упаковка таблицы выполнена успешно";
DBIERR_INVALIDPARAM:
ErrorMsg := "Указанное имя таблицы или указатель на имя таблицы " +"равен NULL";
DBIERR_INVALIDHNDL:
ErrorMsg := "Указанный дескриптор базя данных или курсора " +
"неравен или равен NULL";
DBIERR_NOSUCHTABLE:
ErrorMsg := "Таблица с таким именем не существует";
DBIERR_UNKNOWNTBLTYPE:
ErrorMsg := "Не известный тип таблицы";
DBIERR_NEEDEXCLACCESS:
ErrorMsg := "Таблица открыта не в эксклюзивном режиме";
else
DbiGetErrorString(Error, Special);
ErrorMsg := "[" + IntToStr(Error) + "]: " + Special;
end;
MessageDlg(ErrorMsg, mtWarning, [mbOk], 0);
end;


 
Anatoly Podgoretsky ©   (2003-10-14 09:41) [6]

AbrosimovA © (14.10.03 09:38) [4]
Ты хоть бы вопрос прочитала, он все таки про упаковку, а не про удаление.


 
Izyum ©   (2003-10-14 10:09) [7]


> Anatoly Podgoretsky © (14.10.03 09:41) [6]
> AbrosimovA © (14.10.03 09:38) [4]
> Ты хоть бы вопрос прочитала, он все таки про упаковку, а
> не про удаление.


Не так много современных программистов знают воще термин "упаковка" таблицы:)


 
Anatoly Podgoretsky ©   (2003-10-14 10:12) [8]

Теримн может и не знаю, но для таких Tumcoat дал подробнейшее ниже описание процесса и задачи. Не должно было возникать проблемы между упаковкой и удалением.


 
Izyum ©   (2003-10-14 10:15) [9]


> Anatoly Podgoretsky © (14.10.03 10:12) [8]
> Теримн может и не знаю,

ИМХО к Вам этот пост не относится:)


 
Danilka ©   (2003-10-14 10:26) [10]

[7] Izyum © (14.10.03 10:09)
Думаю, это правильная тенденция - переход на скуль-серверные технологии, где нет такого понятия.


 
Izyum ©   (2003-10-14 10:29) [11]


> Danilka © (14.10.03 10:26) [10]
> [7] Izyum © (14.10.03 10:09)
> Думаю, это правильная тенденция - переход на скуль-серверные
> технологии, где нет такого понятия.

Дык никто и не спорит, но вот в чем вопрос: зачем мучить студентов (а изначально вопрос был о какой-то лабе) изучением технолгий, которые они не будут использовать в реальной жизни? Разве только если пойдут работать в какуюто бюджетную организацию, где софт написан лет 20 назад, а переход на новые платформы считается нецелесообразным по многим причинам, начиная от банального финансирования до неподготовленности персонала:)


 
Tumcoat ©   (2003-10-15 01:39) [12]


> Izyum © (14.10.03 10:29) [11]
>
> Дык никто и не спорит, но вот в чем вопрос: зачем мучить
> студентов (а изначально вопрос был о какой-то лабе) изучением
> технолгий, которые они не будут использовать в реальной
> жизни? Разве только если пойдут работать в какуюто бюджетную
> организацию, где софт написан лет 20 назад, а переход на
> новые платформы считается нецелесообразным по многим причинам,
> начиная от банального финансирования до неподготовленности
> персонала:)


Какая лаба!?? Какие студенты!!?? Я уже два года как институт закончил (и забыл о нем как о кошмарном сне)!
Просто я работаю как раз в
> в какой-то бюджетной организации, где софт написан лет 20
> назад, а переход на новые платформы считается нецелесообразным
> по многим причинам, начиная от банального финансирования
> до неподготовленности персонала

Вот так-то !!! :-))))


> Dr.sam

Спасибо за код, сегодня попробую.


 
Tumcoat ©   (2003-10-15 04:19) [13]


> Dr.sam (14.10.03 09:41) [5]

Код попробовал. Не получается. Говорит, что таблица занята, хотя вроде все проверил, и такого быть не должно.


 
Anatoly Podgoretsky ©   (2003-10-15 07:39) [14]

Она у тебя открыта в программе и возможно одновременно в среде.


 
Tumcoat ©   (2003-10-15 08:03) [15]


> Anatoly Podgoretsky © (15.10.03 07:39) [14]
> Она у тебя открыта в программе и возможно одновременно в
> среде.


На момент проверки программы на компе были запущены только Windows Commander и Delphi.


 
Danilka ©   (2003-10-15 08:08) [16]

[15] Tumcoat © (15.10.03 08:03)
Угу, и в дельфях была открыт этот проект, в котором была открыта эта таблица: table1.active := true;
Вот они и два коннекта.


 
Tumcoat ©   (2003-10-15 08:18) [17]


> Danilka © (15.10.03 08:08) [16]


Ладно, закрыл Дельфи, ошибка осталась.


 
Danilka ©   (2003-10-15 08:35) [18]

[17] Tumcoat © (15.10.03 08:18)
Значит, в твоей программе где-то еще открыта эта таблица, и программа не может ее открыть в эксклюзивном (монопольном (с)1ц) режиме, вот-это обламывается:
Table1.Exclusive := True;
Table1.Active := True;


 
Tumcoat ©   (2003-10-15 09:12) [19]

Да проверил, работает, всем спасибо!!!


 
Izyum ©   (2003-10-15 09:39) [20]


> Tumcoat © (15.10.03 01:39) [12]

Сорри, ошибка вкралась.
Просто где-то рядом какой-то студент задавал вопрос про ФоксПро и институтское задание, вот и попутал.



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.054 c
14-41987
VEG
2003-10-19 20:50
2003.11.13
---|Ветка была без названия|---


14-42083
NickBat
2003-10-23 15:55
2003.11.13
Анекдот.


1-41468
Sodom
2003-11-04 15:25
2003.11.13
Как нарисовать в ScrollBox?


3-40917
Manticor
2003-10-19 16:12
2003.11.13
IBM DB2 Server и Delphi програма


14-41968
REA
2003-10-17 11:47
2003.11.13
Работа в Твери: требуются софтостроители