Главная страница
    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.49 MB
Время: 0.032 c
14-42089
Gorlum
2003-10-23 14:26
2003.11.13
Реляционные базы данных и дискретная математика


11-41121
LITTEL[MF]
2003-02-16 05:00
2003.11.13
PStrList >Помоему он не доработан или там ошибка.


3-41095
Zn
2003-10-22 16:36
2003.11.13
Ошибка переполнения в IBQuery.


3-40823
denmin
2003-10-22 10:35
2003.11.13
Можно ли создать локальные таблицы на машине?


4-42215
AlexKniga
2003-09-18 21:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский