Страницы: 1
RSS
Фильтрация. Оставить строки с датами последних 30 дней
 
Камрады!

Я создал макрос, который подлючается к базе данных SQL

Код
Sub Macro2()
'
' Macro2 Macro
'

'
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=SQLOLEDB.1;Password=xdr5%RDX;Persist Security Info=True;User ID=OptimalAdmin;Data Source=OTVSQL02;Use Procedure for Pre" _
        , _
        "pare=1;Auto Translate=True;Packet Size=4096;Workstation ID=VCHARNY-G2;Use Encryption for Data=False;Tag with column collation wh" _
        , "en possible=False;Initial Catalog=PerformanceResults"), Destination:=Range( _
        "$A$1")).QueryTable
        .CommandType = xlCmdTable
        .CommandText = Array( _
        """PerformanceResults"".""dbo"".""BenchmarkTestsSummary""")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceConnectionFile = _
        "C:\Users\VCharny\Documents\My Data Sources\OTVSQL02 PerformanceResults BenchmarkTestsSummary1.odc"
        .ListObject.DisplayName = _
        "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1"
        .Refresh BackgroundQuery:=False
    End With


Таблица огромная и после того как данные отображаются,
- делаю сортировку по нужным мне парметрам
- scrolling
- cut
- открываю новые tab
- удаляю из таблицы несколько десятков колонок, так как они мне не нужны для статистики
...


типа вот таких блоковЖ
Код
ActiveSheet.ListObjects( _
        "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1").Range.AutoFilter _
        Field:=3, Criteria1:="QAPerformanceVertica"

 Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    ActiveSheet.ListObjects( _
        "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1").Range.AutoFilter _
        Field:=1, Criteria1:=Array("7.4.4247.0", "7.4.4280.0", "7.4.4340.0"), _
        Operator:=xlFilterValues

ActiveWindow.SmallScroll ToRight:=3
    Range("H:H,I:I,J:J,K:K,L:L,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S").Select
    Range( _
        "Table_OTVSQL02_PerformanceResults_BenchmarkTestsSummary1[[#Headers],[Extract data:     Analyze_Statistics]]" _
        ).Activate

Всё это отображается в макросе

3 основных вопроса:

1. Как можно оспользовать QUERY, который делает всё эту фильтрацию, а не тащит в макросе, все действия, чтобы макрос просто запустил QUERY
   или что-то похожее.
2, Как можно в синтаксисе макроса, прописат слеуюший фильтр для столбца Даты:
-> Текущая дата -30 дней
3, Чтобы такая фильтрация была применима для 10 tab одновременно (каждый по своему дополнительному стрингу)

Т.е. задача при каждом открытие .xmls файла, чтобы вытаскивались автоматически -30 дней данных от текущей из базы данных
Изменено: vikonder - 22.04.2020 18:10:12
 
Из тысяч строк DB меня каджый день интересуют 30, с фильтром по дате,
который привязан к текущей дате...

Т.е. - Открыл xmls файл - запустился макрос, который по фильтру даты вытащит последние 30 дней....

Я пытался просто использовать From MS Query, чтобы внутри прописать готовый запрос к базе данных на SQL
но Wizard не видит нужной мне таблицы...
Только через Legacy Wizard, я могу выбрать из списка нужную мне таблицу
Страницы: 1
Наверх