Добрый день! есть файл Excel, в котором хранится сводная таблица, формируемая SQL запросом типа:
Код
Select * from
sales
where
sales.dt = date'2015-01-01'
Необходимо, чтобы данная сводная таблица формировалась запросом типа:
Код
Select * from
sales
where
sales.dt = date'&D'
При запуске второго скрипта в PL SQL Developer - он запрашивает значение даты и после ввода даты исполняет запрос. При замене первого запроса вторым в MS Excel - Excel конечно же не запрашивает дату, а просто выдаёт ошибку.
Вопрос: Каким образом можно передавать дату в подключение для формирования запросов без изменения кода в подключении Excel.
Для доступного понимания сути проблемы я написал скрипт в упрощенном виде. Реальный скрипт содержит дату в 8 местах, расположенные в различных местах текста.
Занимаюсь автоматизацией ежедневной отчётности - так что каждый день редактировать множество скриптов с датами в куче мест - достаточно сложно.
calve, Вы хотите в запрос SQL внести ссылкой дату из ячейки Excel? Посредством VBA или просто ссылкой? ссылкой не выйдет Можно просто прописать условие в самом sql запросе. Например текущая дата:
Сделал файл - пример (в первом посте). Левая табличка корректно загружается с заранее заданным значением даты, вторая табличка не грузится т.к. дата в ней задаётся динамически.
calve написал: Я думал, что можно макросом ссылаться на определённые ячейки,
а где ячейка/ячейки с датой?
сделайте файл согласно правил
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Доброе время суток Можно таким образом организовать. Для примера запрос к таблице на другом листе этой же книги. Файл положить, по примеру коллеги TheBestOfTheBest, в папку c:\1. Oracle для проверки, к сожалению, под рукой нет). Замечание, параметры работают только с ODBC подключением. Так что для вам нужно будет изменить ваш вариант на ODBC подключение к Oracle.
Она так и называется - "Ответить". И их даже две - вверху и внизу страницы (справа). Это на тот случай, если мышкой в поле ответа попасть не получается. Это я, как кот коту - по секрету ))
- типичная строка подключения к Oracle. Вопрос ТС был о параметризованном запросе к этой базе, возвращающем данные на лист, значения параметров которого берутся из ячеек этого или другого листа. Подошли ли ТС предложенные варианты решения и смог ли он их использовать, мы быть может узнаем, когда у ТС, судя по недвусмысленным репликам наших модераторов, освободится клавиатура и прочие устройства ввода.
Ничего из вышеперечисленного не помогло. Помог google, который подсказал создать кнопку, где на макрос вешается обновление таблицы с параметрами, забираемыми из Excel
Код
Sub buttom()
AI = ActiveSheet.Range("F1")
With ActiveSheet.ListObjects(1)
.QueryTable.CommandText = "select dfp.valid_from_dt, dfp.contr_term, dfp.FTP_DISB from dict_ftp_price dfp where dfp.VALID_TILL_DT = Date '4000-01-01' and dfp.contr_term = " & AI
.Refresh
End With
End Sub
Подскажите пожалуйста. Не смог разобраться с предложенными тут вариантами, может кто знает как решить мою задачку. Вопрос тот же, в двух ячейках указывается временной промежуток и после по кнопке идет выгрузка именно этого диапазона дат. Приложил файл, как формируется запрос. Запрос формирую через данные - запрос к SQL Server.
where m.DocDate Between "'"+format(?,"YYYY-MM-DD")+"'" and "'"+format(?,"YYYY-MM-DD")+"'"
Не пугайтесь 2-х знаков "?", вместо них драйвер должен запросить значения параметров (2 штуки), надо настроить связь каждого параметра со своей ячейкой.
А как настроить связь параметра? как определить ему где лежат эти ячейки? Откуда он будет тянуть эти вопросы? Простите, если это глупые вопросы, только недавно начал этим заниматься