Access. SQL2000. Primary Key

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Putincev
Сообщения: 40
Зарегистрирован: 10 май 2007, 16:06

При импортировании таблиц из одной БД в другую теряются ключевые поля. Для их назначения я написал процедуру:
Set adoxTbl = New ADOX.Table
Set adoxCat = New ADOX.Catalog
adoxCat.ActiveConnection = CurrentProject.Connection

For Each adoxTbl In adoxCat.Tables

FormName = adoxTbl.Name
If Left(FormName, 4) = "tblР" Then
SQL_Vybor = "ALTER TABLE " & FormName & " " & _
"Add " & _
"CONSTRAINT PK_" & FormName & " PRIMARY KEY CLUSTERED (ID)"
DoCmd.RunSQL SQL_Vybor
End If
Next

Но если в поле параметр "Разрешить Null" включен, то поле не назначается.
Как программно отключить этот параметр?

Заранее благодарю, Андрей Путинцев
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Примари кэем называется атрибут, идентифицирующий запись. Если он пуст, то запсиь нечем идентифицировать, но если в таблице назначен примари кэй, то каждая запись должна иметь уникальный идентификатор. Так что ты спроил: "как сделать примари кэй так, чтоб он не был примари кэем?". Бред.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

1. Не надо создавать первичный ключ, если уникальность данных в новой аблицу по полю не гарантируется.
2. Можно в ALTER TABLE использовать выражение 'NOT NULL', для поля, когда пустые значения не допускаются. Таким полям ненужно быть индексами, чтобы это работало.
На заказ: VBA, Excel mc-black@yandex.ru
Putincev
Сообщения: 40
Зарегистрирован: 10 май 2007, 16:06

mc-black писал(а):1. Не надо создавать первичный ключ, если уникальность данных в новой аблицу по полю не гарантируется.
2. Можно в ALTER TABLE использовать выражение 'NOT NULL', для поля, когда пустые значения не допускаются. Таким полям ненужно быть индексами, чтобы это работало.
Вообще-то не понимаю почему, но если в тбл нет ключевого поля, то программа дает ошибки. Поэтому у меня во всех тбл есть поле ID, которое я и назначаю ключевым. В основном это поле является счетчиком (Идентификация = Да) и заполняется автоматически (с ними проблем нет), но в части тбл (Идентификация = Нет) и заполняю я это поле сам, причем, в нем тоже значение повторить нельзя, так вот с ними проблема, о которой я писал.
Я пробовал вставлять NOT NULL, но видно не туда вставлял :) ), если можно, то уточните место его в запросе и синтаксис написания
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Синтаксис написания ALTER TABLE из справки по MS Access
Синтаксис
ALTER TABLE таблица {ADD {COLUMN тип поля[(размер)] [NOT NULL] [CONSTRAINT индекс] |
ALTER COLUMN тип поля[(размер)] |
CONSTRAINT составнойИндекс} |
DROP {COLUMN поле I CONSTRAINT имяИндекса} }

Ниже перечислены аргументы инструкции ALTER TABLE:

Элемент Описание
таблица Имя изменяемой таблицы.
поле Имя поля, добавляемого в таблицу или удаляемого из нее. Имя поля, заменяемого в таблице.
тип Тип данных поля.
размер Размер поля в знаках (только для текстовых и двоичных полей).
индекс Индекс для поля. Для получения более подробных сведений о создании индекса смотрите описание предложения CONSTRAINT.
составнойИндекс Описание составного индекса, добавляемого к таблице. Для получения более подробных сведений о создании индекса смотрите описание предложения CONSTRAINT.
имяИндекса Имя составного индекса, который следует удалить.
Почему бы Вам не научиться находить информацию в файлах справки на собственном компьютере? Помогает!

Мой вам совет: если вы не знаете, что такое Primary Key и нормализация баз данных, лучше не создавайте НИКАКИХ ключей и индексов, при этом сможете хоть какими-то таблицами как-то манипулировать. А вообще Вам надо подтягивать теорию, иначе специалистом по БД никогда не станете.
На заказ: VBA, Excel mc-black@yandex.ru
Putincev
Сообщения: 40
Зарегистрирован: 10 май 2007, 16:06

mc-black писал(а):Синтаксис написания ALTER TABLE из справки по MS Access



Почему бы Вам не научиться находить информацию в файлах справки на собственном компьютере? Помогает!

Мой вам совет: если вы не знаете, что такое Primary Key и нормализация баз данных, лучше не создавайте НИКАКИХ ключей и индексов, при этом сможете хоть какими-то таблицами как-то манипулировать. А вообще Вам надо подтягивать теорию, иначе специалистом по БД никогда не станете.
Спасибо за ответ и особенно за совет, Вы абсолютно правы!
Ответить