powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Видимо нужен запрос в запросе???
11 сообщений из 11, страница 1 из 1
Видимо нужен запрос в запросе???
    #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
Видимо нужен запрос в запросе???
    #36131510
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вложения нет.
но, если правильно понял, то могу предложить такой вариант с использованием ADODB:
1) все объекты объявляем Connection, Recordset
2) в цикле пробегаемся по всем Вашим серверам и выполняем запрос
3) используем CopyFromRecordset для выдачи данных запроса на лист


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

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

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

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

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

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

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

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

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


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