Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как улучшить редактор кода vbe
 
Добрый день форумчане.

Есть такой вопрос. Нельзя ли усовершенствовать редактор кода VBE?

Так как  в последнее время начал писать большой по объёму программный код с большим количеством процедур и функций хотелось бы чтобы весь код конкретной  процедуры или функции сворачивался и оставался только один заголовок.
Так сделано наверное во всех современных редакторах разных языков программирования - в 1С, C#  и многих других
Скрытый текст

Слева от программного кода есть иерархия при нажатию на элементы которой программный код может сворачиваться или разворачиваться.
Раз уж Майкрософт не заботится об этом нет ли каких-нибудь надстроек для такого усовершенствования?
Изменено: vikttur - 11.08.2021 09:43:14
SQL запрос с помощью ADODB.Recordset источник – именованная таблица excel
 

Добрый день Форумчане.

Недавно решал задачу с получением данных с помощью ADODB.Recordset   только источник был весь лист книги Эксель.

Есть ли возможность в запросе указывать источником не весь лист эксель а именованную таблицу?

Подскажите пожалуйста очень нужно !!!

В приложении файл с работающим запросом ко всему листу книги.

Макрос выполняется по кнопке "Фильтр" на Листе.

Результатом запроса является подсчёт количества строк в полученной таблице. Конечная цель конечно не простой подсчёт количества, я потом буду эти строки перебирать в цикле и анализировать.

Строка самого запроса

