Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать имя нарушенного ограничения целостности / 5 сообщений из 5, страница 1 из 1
03.08.2016, 10:46
    #39285156
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя нарушенного ограничения целостности
Доброго времени суток

Создаю таблицу и ограничение целостности:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE Table2
(
    [Id] AUTOINCREMENT,
    [Name] TEXT(255),
    [Email] TEXT(255)
);
CREATE INDEX Table2_PK ON Table2 (Id) WITH PRIMARY;
CREATE INDEX Table2_CC1 ON Table2 (Name) WITH DISALLOW NULL;
CREATE INDEX Table2_CC2 ON Table2 (Email) WITH DISALLOW NULL;



В коде VBA вставляю новую строку в эту таблицу в виде INSERT INTO Table2(Name, Email) VALUES("Petro", NULL);
При этом будет нарушено ограничение индекса Table2_CC2. Есть возможность получить имя нарушенного ограничения - "Table2_CC2"?

Это к тому, чтобы не проверять исходные данные перед вставкой/обновлением таблицы, а выдавать ответ после неудачной попытки.
...
Рейтинг: 0 / 0
03.08.2016, 11:15
    #39285176
CHECK,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя нарушенного ограничения целостности
JohnSparrow,

индекс, это "не совсем" "ограничение целостности"

Код: vbnet
1.
currentproject.Connection.Execute "ALTER TABLE Table2 ADD CONSTRAINT MyCheck CHECK (Email is not null)" 


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
---------------------------
Microsoft Visual Basic
---------------------------
Run-time error '-2147467259 (80004005)':

Одно или несколько из введенных значений нарушают условие на значение  'MyCheck', заданное для 'Table2'.  Введите значение, допускаемое выражением для данного поля.
---------------------------
ОК   Справка   
---------------------------
...
Рейтинг: 0 / 0
03.08.2016, 12:06
    #39285222
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя нарушенного ограничения целостности
Я бы проверил, но Access 2007 упорно отказывается выполнять инструкцию "ALTER TABLE Table2 ADD CONSTRAINT MyCheck CHECK (Email is not null)". Сообщает, что в предложении CONSTRAINT есть ошибка. А переключение на ANSI92 не помогает.
...
Рейтинг: 0 / 0
03.08.2016, 12:13
    #39285230
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя нарушенного ограничения целостности
JohnSparrowА переключение на ANSI92 не помогает.
Используйте ADO, DAO не поддерживает CHECK CONSTRAIN, как и каскадные удаления. currentproject.Connection - это ADO. Встроенные конструкторы основаны на DAO
...
Рейтинг: 0 / 0
03.08.2016, 12:23
    #39285242
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя нарушенного ограничения целостности
Получилось, большое спасибо всем за помощь.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как узнать имя нарушенного ограничения целостности / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]