Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Видимо нужен запрос в запросе??? / 11 сообщений из 11, страница 1 из 1
07.08.2009, 08:17
    #36131494
_Maverick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
Друзья, столкнулся со следующей проблемой.
Есть 5 серверов Oracle.
Посредством программы VBA Excel, написан следующий макрос с инструкцией SQL
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Sub macros()

endrow =  1 
sql_txt = "SELECT dept.ID_DEPARTMENT, cl.NAME, dept.NICKNAME, i.ID_ITEM, i.NAME, il.QTY " & _
          "FROM SDD.CLIENT cl, SDD.DEPARTMENT dept, SDD.ITEM i, SDD.ITEMLIST il " & _
          "WHERE cl.ID_COMPANY = dept.ID_COMPANY And cl.ID_CLIENT = dept.ID_CLIENT And il.ID_ITEM = i.ID_ITEM And il.ID_DEPARTMENT = dept.ID_DEPARTMENT And ((i.ID_ITEM = 3020))"

For row_str =  1  To  5 
server_nick = Sheets("serverlist").Cells(row_str,  1 )

source_txt = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=grabovskiyaa;PWD=avt231090;SERVER=ora" & server_nick & ".ntdomain.prk;"
destination_cell = "A" & endrow

Call sql_query

Cells(Rows.Count,  1 ).Select
Selection.End(xlUp).Select
endrow = ActiveCell.Row +  1 

destination_cell = "A" & endrow
Range(destination_cell).Select
Next row_str


End Sub

Sub sql_query()
'
' Макрос1 Макрос
'

'
    With ActiveSheet.ListObjects.Add(SourceType:= 0 , Source:=source_txt, Destination:=Range(destination_cell)).QueryTable
        .CommandText = sql_txt
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
   ' .ShowHeaders = False     'заголовки
        .RefreshPeriod =  0 
        .PreserveColumnInfo = False
        .ListObject.DisplayName = "Таблица_Запрос_из_Одинцово"
        .Refresh BackgroundQuery:=False
    End With
End Sub
Который ходит по серверам и собирает однотипные данные и помещает их на лист один за другим.
Однако результат получается таким (см.вложение)
Как сделать нормальную табличку с одним заголовком?
Никак не могу сообразить. Спасайте!!!
...
Рейтинг: 0 / 0
07.08.2009, 08:38
    #36131510
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
вложения нет.
но, если правильно понял, то могу предложить такой вариант с использованием ADODB:
1) все объекты объявляем Connection, Recordset
2) в цикле пробегаемся по всем Вашим серверам и выполняем запрос
3) используем CopyFromRecordset для выдачи данных запроса на лист


по поводу заголовков. Если у Вас запросы одни и теже, то проще самому прописать заголовки
если запросы могут менятся, то в этом случае при первом прохождении цикла, пройтись по Resordset.Fields и вытащить от туда названия столюцов

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
10.08.2009, 09:33
    #36134318
_Maverick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
HandKot,

Какие объекты ты имеешь ввиду? Сами таблицы или сам запрос?
...
Рейтинг: 0 / 0
10.08.2009, 14:01
    #36134977
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
под объектами я понимаю ОБЪЕКТЫ доступа к данным из класса ADODB (ActiveX Data Object )
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
10.08.2009, 16:41
    #36135474
_Maverick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
HandKotпод объектами я понимаю ОБЪЕКТЫ доступа к данным из класса ADODB (ActiveX Data Object )
I Have Nine Lives You Have One Only
THINK!

Сорри, конечно! Но ничего пока не понял..
Можешь написать запрос скриптом....? Все перепробовал. Не получается Connection Recordset
...
Рейтинг: 0 / 0
10.08.2009, 19:18
    #36135808
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
_Maverick,
Никогда не используй ActiveSheet, ActiveCell, Selection и подобные костыли когда пишешь для Экселя.

Проще всего: создай один раз книгу с пятью листами, на каждый лист положи запрос.
Потом либо тыкай в кнопку "обновить все", либо пробегай в макросе по всем листам и для всех имеющихся там запросов дергай метод refresh().
...
Рейтинг: 0 / 0
11.08.2009, 08:49
    #36136187
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
White Owl Проще всего: создай один раз книгу с пятью листами, на каждый лист положи запрос.
ему нужно в одном листе

вот подобный пример

и вообще в поиск

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
11.08.2009, 17:15
    #36137737
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
HandKotWhite Owl Проще всего: создай один раз книгу с пятью листами, на каждый лист положи запрос.
ему нужно в одном листеХорошо, исправляюсь: создай пять запросов на листе... дальше по тексту.
...
Рейтинг: 0 / 0
12.08.2009, 08:36
    #36138474
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
White Owl
Никогда так не делал.
А как эти запросы распределять по листу?

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
12.08.2009, 18:40
    #36140312
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
HandKot White Owl
Никогда так не делал.
А как эти запросы распределять по листу?Да как угодно. QueryTable запоминает область куда она положила таблицу при первом запросе, а потом при нужде вставляет/удаляет строки и колонки при перезапросе данных с сервера.
...
Рейтинг: 0 / 0
13.08.2009, 16:14
    #36142341
_Maverick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимо нужен запрос в запросе???
Решил свой вопрос Сводной таблицей, которая ссылается на постоянный диапазон
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Видимо нужен запрос в запросе??? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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