Код
sql_text = "Select f5,f6,f7,f8,f9,f10,f11 From [" & list_dannie & "$] 
Where (f9 > #" & Format(data1, "MM\/dd\/yy hh\:mm\:ss") & "#) and (f9 < #" & Format(data2, "MM\/dd\/yy hh\:mm\:ss") & "#)"


list_dannie – переменная типа String в ней хранится имя листа с которого происходит выборка данных.

table_istochnik  - переменная типа string  в которой хранится имя таблицы из которой нужно получить данные

Вопрос в том как использовать в запросе переменную table_istochnik вместо list_dannie .

Перепробовал кучу разных вариаций ничего не получается.

Может хотя бы подскажите в какую сторону "Рыть". И вообще возможно это или нет ?

Буду благодарен за советы.
Фильтр и Сортировка ADODB.Recordset по полю типа дата
 
 Добрый день форумчане.

У меня возникла проблема в реализации следующей задачи.
Нужно реализовать выполнение программного запроса «в коде vba» выполняющего фильтрацию по определённым полям и помещение его в переменную, для дальнейшего перебора значений там же в коде VBA.

Файл с примером во вложении.
В  файле есть 2 листа  «Фильтр_По_Строкам» и «Фильтр_По_Дате». Фильтр по строкам отрабатывает а фильтр по дате нет.
Для решения данной задачи воспользовался объектом Recordset из библиотеки Microsoft ActiveХ
Фильтр по текстовым полям отрабатывает нормальн А когда пытаюсь отфильтровать по полю типа «Дата»  находящимся в промежутке между дата1 и Дата2. Фильтрация не отрабатывает

Моё предположение что поля таблицы по которой происходит фильтрация видятся в текстовом формате поэтому синтаксис
Код
Where (f9 > " & Chr(34) & data1 & Chr(34) & "),
Не отрабатывает.

Подскажите пожалуйста правильный синтаксис для запроса с фильтрацией по дате.
Также подскажите можно ли данный запрос отсортироватьпо заданным полям.

Пример работающего запроса с фильтром по текстовым полям.
Код
«sql_text = "Select f15,f17,f18,f19,f21 From [" + list_spiski + "$] Where (f18 LIKE " & Chr(34) & nomenklatura & Chr(34) & ")
 and (f19 LIKE " & Chr(34) & nabor & Chr(34) & ") and (f21 LIKE " & Chr(34) & flus & Chr(34) & ")"»

list_spiski – Имя листа
nomenklatura – переменная в которой хранится первое условие фильтра. Данные берутся с ячейки на листе.
nabor – переменная в которой хранится второе условие фильтра. Данные берутся с ячейки на листе.
flus – переменная в которой хранится третье условие фильтра. Данные берутся с ячейки на листе.

Пример Неработающего запроса с фильтром по полю типа Дата
Код
sql_text = "Select f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19 From [" + list_dannie + "$] 
 Where (f9 > " & Chr(34) & data1 & Chr(34) & ") and (f9 < " & Chr(34) & data2 & Chr(34) & ")" 

В тексте после получения отфильтрованной таблицы не происходит никаких операций так как основная задача это правильно написать текст запроса. Чтобы получить отфильтрованную и отсортированную таблицу.

Всем заранее спасибо. Жду советов

Для работы макроса нужно зайти в меню



И включить библиотеку

  Либо более раннюю версию 2.x
Изменено: Ермолов_А_П - 04.08.2021 04:21:41
Power Query и Оператор If-Then-Else
 
[Добрый день уважаемые форумчане!!!

Хотел задать вопрос по поводу оператора If Then Else в запросе Power Query
Очень нужно сделать работающий код  “If Then Else “ как на vba  или ином языке. Принцип везде одинаков.

Создал специально простенькую задачку чтобы всем было понятно. Важен именно синтаксис, поэтому разобрав простую задачку и вникнув в синтаксис и реальные задачи смогу решать с большим количеством полей и условий.

Есть исходная таблица. Есть ячейка условия с выбором «1» или «0». В зависимости от заданного  условия «1» или «0» в итоговом запросе происходит фильтрация по полю Флаг.
Ответы типа задать параметр и через него передавать в запрос «1» или «0» не устраивают. Так как задача не настоящая в реальных задачах есть условия не только фильтрации а допустим выполнять определенную операцию – шаг в коде запроса или нет.

Например -
Если истина  тогда -  Фиильтровать по определённой  колонке
Иначе  - удалить определённый столбец и всё в таком духе.

С обычной фильтрацией я конечно бы разобрался. Нужен именно синтаксис «If Then Else» .

Код типа
Код
If a=1 then
        let    Источник =…,    #"Измененный тип" …,  
        #"Строки с примененным фильтром" ..in  
       #"Строки с примененным фильтром"
else
        let    
        Источник = …    #"Измененный тип" = …,    
        #"Удалённый Столбец"
      = Table.SelectRows(#"Измененный тип", each [Флаг] = 0)in    #" Удалённый Столбец  "

Не устраивает !!!!
Т.е. если выполняется условие то выполняется один запрос включающий много шагов. Иначе выполняется другой запрос так же состоящий из нескольких шагов.
Этот вариант я приложил. Код можете посмотреть в приложенном файле.

Он тоже не устраивает если много параметров по которым происходит выбор условий  то код становится просто монструозным и не читабельным. Да и в принципе его тяжело создать а иногда и невозможно.


1 Пункт)
Нужен код типа
Код
let    Источник =…,    
#"Измененный тип" …,                
If a=1 then                        
        #"Строки с примененным фильтром" ..                
   Else                              
       #"Удалённый Столбец"
…
#"Сортированные строки"
#"Переупорядоченные столбцы"………
in  
#"Строки с примененным фильтром"


2 Пункт )
Также Хотелось при таком написании  чтобы каждый шаг виделся так же в редакторе кода, чтобы оставалась возможность удобно просматривать и редактировать код.
Если же в оператор Then и Else прописывать целиком весь запрос то шаги этих запросов не видны и в сложном запросе где много шагов его невозможно будет отлаживать.

Если откроете во вложенном файле запрос «Запрос_Основной» то увидите следущую картину

А в «Применённые шаги» хотелось бы видеть именно все шаги

Например

Повторюсь пример простой и шагов мало но когда запрос сложный где много условий и шагов хотелось бы в условие не записывать весь запрос целиком а выбор конкретного шага в этом запросе в зависимости от условия !!!

Буду ОЧЕНЬ БЛАГОДАРЕН  если кто-нибудь откликнется и поможет решить такую сложную для меня задачу !!!

PS
Прошу прощения что без картинок так и не разобрался как их прикрепить вместо них сайт отображает много-много текста. Хотя при редактировании темы картинки отображаются корректно.
Как ссылаться на отдельную ячейку строки по индексу в запросе Power Query?
 
Смысл в том чтобы получать значения с ячеек по индексу.
Если в новый столбец присвоить значение тупо другого столбца то присвоится значение с другого столбца но с этой же строки.

Пример
Код
= Table.AddColumn(#"Добавлен пользовательский объект", "Дата3", each [Дата]) 
.
Мне же нужно получить значение с нужной мне строки.
Пример
Код
= Table.AddColumn(#"Добавлен индекс", "Дата2", each {[Индекс]-1}[Дата]

В Данном случае я добавил в запросе столбец индекса а потом в стобец Дата2 хочу получить значение из столбца Дата Но из предидущей строки.
Смысл не важен можно получить значение из следующей строки суть вопроса получение значения из другого столбца по индексу строки.
пробовал всяко и
                             = Table.AddColumn(#"Добавлен индекс", "Дата2", each [Дата]{[Индекс]-1})
Пишет ошибку и всё.

Синтаксис нарыл в интернете по ссылкам
http://excel-inside.pro/ru/blog/2018/07/13/%D0%B0%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%­D1%82%D0%BD%D1%8B%D0...
https://needfordata.ru/blog/kak-ssylatsya-na-otdelnuyu-yachejku-tablitsy-v-power-query

Пример файла прикреплён.
Страницы: 1
Наверх