Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Установка индексов/ключей
 
 автор: MS_4G   (15.07.2008 в 17:36)   личное сообщение
 
 

Здравствуйте все!
Возникла проблема, которую сам пока решить не могу.

База данных на сервере (M SQL 2005) содержит таблицы и представления. В приложении на Access (MO'2003) устанавливаются связи (связанные таблицы) с этими таблицами/представлениями на сервере. Связи устанавливаются программным путем (VBA/DAO), и здесь вопросов нет, все нормально работает.
Для некоторых связанных таблиц нужно выбрать и установить поле (группу полей), которые бы однозначно определяли запись, т.е. установить ключ/индекс (уникальный). Вручную это делается элементарно, но нужно-то сделать программным путем (VBA/DAO), вот в чем вопрос.
Кто знает как, подскажите.
Заранее спасибо

  Ответить  
 
 автор: osmor   (15.07.2008 в 17:41)   личное сообщение
 
 

Что бы сократить кол-во уточняющих вопросов
"Вручную это делается элементарно" - как?

  Ответить  
 
 автор: MS_4G   (15.07.2008 в 20:07)   личное сообщение
 
 

Открыть файл M Access 2003\ Таблицы\ Правая кнопка\ Связь с таблицами\ Тип файла - ODBC\ Источник - выбрать нужную БД на сервере\ Выбор таблицы/представления\ Окно выбора полей для единственности записей\ ОК

  Ответить  
 
 автор: osmor   (16.07.2008 в 10:09)   личное сообщение
 
 

А такой вопрос у всех ли таблиц есть Primary Key?

  Ответить  
 
 автор: ДрЮня   (15.07.2008 в 18:30)   личное сообщение
 
 

может быть выполнить запрос с командами
Create/Drop Index
?

  Ответить  
 
 автор: MS_4G   (15.07.2008 в 19:57)   личное сообщение
 
 

Это я уже пытался делать - пока безрезультатно.

  Ответить  
 
 автор: FORMAT   (16.07.2008 в 11:36)   личное сообщение
 
 

ALTER TABLE ИмяТаблицы
ADD CONSTRAINT PK_Какое_либо_Имя
PRIMARY KEY ( Ключевое_поле_таблицы)

  Ответить  
 
 автор: FORMAT   (16.07.2008 в 12:03)   личное сообщение
 
 

По аналогии можно добавлять и форейджин кеи

  Ответить  
 
 автор: MS_4G   (16.07.2008 в 23:34)   личное сообщение
 
 

Это, к сожалению, совсем не то, что надо: ваш текст создает ключ на сервере и только для таблицы, а надо в приложении, и притом как для таблицы, так и для представления.
Но другие ребята подсказали, и получилось вот что:
прилагаю фрагмент своего кода, который работает как надо:

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 - строка связи с сервером.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList