|
|
|
| Здравствуйте все!
Возникла проблема, которую сам пока решить не могу.
База данных на сервере (M SQL 2005) содержит таблицы и представления. В приложении на Access (MO'2003) устанавливаются связи (связанные таблицы) с этими таблицами/представлениями на сервере. Связи устанавливаются программным путем (VBA/DAO), и здесь вопросов нет, все нормально работает.
Для некоторых связанных таблиц нужно выбрать и установить поле (группу полей), которые бы однозначно определяли запись, т.е. установить ключ/индекс (уникальный). Вручную это делается элементарно, но нужно-то сделать программным путем (VBA/DAO), вот в чем вопрос.
Кто знает как, подскажите.
Заранее спасибо | |
|
| |
|
|
|
| Что бы сократить кол-во уточняющих вопросов
"Вручную это делается элементарно" - как? | |
|
| |
|
|
|
| Открыть файл M Access 2003\ Таблицы\ Правая кнопка\ Связь с таблицами\ Тип файла - ODBC\ Источник - выбрать нужную БД на сервере\ Выбор таблицы/представления\ Окно выбора полей для единственности записей\ ОК | |
|
| |
|
|
|
| А такой вопрос у всех ли таблиц есть Primary Key? | |
|
| |
|
|
|
| может быть выполнить запрос с командами
Create/Drop Index
? | |
|
| |
|
|
|
| Это я уже пытался делать - пока безрезультатно. | |
|
| |
|
|
|
| ALTER TABLE ИмяТаблицы
ADD CONSTRAINT PK_Какое_либо_Имя
PRIMARY KEY ( Ключевое_поле_таблицы) | |
|
| |
|
|
|
| По аналогии можно добавлять и форейджин кеи | |
|
| |
|
|
|
| Это, к сожалению, совсем не то, что надо: ваш текст создает ключ на сервере и только для таблицы, а надо в приложении, и притом как для таблицы, так и для представления.
Но другие ребята подсказали, и получилось вот что:
прилагаю фрагмент своего кода, который работает как надо:
Set tdf = dbs.CreateTableDef(Tbl)
tdf.Connect = ODBC_String
tdf.SourceTableName = Tbl
dbs.TableDefs.Append tdf
dbs.Execute "CREATE INDEX PK_" & Tbl & " ON " & Tbl & "(Ключ)"
Здесь dbs - текущая база данных, Tbl - переменная, содержащая имя таблицы или представления на сервере/связанной таблицы в приложении, ODBC_String - строка связи с сервером. | |
|
| |