Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-40812
vantage10
2003-10-22 12:46
2003.11.13
перевод SQL запросов для работы с Access на MS SQL Server 2k


1-41659
MaG
2003-10-25 05:56
2003.11.13
Бегущая сторка


14-42049
Pavels
2003-10-14 00:18
2003.11.13
Почему вы так грубы?


6-41798
$h@dow
2003-09-19 16:05
2003.11.13
Как сделать экономный режим скачки?


7-42197
iWorm
2003-08-27 03:54
2003.11.13
Клавиатура





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