Страницы: 1
RSS
Дата в SQL запросе из ячейки
 
Здравствуйте! Есть SQL запрос, который берет данные, основываясь на временном промежутке. Всю голову сломал, как сформировать запрос так, чтобы дата бралась из ячейки, а не прописывалась каждый раз руками в запросе. Все форумы перелопатил, но тщетно. Помогите, пожалуйста.
Код
SELECT 
A.id, 
A.number, 
A.FttbCtn, 
A.AddDate, 
A.IDAutoAnswerType, 
B.[DisplayName], 
A.IDPaymentLevel, 
C.[DisplayName], 
D.Parent,
O.DisplayName,
A.IDMarketCode, 
D.[DisplayName],
A.[UID]

FROM [OnnetPP_IVRSS_NumbersHistory].[stat].[RawDataByNumbers] as A,
[OnnetPP_IVRSS_NumbersHistory].[data].[AutoAnswerType] as B,
[OnnetPP_IVRSS_NumbersHistory].[data].[PaymentLevel] as C,
[OnnetPP_IVRSS_NumbersHistory].[data].[MarketCode] as D
left join [OnnetPP_IVRSS_NumbersHistory].[data].[MarketCode] as O on D.Parent=O.ID

WHERE A.IDAutoAnswerType in (15, 125, 1) 
and A.IDAutoAnswerType = b.ID 
and A.IDPaymentLevel = c.ID 
and A.IDMarketCode = d.ID

and A.AddDate >  '20170929 16:00:00' 

and A.AddDate < '20170929 16:59:59' 
ORDER By A.AddDate
 
Цитата
nightbeast написал:
Все форумы перелопатил, но тщетно.
Большое обсуждение этого вопроса было в теме Получение данных из SQL по условию в ячейках. Как вы это "лопатили", что мимо прошли?
 
Андрей VG, да был я там. Там пытаются это в макрос вставить, а у меня запрос в подключениях. Хотя я и с макросом пробовал, как там написано - не выходит каменный цветок.
 
Цитата
nightbeast написал:
Хотя я и с макросом пробовал, как там написано
Код макроса секретный - скрываете? А вдруг ошибка найдётся в нём? Плюс, структура типов данных опрашиваемой таблицы не помешала бы.
Изменено: Андрей VG - 09.10.2017 15:50:54
 
Андрей VG, код макроса убогий, так как создан автоматом. но работает. но дату все равно приходится руками менять
Код
 With ActiveWorkbook.Connections("OnnetPP_IVRSS_NumbersHistory")
        .Name = "OnnetPP_IVRSS_NumbersHistory"
        .Description = ""
    End With
    With ActiveWorkbook.Connections("OnnetPP_IVRSS_NumbersHistory").OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array( _
        "SELECT " & Chr(13) & "" & Chr(10) & "A.id, " & Chr(13) & "" & Chr(10) & "A.number, " & Chr(13) & "" & Chr(10) & "A.FttbCtn, " & Chr(13) & "" & Chr(10) & "A.AddDate, " & Chr(13) & "" & Chr(10) & "A.IDAutoAnswerType, " & Chr(13) & "" & Chr(10) & "B.[DisplayName], " & Chr(13) & "" & Chr(10) & "A.IDPaymentLevel, " & Chr(13) & "" _
        , _
        "" & Chr(10) & "C.[DisplayName], " & Chr(13) & "" & Chr(10) & "D.Parent," & Chr(13) & "" & Chr(10) & "O.DisplayName," & Chr(13) & "" & Chr(10) & "A.IDMarketCode, " & Chr(13) & "" & Chr(10) & "D.[DisplayName]," & Chr(13) & "" & Chr(10) & "A.[UID]" & Chr(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "FROM [OnnetPP_IVRSS_N" _
        , _
        "umbersHistory].[stat].[RawDataByNumbers] as A," & Chr(13) & "" & Chr(10) & "[OnnetPP_IVRSS_NumbersHistory].[data].[AutoAnswerType] as B," & Chr(13) & "" & Chr(10) & "[Onne" _
        , _
        "tPP_IVRSS_NumbersHistory].[data].[PaymentLevel] as C," & Chr(13) & "" & Chr(10) & "[OnnetPP_IVRSS_NumbersHistory].[data].[MarketCode] as D" & Chr(13) & "" & Chr(10) & "lef" _
        , _
        "t join [OnnetPP_IVRSS_NumbersHistory].[data].[MarketCode] as O on D.Parent=O.ID" & Chr(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "WHERE A.IDAutoAnswerType in (15," _
        , _
        " 125, 1) " & Chr(13) & "" & Chr(10) & "and A.IDAutoAnswerType = b.ID " & Chr(13) & "" & Chr(10) & "and A.IDPaymentLevel = c.ID " & Chr(13) & "" & Chr(10) & "and A.IDMarketCode = d.ID" & Chr(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "and A.AddDate" _
        , _
        " >  '20170929 16:00:00' " & Chr(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "and A.AddDate < '20170929 16:59:59' " & Chr(13) & "" & Chr(10) & "ORDER By A.AddDate" _
        )
 
а в чем проблема-то? вот так последняя строка будет (даты в ячейках A1 и A2):
Код
" >  '" & Format(Cells(1, 1), "yyyyMMdd hh:mm:ss") & "' " & Chr(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "and A.AddDate < '" & Format(Cells(2, 1), "yyyyMMdd hh:mm:ss") & "' " & Chr(13) & "" & Chr(10) & "ORDER By A.AddDate" _
 
webley, господииисуседобрыйчеловек!! в ножки кланяюсь! спасибо! счастья, здоровья! помогло, все работает! добби свободен! спасибо!
 
Цитата
webley написал:
а в чем проблема-то? вот так последняя строка будет (даты в ячейках A1 и A2):
Проблема в том, что ТС не знает, как писать код на VBA. И ваше решение в этом плане не лучшее, так придётся каждый раз макрос записать, а по ссылке макрос всего лишь однократно нужен. Изменение даты же в ячейке автоматически обрабатывается Excel :)
 
Андрей VG, извините, но ничего не понял - зачем каждый раз макрос записывать? И что касается лучшее/не лучшее - название темы + сообщение #5 - это единственно возможное решение. А оценка самого алгоритма и реализации (если Вы про это) - мне кажется это за рамками данной темы.
 
webley, приношу свои извинения. Имел ввиду выполнять, спешка.
Страницы: 1
Читают тему
Наверх