Вечер добрый. Задачка вот такая... Не знаю, что за баг, но странно..... Итак -

Создаю SQL запрос.... Вроде бы все должно работать, прогоняю его - работает... Запрос простой - вот

SELECT
        [tbl_Document].[Title] AS [Title],
        [tbl_Document].[DocumentNumber] AS [DocumentNumber],
        [tbl_Document].[InvoiceID] AS [InvoiceID],
        [tbl_Document].[Description] AS [Description],
        [tbl_Invoice].[Amount] AS [InvoiceAmount],
        [tbl_Invoice].[InvoiceNumber] AS [InvoiceNumber],
        [Account].[Name] AS [AccountName],
        [EmployrContact].[Name] AS [EmployrName],
        [tbl_Document].[AccountID] AS [AccountID],
        [tbl_Document].[EmployrContactID] AS [EmployrContactID],
        (SELECT
                MAX([tbl_PlanningOfNumber].[DateOfIssue]) AS [DateOfIssue]
        FROM
                [dbo].[tbl_Outputs] AS [tbl_Outputs]
        LEFT OUTER JOIN
                [dbo].[tbl_PlanningOfNumber] AS [tbl_PlanningOfNumber] ON [tbl_PlanningOfNumber].[ID] = [tbl_Outputs].[PlanedPlanningNumberID]
        LEFT OUTER JOIN
                [dbo].[tbl_OfferingInDocument] AS [tbl_OfferingInDocument] ON [tbl_OfferingInDocument].[ID] = [tbl_Outputs].[OfferingInDocumentID]
        WHERE([tbl_Document].[ID] = [tbl_OfferingInDocument].[DocumentID])) AS [DateFinished],
        [tbl_Document].[PublicationsAmount] AS [PublicationsAmount],
        [tbl_Document].[Sum] AS [Sum]
FROM
        [dbo].[tbl_Document] AS [tbl_Document]
LEFT OUTER JOIN
        [dbo].[tbl_Account] AS [Account] ON [Account].[ID] = [tbl_Document].[AccountID]
LEFT OUTER JOIN
        [dbo].[tbl_Invoice] AS [tbl_Invoice] ON [tbl_Invoice].[DocumentID] = [tbl_Document].[ID]
LEFT OUTER JOIN
        [dbo].[tbl_Contact] AS [EmployrContact] ON [EmployrContact].[ID] = [tbl_Document].[EmployrContactID]

Перенес этот запрос в Террасофт и с помощью построителя запросов создал запрос в террасофте, используя одну колонку - колонку с текстом SQL. Потом сделал датасет, фастрепорт и добавил фильтр на дату - т.е. на это самое поле - DateFinished. Вот фильтр -

В итоге, если фильтровать значения по этому полу - результат - НИЧЕГО. Если фильтр не включать запрос отрабатывает нормально - все строки выдаются.
Ладно, решил это поле построить тоже с помощью построителя запросов, а старое переименовать - вот что получилось

Просматривая запрос видим, что поля абсолютно одинаковые -

Используя новую колонку и отключая старую все работает и фильтр тоже нормально фильтрует....
Вопрос - почему так происходит?????
Почему я не могу использовать нормально колонку SQL запроса, и мне приходится постоянно прописывать в построителе запросов???? А если запрос будет сложнее???? Тогда как????

Нравится

1 комментарий

Добрый день, Евгений!
Для колонки типа CustomSQLColumn и поля набора данных, построенного на его основе, на данный момент (3.3.1.х) есть ограничения по использованию, в частности, пока недоступна фильтрация. В будущих версиях разработчики обязательно учтут это замечание. В вашем случае выходом их положения является использование SubSelectColumn, для которых доступна фильтрация и сортировка.

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

Показать все комментарии

Необходимо выполнить процедуру или запрос по расписанию, а у Вас установлен SQL Express, где нету JOBs?
Не проблема! Воспользуемся Batch файлом и запускаем его по расписанию (Windows расписанию! :wink:)

Для SQL Server 2005 или 2008 берем sqlcmd.exe, а для SQL Server 2000 - osql.exe
Пишим батник:

@ECHO OFF

sqlcmd -Q "exec myproc" -Sserver1\instance1 -dMYDATABASE -E -oE:\DATA\Output.txt

@ECHO ON

Запускаем!
Интересуют детали? Вам сюда: http://msdn.microsoft.com/en-us/library/ms162773.aspx

PS: Другой вариант - это SQLScheduler Но его я не тестировал. Если у Вас был опыт использования - отпишите!
http://www.lazycoding.com/products.aspx

Нравится

Поделиться

5 комментариев

Кстати с Firebird и Oracle тожке так можно.

Не знаю как SQLScheduler, но в mssql server есть SQL Server Agent где можно планировать так называемые Job-ы: sql и power shell скрипты и даже программировать на VB и JScript. Но единственное, его нет в express и compact edition.

"Осауленко Александр" написал:но в mssql server есть SQL Server Agent где можно планировать так называемые Job-ы

Читаем первый пост: SQL Express

--
www.it-sfera.com.ua

Звыняйтэ :)

Кому интересно, написал батник для резервного копирования базы под SQL Express! :wink:

--
www.it-sfera.com.ua

Показать все комментарии

Добрый день! Подскажите пожалуйста как создать(выполнить) sql-запрос в скрипте?
Заранее спасибо!

P.S> Вариант создания сначала запроса в администраторе (sq_)и дальнейший его вызов из скрипта не подходит, т.к. работает не совсем корректно

Нравится

2 комментария

Добрый день, Сергей!

Пожалуйста, воспользуйтесь поиском на форуме по ключевому слову "ExecuteCustomSQL". Вы найдете несколько решений схожих задач.
Также интересно узнать о задаче, которую не удается решить с помощью обычного SelectQuery. Опишите ее, уверен, найдутся более приемлемые варианты, чем ExecuteCustomSQL.

Можете посмотреть замечательную функцию написанную Евгением Геновым:
http://community.terrasoft.ua/node/2171

Показать все комментарии