Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Вниз
Физическое удаление записей Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c