Удаление или изменение связей таблицы Access2000

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Удаление или изменение связей таблицы Access2000

Сообщение Rojohn » 08.05.2008 (Чт) 16:47

Добрый день!
Пытаюсь удалить все связи, исходящие из избранных таблиц базы Access2000. Удаляются не все связи, а какая-то их часть. Подскажите, почему так происходит? И как удалить все связи таблицы одним махом? Вот мой код:
Код: Выделить всё
On Error Resume Next
    For I = 0 To db1.Relations.Count
      Select Case db1.Relations(I).Table
        Case "MODEL_T": db1.Relations.Delete db1.Relations(I).Name
        Case "MODEL_G": db1.Relations.Delete db1.Relations(I).Name
        Case "RESP_PERSON": db1.Relations.Delete db1.Relations(I).Name
        Case "RESP_LP": db1.Relations.Delete db1.Relations(I).Name
      End Select
      db1.Relations.Refresh
    Next I


Возможно ли изменить размерность связанных полей или свойства связи без предварительного удаления связи?

Спасибо за ответы!
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

?

Сообщение Rojohn » 11.05.2008 (Вс) 21:39

Кажется понял - надо указывать тип таблицы. Завтра проверю! :roll:
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Сообщение Williams » 11.05.2008 (Вс) 22:12

Тебе похоже сюда

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 11.05.2008 (Вс) 22:21

Возможно. Но насчёт удаления я кажется уже понял сам.
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

?

Сообщение Rojohn » 13.05.2008 (Вт) 17:53

Не получилось... как будто там надо по каждому связанному полю удалять!
Вот альтернативный вариант (на всякий случай):
Код: Выделить всё
Dim relNew As Relation

On Error Resume Next
    For Each relNew In db1.Relations
      With relNew
        Select Case .Table
          Case "RESP_PERSON": db1.Relations.Delete .Name
          Case "RESP_LP": db1.Relations.Delete .Name
        End Select
      End With
    Next relNew


От каждой из таблиц RESP_PERSON и RESP_LP отходят по 2-3 связи. Удаляется только одна! Странно, вроде цикл по всем связям... :?
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 15.05.2008 (Чт) 11:30

Попробовал, поставил 2 связи между двумя таблицами, первый же Case порвал обе связи сразу. Убери on error, может ошибка какая вылезет.
Пить или не пить? - да не вопрос!

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

...

Сообщение Rojohn » 22.05.2008 (Чт) 12:39

Нет, всё тоже самое. Попробуй связать одно поле одной таблицы с двумя полями двух других таблиц.
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 22.05.2008 (Чт) 14:37

Короче смысл наверное в том, что надо удалять по внешнему ключу каскадно, т.к. в случае, когда из одного поля одной таблицы исходит больше одной связи, проходя по циклу удаления, после удаления первой из этих связей, другие две исчезают из списка связей.
:arrow: Выход: узнать все имена связей без удаления, затем удалить все нужные поименно.
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 32

    TopList