Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему ошибка в QueryTables !! / 3 сообщений из 3, страница 1 из 1
05.07.2007, 19:10
    #34642292
PKonstantin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ошибка в QueryTables !!
Добрый вечер всем!
Помогите есть такой макрос.
В 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
05.07.2007, 22:04
    #34642489
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ошибка в QueryTables !!
Не стоит смешивать 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
06.07.2007, 09:52
    #34642920
PKonstantin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ошибка в QueryTables !!
White OwlНе стоит смешивать QueryTable и ADO. Это не даст никаких плюсов кроме головной боли. Пользуйся чем-то одним.
Спасибо за инфу, хотя с Хелпа делал.
White Owl
Если хочешь работать целиком с ADO, то после открытия рекордсета можно воспользоваться методом CopyFromRecordset и занести весь рекордсет на лист.

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


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