powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему ошибка в QueryTables !!
3 сообщений из 3, страница 1 из 1
Почему ошибка в QueryTables !!
    #34642292
PKonstantin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер всем!
Помогите есть такой макрос.
В MsgBox rs.GetString - выводяться правильные результаты
А при передачи в Ехел, сообщение
"Не удается завершить операцию,использующую драйвер базы данных"
Затем ошибка 1004
"Недопустимый клиент доступа", при отладке останавливаеться на " .Refresh BackgroundQuery:=False"

Причем, если я использую QueryTables без ADODB, то все отрабатывает отлично, но только не через Microsoft.Jet.OLEDB.4.0 а через "ODBC;DBQ=C:\Documents and Settings\polynskiyks\Мои документы\BaziAccess\Analiz_rinka_04.mdb;DefaultDir=C:\Documents and Settings\pol" & _
"ynskiyks\Мои документы\BaziAccess;Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxS" & _
"canRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;".
если пытаюсь вставить 2-й вариант конекта, то тоже не работает.

Код: 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.
27.
28.
29.
30.
31.
32.
Sub CreateConn()
cn.Open

Dim cn As New ADODB.Connection
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\polynskiyks\Мои документы\BaziAccess\Analiz_rinka_04.mdb;Persist Security Info=False"

Dim rs As New ADODB.Recordset

Set rs = CreateObject("ADODB.Recordset")

rs.Open Source:="select * from bank", ActiveConnection:=cn
MsgBox rs.GetString

With ActiveSheet.QueryTables.Add(Connection:=rs, Destination:=Range("G2"))
    .Name = "Contact List"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = True
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod =  0 
    .PreserveColumnInfo = True
    .Refresh BackgroundQuery:=False

End With
Set cn = Nothing
End Sub
...
Рейтинг: 0 / 0
Почему ошибка в QueryTables !!
    #34642489
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стоит смешивать QueryTable и ADO. Это не даст никаких плюсов кроме головной боли. Пользуйся чем-то одним.
Если хочешь работать целиком с ADO, то после открытия рекордсета можно воспользоваться методом CopyFromRecordset и занести весь рекордсет на лист.
А если хочешь QueryTable, то убивай все обращения к ADO и делай напрямую:
Код: plaintext
1.
With ActiveSheet.QueryTables.Add(Connection:="Provider=Microsoft.Jet.... и так далее", _
      Destination:=Range("G2"), SQL:="select * from bank")
Ну и в конце концов, нельзя смешивать два типа чтения, убери "MsgBox rs.GetString"
...
Рейтинг: 0 / 0
Почему ошибка в QueryTables !!
    #34642920
PKonstantin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlНе стоит смешивать QueryTable и ADO. Это не даст никаких плюсов кроме головной боли. Пользуйся чем-то одним.
Спасибо за инфу, хотя с Хелпа делал.
White Owl
Если хочешь работать целиком с ADO, то после открытия рекордсета можно воспользоваться методом CopyFromRecordset и занести весь рекордсет на лист.

Получилось !
Ещё раз спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему ошибка в QueryTables !!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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