Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > подключение видов MS SQL


Автор: Euclid 25.4.2005, 15:42
В процессе разоработки постоянно приходится коннектиться к видам на MS SQL.
Использую процедуру
DoCmd.TransferDatabase acLink, "ODBC", connectway, acTable, remotename, TableName

Каждый раз выскакивает формочка предлагающая выбрать уникальный ключ для этого вида (таблицы).

Как можно это автоматизтровать?
Как в процедуру TransferDatabase передать имена полей для ключа?

Автор: Papirus 25.4.2005, 15:58
А через ADO не удобно?
По существу вопроса, честно говоря, не знаю, что подсказать, поскольку ODBC для коннекта не использую. Но верю что это вам необходимо. Так что мой вопрос можно считать риторическим. smile

Автор: Akina 25.4.2005, 15:58
А может коннектиться через ADO? Recordset.ActiveConnection... там вроде этой проблемы нет...
Добавлено @ 15:59
Papirus smile

Автор: Papirus 25.4.2005, 16:03
Akina smile
Наливаю! smile

Автор: Euclid 25.4.2005, 18:20
Я не знаю какой коннект.
Я беру меню Файл и коннектусь. Выскакивает формочка с вопросом о ключе.
Поскольку таблиц много, то написал цикл по таблицам, в котором использую эту процедуру (TransferDatabase). И на каждом виде надо сидеть и выбирать ключ. Это долго и чревато ошибками. Хотелось бы для каждоговида в табличку занести имена ключевых полей и чтобы программа при коннекте сама брала поля из таблицы.

Автор: Papirus 26.4.2005, 08:29
Код

Dim cnn As New ADODB.Connection, rs As New ADODB.Recordset

On Error GoTo err_ex

cnn.CursorLocation = adUseClient
cnn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" _
    & "Initial Catalog=MyDB;Data Source=MyServer;Trusted_Connection=yes;" 'User Id=sa;Password=;"
rs.CursorLocation = adUseClient
rs.Open "Select Field1,Field2...FieldN From MyView1", cnn, adOpenKeyset,adLockOptimistic
Forms!MyForm1.Recordsource = rs

Автор: Euclid 26.4.2005, 16:40
Спасибо!

Я неправильно объяснил.
Соединение с таблицей или видом - статическое- видимое в окне Database.

Я не в процедуре или в форме коннектюсь.
Для отладки я меняю Базы на севере и после заново коннекчусь ко всем таблицам в базе.

Автор: Papirus 27.4.2005, 11:09
Цитата(Euclid @ 25.4.2005, 15:42)
В процессе разоработки постоянно приходится коннектиться к видам на MS SQL.
Использую процедуру
DoCmd.TransferDatabase acLink, "ODBC", connectway, acTable, remotename, TableName

И
Цитата(Euclid @ 26.4.2005, 16:40)
Я не в процедуре или в форме коннектюсь.


smile

Автор: Euclid 27.4.2005, 16:18
Dim cnn As New ADODB.Connection, rs As New ADODB.Recordset

On Error GoTo err_ex

cnn.CursorLocation = adUseClient
cnn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" _
& "Initial Catalog=MyDB;Data Source=MyServer;Trusted_Connection=yes;" 'User Id=sa;Password=;"
rs.CursorLocation = adUseClient
rs.Open "Select Field1,Field2...FieldN From MyView1", cnn, adOpenKeyset,adLockOptimistic
Forms!MyForm1.Recordsource = rs

Мне не надо делать последнюю команду.
Можно сказать так, что у меня вообще нет форм. У меня много таблиц и видов на сервере. К ним надо подконненктитится, чтобы они были на вкладке таблицы. Без всяких форм.
Есть один макрос, который в цикле по именам таблиц вызывает встроенную процедуру
DoCmd.TransferDatabase acLink, "ODBC", connectway, acTable, remotename, TableName

И она (TransferDatabase!) для каждого вида выкидывает запрос на ключ.
Как ей подсунуть имена полей, чтобы не сидеть и вручную не выбирать поля.
Когда таблиц и видов сотни!

Автор: Akina 27.4.2005, 16:22
Euclid
слушай, а у тебя ADP или MDB???

Автор: Euclid 27.4.2005, 17:18
Access 2003
обычный файл mdb.

Автор: Papirus 28.4.2005, 09:49
Цитата(Euclid @ 27.4.2005, 16:18)
Можно сказать так, что у меня вообще нет форм. У меня много таблиц и видов на сервере.

На сервере лежит файл MDB??? или используется SQL server?

Я б сказал оч разные вещи!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)