ADO: Удалить прилинкованную таблицу

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

ADO: Удалить прилинкованную таблицу

Сообщение Nicky » 29.11.2006 (Ср) 18:17

Я правильно понимаю, что удалить линк на таблицу в сторонней базе можно просто дропнув таблицу (а по сути линк) в целевой? Проверил, вроде работает, линк дропает, источник нет. Но хотелось бы узнать, правильно это или есть более коррэктный способ. Линкую так (фрагмент):
Код: Выделить всё
Function ADOCreateTableLink(sLinkBase As String, sLinkTable As String, ...) As Boolean
  Dim cat As New ADOX.Catalog, tbl As New ADOX.Table
  On Error GoTo er

  cat.ActiveConnection = cn
  tbl.Name = sLinkTable
  Set tbl.ParentCatalog = cat
 
  tbl.Properties("Jet OLEDB:Link Datasource") = sLinkBase
  tbl.Properties("Jet OLEDB:Remote Table Name") = sLinkTable
  tbl.Properties("Jet OLEDB:Create Link") = True
  cat.Tables.Append tbl
 
  ADOCreateTableLink = True
  GoTo ok

er:
  sErr = Err.Description
ok:
  Set cat = Nothing
End Function

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: ADO: Удалить прилинкованную таблицу

Сообщение GSerg » 29.11.2006 (Ср) 19:20

Nicky писал(а):Я правильно понимаю, что удалить линк на таблицу в сторонней базе можно просто дропнув таблицу (а по сути линк) в целевой? Проверил, вроде работает, линк дропает, источник нет.

По прочтении сего потерял нить желаемого автором.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.11.2006 (Чт) 7:33

Что непонятного? Прилинковал таблицу, теперь хочу избавиться от линка. Дропать или не дропать - вот чем не вопрос?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.11.2006 (Чт) 9:28

Nicky писал(а):Что непонятного? Прилинковал таблицу, теперь хочу избавиться от линка. Дропать или не дропать - вот чем не вопрос?


Жесть, что то я не понял тебе что нужно убить линк или саму таблицу?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 30.11.2006 (Чт) 12:02

Nicky писал(а):Что непонятного? Прилинковал таблицу, теперь хочу избавиться от линка. Дропать или не дропать - вот чем не вопрос?

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

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.11.2006 (Чт) 15:06

lord0n писал(а):Жесть, что то я не понял тебе что нужно убить линк или саму таблицу?

Nicky писал(а):Что непонятного? Прилинковал таблицу, теперь хочу избавиться от линка.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 15:24

если удалить исходную таблицу, то линк в другой базе на нее все равно останется, только ошибку будет давать приобращении 8)

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.11.2006 (Чт) 15:40

Ок, спасибо. Дропать, так дропать!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.11.2006 (Чт) 15:45

Какой же всё-таки бред в этом топике.

Nicky, прикинь, я до сих пор не понимаю, что и откуда тебе надо удалить. А совет Konst_One (который, как я сильно подозреваю, вообще не к месту) только ещё больше всё запутал.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 15:52

серж, но мы то друг друга поняли, а ты это к чему :?:

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.11.2006 (Чт) 16:04

Nicky писал(а):Что непонятного?

Есть база c:\base1.mdb, в ней таблица t1. Есть база c:\base2.mdb, в ней таблица t2. Я прилинковал таблицу t2 к базе base1.mdb. Т.е., когда я открываю базу c:\base1.mdb в Access, я вижу в ней две таблицы: t1 и t2 (ёмаё, кому я объясняю?), при чем таблица t2 отображается с такой стрелочкой... черной... слева направо..., что указывает на то, что таблица является прилинкованной. Теперь я хочу удалить из базы c:\base1.mdb связь с таблицей t2 базы c:\base2.mdb. Внимание вопрос: cn.Execute "Drop table t2" (при условии, что cn as ADODB.Connection, и подключена к c:\base1.mdb) - необходимое и достаточное для этого действие?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.11.2006 (Чт) 16:05

Я даже сомневаюсь, что вы друг друга поняли.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.11.2006 (Чт) 16:06

GSerg писал(а):...А совет Konst_One (который, как я сильно подозреваю, вообще не к месту) только ещё больше всё запутал...

Не, все к месту.
Konst_One писал(а):если удалить исходную таблицу, то линк в другой базе на нее все равно останется, только ошибку будет давать приобращении 8)

А линк после этого убивается так же? Drop?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.11.2006 (Чт) 16:13

Nicky писал(а):<ненужное поскипано>
Теперь я хочу удалить из базы c:\base1.mdb связь с таблицей t2 базы c:\base2.mdb. Внимание вопрос: cn.Execute "Drop table t2" (при условии, что cn as ADODB.Connection, и подключена к c:\base1.mdb) - необходимое и достаточное для этого действие?

Ну да, всё правильно, вы не поняли друг друга.
Konst_one, вполне очевидно, говорил о дропе исходной таблицы, а тебе нужен только линк.
Не знаю, будет ли этого достаточно, т.к. и добавляю, и дропаю линкованные таблицы через ADOX. Но по логике, будет.
И нет, дропать исходник не надо.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 16:20

у как заморочено, но главное теперь все разобрались :D

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.11.2006 (Чт) 16:21

GSerg, ты чего? Все мы поняли. Konst_one просто указал на возможные проблемы, я эти проблемы уже заметил, но мне они не будут мешать, если верно, что:
Nicky писал(а):А линк после этого убивается так же? Drop?

А можно заценить твой способ через ADOX, т.к. думаю, что так все же более по науке? :)


Вернуться в Базы данных

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron