Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Connect / 11 сообщений из 11, страница 1 из 1
05.04.2006, 19:21
    #33647407
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Как правильно сделать следующее:

Может быть несколько подключений от 1-го -"Рабочая база" до 12 скажем
Январь, Февраль,... Декабрь.

Структура баз во всех случаях одна и та жэ.

Возникает необходимость выполнять однотипные действия, переберая эти базы.
Действия такие:

Код: plaintext
Conn.Execute и  Rs1.Open("......"),Conn
Как правильно написать процедуру, что бы в нее передовать именно тот Conn.
который я хочу.

Код: plaintext
1.
2.
3.
типа Sub BaseAcction (ConnName as ?????...
Conn.Execute и  Rs1.Open("......"),Conn
conn.close
end sub

Спасибо.
...
Рейтинг: 0 / 0
05.04.2006, 19:52
    #33647457
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
На вскидку примерно так:
Создаем модуль:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Dim mCol As Collection

Public Property Get Conn(ByVal ConnName As String) As ADODB.Connection
   Set Conn = mCol(ConnName)
End Property


Public Sub ConnectToBase(ByVal ConnString As String)
   Set mCol = New Collection
   Add ConnString, "Январь"
   Add ConnString, "Февраль"
   Add ConnString, "Март"
   '...
End Sub

Private Sub Add(ByVal ConnString As String, ByVal CustomBase As String)
   Dim ConnX As ADODB.Connection
   Set ConnX = New ADODB.Connection
   ConnX.CursorLocation = adUseClient
   ConnX.Open Replace(ConnString, "GeneralBase", CustomBase)
   mCol.Add ConnX
End Sub

Public Sub Main()
   ConnectToBase "Provider=... ;Initial Catalog=GeneralBase;... "
   'GeneralBase - это наше соглашение об именовании БД
End Sub
Открываем рекордсет так:
Код: plaintext
   rs.Open "select...", Conn("Январь"), adOpenStatic, adLockReadOnly, adCmdText
...
Рейтинг: 0 / 0
06.04.2006, 00:28
    #33647701
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Спасибо, думаю разберусь.
...
Рейтинг: 0 / 0
06.04.2006, 11:09
    #33648297
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Ошибку в примере сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Add(ByVal ConnString As String, ByVal CustomBase As String)
   Dim ConnX As ADODB.Connection
   Set ConnX = New ADODB.Connection
   ConnX.CursorLocation = adUseClient
   ConnX.Open Replace(ConnString, "GeneralBase", CustomBase)
   mCol.Add ConnX, CustomBase 'вот здесь
End Sub
...
Рейтинг: 0 / 0
06.04.2006, 14:25
    #33649112
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Ругается на
Код: plaintext
Set Conn = mCol(ConnName)

Run time error 91.

Код: plaintext
Conn(ByVal ConnName As String) As ADODB.Connection

не устанавливает Conn как As ADODB.Connection.

или я туплю?
...
Рейтинг: 0 / 0
06.04.2006, 14:59
    #33649248
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Вопрос снимается.
Прошу прощения, принцып работы понятен, разберусь.
...
Рейтинг: 0 / 0
06.04.2006, 17:35
    #33650034
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Спасибо за идею, все работает на ура!
Помог!
Только при выполнении ConnectToBase, открываются сразу все Connect's , если 1-год то 12, 2 то 24, и т.д.

Вопрос такой: Будет ли тормозить лет через 10 12*10=120?
Если да, то ограничусь парой предыдущих лет.
Спасибо.
...
Рейтинг: 0 / 0
06.04.2006, 17:43
    #33650084
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Если все эти базы живут на одном сервере, то еще как будет.
...
Рейтинг: 0 / 0
06.04.2006, 18:02
    #33650155
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Понятно, буду иметь ввиду.
...
Рейтинг: 0 / 0
06.04.2006, 18:13
    #33650192
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
Буду бить по 12 шт. т.е. текущий месяц -12. Спасибо всем за советы, и участие.
...
Рейтинг: 0 / 0
06.04.2006, 18:28
    #33650238
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connect
если это MS SQL, то может лучше установить 1 соединение
к базе master и писать полностью запросы (с указанием имени базы)

Код: plaintext
1.
2.
SELECT * FROM MyBase..Table1
SELECT * FROM MyBase1..Table1
SELECT * FROM MyBase2..Table1
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Connect / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]