Если вы создаете Crystal Report с помощью встроенного мастера, таблицы связываются и т. Д. Что определяет, превращает ли параметр его в реальный оператор SQL? Кроме того, почему он заключает все в двойные кавычки?
Например:
Вот мой базовый SQL-оператор, сгенерированный CR:
SELECT "poitem"."fpono"
, "pomast"."fcompany"
, "pomast"."fvendno"
, "poitem"."fpartno"
, "poitem"."fitemno"
, "poitem"."frelsno"
, "poitem"."fordqty"
, "poitem"."frcpqty"
, "poitem"."fucostonly"
, "poitem"."flstpdate"
FROM "M2MDATA01"."dbo"."pomast" "pomast"
INNER JOIN "M2MDATA01"."dbo"."poitem" "poitem"
ON "pomast"."fpono" = "poitem"."fpono"
Теперь посмотрим, что произойдет, когда я добавлю следующее в редактор редактора:
{poitem.fcategory} = "INV" and
not ({poitem.fmultirls} = "Y" and
{poitem.frelsno} = " 0") and
{poitem.fordqty} > {poitem.frcpqty} and
cdate({poitem.flstpdate}) = {?LastPromDate} and
{poitem.forgpdate} = DateTime (2010, 10, 05, 00, 00, 00) and
{pomast.fstatus} = "OPEN"
Я добавил forgpdate для сравнения, так как я запрашиваю даты двумя разными способами.
Вот SQL, который я получаю:
SELECT "poitem"."fpono"
, "pomast"."fcompany"
, "pomast"."fvendno"
, "poitem"."fpartno"
, "poitem"."fitemno"
, "poitem"."frelsno"
, "poitem"."fordqty"
, "poitem"."frcpqty"
, "poitem"."fucostonly"
, "poitem"."flstpdate"
, "poitem"."fcategory"
, "poitem"."fmultirls"
, "pomast"."fstatus"
, "poitem"."forgpdate"
FROM "M2MDATA01"."dbo"."pomast" "pomast"
INNER JOIN "M2MDATA01"."dbo"."poitem" "poitem"
ON "pomast"."fpono" = "poitem"."fpono"
WHERE "poitem"."fcategory" = 'INV'
AND("poitem"."fmultirls" <> 'Y'
OR "poitem"."frelsno" <> ' 0')
AND "poitem"."fordqty" > "poitem"."frcpqty"
AND("poitem"."forgpdate" >= {TS '2010-10-05 00:00:00'}
AND "poitem"."forgpdate" < {TS '2010-10-05 00:00:01'})
AND "pomast"."fstatus" = 'OPEN'
Большая часть этого передана напрямую, однако это преобразовало мое утверждение "Не".
Также обратите внимание, что моя строка cdate вообще не была отправлена, а разрешена в самом Crystal.
Кто-нибудь знает точно, как Кристалл решает, что делать? Я работаю с некоторыми большими базами данных и мне нужны мои критерии в выражении SQL, иначе Crystal возвращает огромные наборы данных, которые тратят время, память и обработку.
ТИА.