Как да поправя брояч на полета (ADO достъп)

Случайно след продължителна работа на ADO + Access в таблицата е открита грешка - полето „брояч“ вече не е ключово. Направете го обратно - не даде няколко повтарящи се числа. Помогна само изтриването на това поле (тъй като е невъзможно да се коригира номерът на записа) и създаването му наново.
Колко програмно:
- открийте тази грешка?
- коригирайте (преиндексирайте) стойностите на това поле?

> полето „брояч“ е престанало да бъде ключово.
полето е "брояч" и не е задължително да е ключово. просто се използва най-често в този ключодържател за заместващи ключове.
така че ако някой (.) промени структурата на таблицата, достъпът (джет) няма да устои. тип програмист знае по-добре от каква структура се нуждае.

> Колко програмно:
> - откриване на дадената грешка?
95% от системните грешки седят на 30-40 см пред монитора.

> - коригирайте (преиндексирайте) стойностите на това поле?
изтрийте дубликати (или напишете нова последователност, ако е невъзможно да изтриете), възстановете таблицата за промяна на ключ. задайте желаната стойност на брояча - променя таблицата .

> или напишете нова последователност, ако не можете да изтриете
естествено, след като преди това сменихте типа на обикновено цяло число (alter table.), и е възможно дори да не възстановите последователността (ако не е критично, няма пакети за този ключ), а просто да "измамите" всичко, когато променяйки типа на брояч, изглежда, че се брои.

1) за сметка на откриването на грешка в базата данни - мисля, че най-простото нещо е да проверите дали първото поле за идентификация в таблицата е ключово? Как може това да се провери програмно?
2) благодаря за намека! просто исках да поясня:
- променете типа на полето на Integer:
промяна на таблица [име на таблица] промяна на колона ID Цело число
- изчистваме:
Актуализация [име на таблица] Set ID = NULL
Как да попълните полето отново (с номера по ред)? Каква стойност съответства на типа поле "брояч", за да можете да го изместите обратно от Integer? И как да го направя ключов?

> Как да попълните полето отново (цифри по ред)?
> но просто "подценявайте" всичко, когато сменяте типа на брояча изглежда, че мисли от само себе си.

> Каква стойност съответства на полето тип "брояч"
информация за помощ може да бъде получена без проблеми в помощта.

> И как да го направя ключов?
> ключ за възстановяване - промяна на таблицата .

ДОБРЕ! - Благодаря!
А относно първия въпрос - ключово ли е първото поле за идентификация?
Как да проверите?


> е първото поле за идентификация ключ?

Обърнете се към INFORMATION_SCHEMA

и значението?
самото поле не променя типа/не става неключово. вие (вашата програма) го направихте, съдейки по неудържимото желание, дори с грешка, да възстановите и промените структурата само програмно.

и какво се случва? Ще премахнете знака на едно място на програмата („случи се на случаен принцип“), на друго място ще го поставите и всички препратки към ключа от други таблици ще „преминат през гората“. редът на вписванията не е гарантиран.
Не е ли по-добре да се намери източникът на „произволното изображение“? вместо да блокира „възстановяване“, което ще унищожи целия ред в базата данни.

така.
1) Индексите в двете подчинени таблици бяха „бити“. Промяната им не засяга нищо (не е прикрепено към нищо). Как бият? - може само да се гадае. mb мрежа или създаването на два записа едновременно! Може би не бях направил полетата "броячи" в тях, но след като прочетох умни книги, разбрах, че ключовото поле трябва да е във всяка таблица. Или е възможно без тях?

2) Не работи (или го правя погрешно):
ADOConnection.OpenSchema (siPrimaryKeys, VarArrayOf ([Непосочени, Неприсвоени,
"TablePL"]), EmptyParam, ADODataSetPL);
ADODataSetPL.RecordCount винаги = -1

3) Пусто промяна на ИД на колона Цяло число => Задайте ID = NULL не дава брояч - пише, че е необходимо да се създаде ново поле. Значи трябва да изтриете/създадете полето за идентификация? или, както вече попитах, можете да препълните Integer и да опитате да го направите AutoInc?