![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EDBEngineError Key Violation [D5, D6, Paradox]
alexvan © (2002-08-16 12:46:00)Уважаемые мастера подскажите PLEASE
У меня есть некая резервная таблица. Перед новым использованием её очищаю. Далее вношу запись в уже пустую таблицу и идёт сообщении об ошибке.Первое поле Integer и ключевое.
begin
Table1.Active:=True;
IfTable1.IsEmpty<>True then
begin
Table1.Last;
forn:=Table1.RecordCount downto1 do
Table1.Delete;
end;
Table1.Active:=False;
...
Table1.Active:=True;
Table1.Insert;
Table1.Fields[0].AsInteger:=Nomer1;
TableResult.Fields[1].AsString:=String1;
TableResult.Post;
alexvan (2002-08-16 13:46:00) [1]ТО LERAN2002СПАСИБО!!!
Leran2002 (2002-08-16 13:44:00) [2]Все отправил...
alexvan (2002-08-16 13:18:00) [3]ТО LERAN2002я только что проверил через Database Desktop. Именно так и есть. Буду очень признателен. Только шли еа мыло alex-gala@yandex.ru.
СПАСИБО ВСЕМ
alexvan (2002-08-16 13:09:00) [4]Table1.Active:=True;
>>Table1.Insert;
>>Table1.Fields[0].AsInteger:=Nomer1;
>> TableResult.Fields[1].AsString:=String1;
>> TableResult.Post
Естественно Table1. Это моя ошибка когда писал в форум. В проге всё ОК
Leran2002 (2002-08-16 13:08:00) [5]
> alexvan © (16.08.02 13:02)
У тебя наверное индекс накрылся, хочешь утилитку вышлю для проверки и востановления Парадоховских таблиц.
ZrenBy (2002-08-16 13:04:00) [6]>>Table1.Active:=True;
>>Table1.Insert;
>>Table1.Fields[0].AsInteger:=Nomer1;
>>TableResult.Fields[1].AsString:=String1;
>>TableResult.Post
Так Table1 или TableResult ?
alexvan (2002-08-16 13:02:00) [7]Люди! Суть то не в удалении, а в Key Violation. Таблица пустая(проверено).
TO Johnman: Данный метод удаления приведён в качестве примера (Вл.Гофман, А.Хомоненко DELPHI 6), а сию строку while not Table1.EOF do Table1.Delete; я тоже пробовал
VAleksey (2002-08-16 12:57:00) [8]пардон написал поздно :)) господа sniknik © и Leran2002 © действительно еще правее чем господин Johnmen © :))
удачи ...
Leran2002 (2002-08-16 12:55:00) [9]> Table1.Active:=True;
> If Table1.IsEmpty<>True then
> begin
> Table1.Last;
> for n:=Table1.RecordCount downto 1 do
> Table1.Delete;
> end;
> Table1.Active:=False;
// Метод EmptyTable очищает таблицу, удаляя из нее все записи.
// Перед удалением таблица должна быть закрыта.
Table1.EmptyTable;
VAleksey (2002-08-16 12:55:00) [10]вообще надо все переписать покороче
begin
Table1.Active:=True;
If not Table1.IsEmpty then
while not Table1.EOF do Table1.Delete;
Table1.Active:=False;
...
Table1.Active:=True;
Table1.Insert;
Table1.Fields[0].AsInteger:=Nomer1;
TableResult.Fields[1].AsString:=String1;
TableResult.Post;
этот код для твоего размышления :)). А вообще
> Johnmen © (16.08.02 12:50)
на самом деле дал исчерпывающий ответ.
PS
Смотри, чтобы твой Nomer1 не содержал повторяющихся значений.
sniknik (2002-08-16 12:54:00) [11]а Table1.EmptyTable не быстрее будет?
Johnmen (2002-08-16 12:50:00) [12]Нельзя так удалять !!!
Вот так
while not Table1.EOF do Table1.Delete;