powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / уникальная уникальность
19 сообщений из 19, страница 1 из 1
уникальная уникальность
    #39823452
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет народ.
Есть хотелка реализовать следующее, два поля - текстовое и логическое. Текстовое и логический 0 повторятся могут, а текстовое и логический 1 только в одном экземпляре.
текстбултекст0текст0текст1текст1 - ошибка
Но сдается мне, просто индексом тут не обойтись, так?
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823457
PWW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

Так.
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823486
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В рамках MS Access - нет. И триггеры (даже если версия позволяет) не помогут - в них можно использовать только скалярные функции, ни пользовательские, ни по подмножеству (типа DCount) недопустимы.

Так что только контроль на уровне интерфейса.
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823564
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikНо сдается мне, просто индексом тут не обойтись, так?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub ADD_CONSTRAINT()'установить ограничение
CurrentProject.Connection.Execute _
"ALTER TABLE [Таблица] ADD CONSTRAINT CountRec1 CHECK " & _
"((SELECT [текст] FROM [Таблица] WHERE [бул] GROUP BY [текст] HAVING Count([текст])>1)=0);"
End Sub

Public Sub Drop_CONSTRAINT()'снять ограничение - вдруг понадобится
CurrentProject.Connection.Execute _
"ALTER TABLE [Таблица] DROP CONSTRAINT CountRec1;"
End Sub


Как-то так...
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823566
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот код только установить ограничение, далее само работать будет...
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823588
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а CHECK это для какой версии?
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823698
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikа CHECK это для какой версии?Версии чего? Ты думаешь я историк?
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823714
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikТекстовое и логический 0 повторятся могут, а текстовое и логический 1 только в одном экземпляре.
возможно суммировала бы столбец БУЛ, сумма должна быть более -2 , т.е 0 или -1
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823718
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургdidgikа CHECK это для какой версии?Версии чего? Ты думаешь я историк?
Аксесса или MS jet.
Я попробовал в аксесе запустить этот запрос через мастер запросов, он ругнулся на check
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823816
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik, а ты думаешь зачем я код написал? Можешь попробовать переключить SQL на ANSI 92, но ради установки одного ограничения я бы этого делать не стал...
...
Рейтинг: 0 / 0
уникальная уникальность
    #39823818
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikзапустить этот запрос через мастер запросовqbe может создать не все запросы...
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824122
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургdidgik, а ты думаешь зачем я код написал? Можешь попробовать переключить SQL на ANSI 92, но ради установки одного ограничения я бы этого делать не стал...
Ага. Переключил на ANSI 92 запрос сработал. И тут возникло 2 вопроса.
1. Чем плох ANSI 92
2. Как этот Cheсk должен сработать? Я попробовал сделать доблирующие поля, получилось и никаких ошибок не выдало.

Тут, наверно, надо озвучить, что я работаю с базой MS jet через АДО, а акссес использую для проверок и экспериментов, а потом все перевожу в код через АДО.
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824130
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

1. Плох тем, что иногда Access закрывается крашем да так, что файл потом невозможно восстановить. Правда такое случается не так часто, но бывает. Сам восстанавливал свои базы через бекапы в таких случаях, но не иначе.

2. Идея Панурга верная, только чуть-чуть по другому надо было написать. Нажмите Ctrl+G и там 1 раз запустите вот такой код:

Код: vbnet
1.
CurrentProject.Connection.Execute "ALTER TABLE [Таблица] ADD CONSTRAINT Нельзя_2_раза_TRUE CHECK (DCount('*', [Таблица], 'бул=TRUE') < 2);



Как только 2 раза попробуете ввести TRUE, то получите ошибку, в тексте которого и будет название констрейнта "Нельзя_2_раза_TRUE".
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824135
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему нельзя сделать уникальный индекс по двум полям?
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824144
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа почему нельзя сделать уникальный индекс по двум полям?
не по ТЗ

2 didgik
Выше уже предлагали решать на уровне интерфейса, не?
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824164
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа почему нельзя сделать уникальный индекс по двум полям?Наверное, потому. чтоdidgikТекстовое и логический 0 повторятся могут,
а текстовое и логический 1 только в одном экземпляре.
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824167
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubucha2 didgik
Выше уже предлагали решать на уровне интерфейса, не?
Предлагали, но это было б слишком просто.
В итоге год панурга прокатил, теперь надо внедрить в прогу и посмотреть как будет работать.
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824268
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikЯ попробовал сделать доблирующие поля, получилось и никаких ошибок не выдало.Не недо грязи! всё работает. Условие - нельзя текстовое поле Null.

didgikКак этот Cheсk должен сработать?Мне думается это видно. Условие - ни одной записи не должен выводить запрос.

Почитать бы неплохо литературку.
...
Рейтинг: 0 / 0
уникальная уникальность
    #39824280
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, я чуть выше написал что все заработало, был касяк у меня, но подумал, вдруг из аксесса не работает и надо через код, но в итоги все нормально, спасибо.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / уникальная уникальность
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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