Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос к табл на MS SQL Server2000 без ODBC, нужно сделать вставку в локальную табл 
V
    Опции темы
Atna
Дата 15.12.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



попробую сформулировать в чем проблема:

Мне необходимо подключить связанные таблицы базы на MS SQL Server 2000, не прописывая источник данных в ODBC. Это все получается.
Но т.к. мне нужно выводить какие-то данные в формах, я сделала копии связанных таблиц -> локальные таблицы
Я знаю один способ их заполнить:

Код

'соединение с базой данных на сервере
Set cn = New ADODB.Connection
cn.Provider = "SQLOLEDB"
cn.ConnectionString = "DATABASE=" & NameDB & ";SERVER=" & NameServer & ";UID=" & LogUser & ";PWD=" & Pasw & ""
cn.Open

'очищаем локальную таблицу Группы - GroupsTMP
DoCmd.RunSQL "Delete * from GroupsTMP"

Set RS_Group = New ADODB.Recordset

RS_Group.CursorType = adOpenDynamic

RS_Group.Source = "SELECT Groups.N_group, Groups.Data_Begin, Groups.Kol_vo_Group, Groups.Facult FROM Groups"

Set RS_Group.ActiveConnection = cn
RS_Group.Open

'заполняем ее из таблицы сервера
If RS_Group.EOF = False Then
   RS_Group.MoveFirst
   Do While RS_Group.EOF = False
      DoCmd.RunSQL "INSERT INTO GroupsTMP(N_group, Data_Begin, Kol_vo_Group, Facult)" _
      & " Values('" & RS_Group![N_group] & "', " & DateStr(RS_Group![Data_Begin]) & ", " & Nz(RS_Group![Kol_vo_Group], 0) & ", " & Nz(RS_Group![Facult], 0) & ")"

      RS_Group.MoveNext
   Loop
End If
----------------------------------------------

Но поскольку таблиц, которые нужно заполнить, несколько, такое заполнение слишком медленное.
Вопрос: Есть ли какой-нибудь способ сделать заполнение таблиц быстрее? Или можно ли подключить связанные таблицы таким образом, чтобы выполнить запрос следующего вида (GroupsTMP - локальная таблица, Groups - связанная)

Код

DoCmd.RunSQL "INSERT INTO GroupsTMP(N_group, Data_Begin, Kol_vo_Group, Facult)" _
& " SELECT Groups.N_group, Groups.Data_Begin, Groups.Kol_vo_Group, Groups.Facult FROM Groups"


а с описанным выше способом подключения такой запрос не выполняется

заранее спасибо за подсказку

Это сообщение отредактировал(а) Akina - 15.12.2008, 18:36
PM MAIL   Вверх
bopoha
Дата 15.12.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Скопировать все записи с SQL Server можно создав хранимый запрос к этому серверу (намного быстрее чем связанная таблица!) и использовать его в качестве источника данных в запросе на добавление. Но я не уверен что так будет намного быстрее. Скорость работы можно увеличить если отключить индексы, но это возможно для SQL Server, а не для Access (синтаксис сильно урезан и я не встречал такой возможности).

Вы рассматривали разработку программы как Access Project? Он как раз предназначен для работы напрямую с SQL Server.

Это сообщение отредактировал(а) bopoha - 15.12.2008, 18:25
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 15.12.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Модератор: Используйте тег "Код".

Добавлено через 5 минут и 8 секунд
Цитата(Atna @  15.12.2008,  19:00 Найти цитируемый пост)
Мне необходимо подключить связанные таблицы базы на MS SQL Server 2000, не прописывая источник данных в ODBC.

Можно полюбопытствовать, откуда такая экзотическая надобность?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Atna
Дата 16.12.2008, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Интерфейс к базе, который я делаю, будет размещен на неопределенном количестве компьютеров. Чтобы не бегать и не прописывать везде источник данных в ODBC, я решила поступить таким образом. 
PM MAIL   Вверх
Akina
Дата 16.12.2008, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



А создать его программно религия не позволяет?  smile 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Atna
Дата 16.12.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



 smile  
просто не умею. Подскажите как?
PM MAIL   Вверх
Akina
Дата 16.12.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



См. справку по Workspace.OpenDatabase и далее.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Atna
Дата 16.12.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Спасибо. Ничего не получается. Соединение по коду:

Код

Dim wrkODBC As Workspace
Dim conPubs As Connection
Dim conLoop As Connection
Dim rstTemp As Recordset

Set wrkODBC = CreateWorkspace("NewODBCWorkspace", _
"system", "manager", dbUseODBC)
Set conPubs = wrkODBC.OpenConnection("Connection1", _
dbDriverNoPrompt, , _
"ODBC;DATABASE=Apteka;UID=;PWD=;DSN=apteka")
Set rstTemp = conPubs.OpenRecordset("dbo.выборМ", dbOpenDynaset)


происходит только в том случае, если прописан DSN.  smile 

Это сообщение отредактировал(а) Akina - 16.12.2008, 13:08
PM MAIL   Вверх
Akina
Дата 16.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Atna @  16.12.2008,  13:56 Найти цитируемый пост)
только в том случае, если прописан DSN

Во-первых, можно таскать DSN вместе с приложением.
Во-вторых, это обычный текстовый файл, и его можно тупо создать при старте.
В третьих, никто не мешает вместо использования DSN-файла записАть в соединение строку инициализации.
В четвёртых, используя тег "Код", надо смотреть, какой тип кода применяете.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 16.12.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Atna, Используйте функцию RegisterDatabase для создания ODBC DSN. В результате строка подключения может свестись к "ODBC;DSN=MyDsn;". Весьма удобно использовать в хранимых запросах к серверу.
PM MAIL WWW ICQ Skype GTalk   Вверх
Atna
Дата 16.12.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Спасибо за помощь
PM MAIL   Вверх
Akina
Дата 16.12.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(bopoha @  16.12.2008,  14:41 Найти цитируемый пост)
Используйте функцию RegisterDatabase для создания ODBC DSN.

Собсно параметры RegisterDatabase абсолютно те же, что прописываются в свойствах Connection, если не использовать DSN  smile 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 16.12.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Akina, Connection чего?

Если хранимого запроса, то да. Для DAO без ODBC DSN не хотело вроде бы работать. Но могу ошибасть давно было.  smile 
Но как показала практика, в хранимых запросах удобнее прописать DSN один раз и только , чем базу, пользователя и пароль.

Atna, "Все решенья хороши выбирай на вкус."


Это сообщение отредактировал(а) bopoha - 16.12.2008, 17:15
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 16.12.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(bopoha @  16.12.2008,  18:13 Найти цитируемый пост)
Connection чего?

Workspace.Database.Connection, что же ещё... 

Цитата(bopoha @  16.12.2008,  18:13 Найти цитируемый пост)
"Все решенья хороши выбирай на вкус"

Однозначно... но чтобы выбирать, надо иметь выбор smile


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.