Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо