Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 связать таблицы-кнопкой?  [new]
Ключник
Member

Откуда: Odessa
Сообщений: 6
Подскажите, как создать связь таблиц 1 ко многим с целостностью и каскадным обновлением - по нажатию кнопки в форме.
13 дек 03, 20:38    [458829]     Ответить | Цитировать Сообщить модератору
 Может это нельзя сделать?  [new]
Ключник
Member

Откуда: Odessa
Сообщений: 6
Помогите пожалуйста разобраться! Кучу времени потратил в F1, может зря?!
Если это можно сделать, подскажите куда и что записать.
УТОЧНЯЮ ПРОБЛЕМУ! Создать таблицы и связь конечно получилось, но не так как хотелось бы. Внизу - как я это делал. Может я не понимаю и в МА97 невозможно с помощью VBA:
1) задать счётчик (хотелось бы, чтобы поле CountNain в табл.MainData и поле CountSub в табл. SubData было Автоинкрементным=счётчик)
2) сделать чтобы поле CountSub в табл. SubData использовало подстановку значений из поля CountNain табл. MainData (хотелось бы, чтобы результат был таким же как после использования мастера в режиме конструктора таблиц)
3) установить параметры объединения таблиц как в "Схеме данных" при установке связи кнопкой "Объединение..." (Объединение ВСЕХ записей из 'SubData' и только тех записей из 'MainData' , в которых связанные поля совпадают)
-----------------------это работает но не так--------
Private Sub Кнопка1_Click()

Dim БД As Database
Dim ТАБ As TableDef
Dim ПОЛЕ As Field
Dim ИмяИндекса As Field
Dim Индекс As Index
Dim СВЯЗЬ As Relation
'Создание главной таблицы
Set БД = CurrentDb
Set ТАБ = БД.CreateTableDef("MainData")
With ТАБ
.Fields.Append .CreateField("CountMain", dbLong)
.Fields.Append .CreateField("Data", dbText, 50)
End With
БД.TableDefs.Append ТАБ
БД.TableDefs.Refresh
ТАБ.Fields.Refresh
'Поле - обязательное, не пустое
Set ПОЛЕ = ТАБ.Fields("CountMain")
ПОЛЕ.Required = True
ПОЛЕ.AllowZeroLength = False
'Индекс для главной
Set Индекс = ТАБ.CreateIndex("PrimaryKey")
Set ИмяИндекса = Индекс.CreateField("CountMain")
Индекс.Fields.Append ИмяИндекса
Индекс.Primary = True
ТАБ.Indexes.Append Индекс

'Создание подчинённой таблицы
Set БД = CurrentDb
Set ТАБ = БД.CreateTableDef("SubData")
With ТАБ
.Fields.Append .CreateField("CountSub", dbLong)
.Fields.Append .CreateField("CountMain", dbLong)
.Fields.Append .CreateField("DataS", dbText, 36)
End With
БД.TableDefs.Append ТАБ
БД.TableDefs.Refresh
ТАБ.Fields.Refresh
'Запрет пустых
Set ПОЛЕ = ТАБ.Fields("CountSub")
ПОЛЕ.Required = True
ПОЛЕ.AllowZeroLength = False
'Индекс для главой
Set Индекс = ТАБ.CreateIndex("PrimaryKey")
Set ИмяИндекса = Индекс.CreateField("CountSub")
Индекс.Fields.Append ИмяИндекса
Индекс.Primary = True
ТАБ.Indexes.Append Индекс

'Установка связи
Set СВЯЗЬ = БД.CreateRelation("DataM_DataS", "MainData", "SubData")
СВЯЗЬ.Attributes = dbRelationUpdateCascade
Set ПОЛЕ = СВЯЗЬ.CreateField("CountMain")
ПОЛЕ.ForeignName = "CountMain"
СВЯЗЬ.Fields.Append ПОЛЕ
БД.Relations.Append СВЯЗЬ
БД.Relations.Refresh

Set БД = Nothing

End Sub
15 дек 03, 13:41    [459789]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить