В чём я не прав?

отредактировано April 2006 Раздел: FastReport Studio
В дизайнере Fast Report Studio 3.21 создаю дизайн отчёта. Источником данных должен быть следующий запрос:

SELECT to_char (operation.paydate, 'DD.MM.YYYY HH:MI:SS')paydate, operation.paysum, card.name, terminal.terminalid, operation.traceno,
operation.authresponse, operation.referenceno, kiosk.name
FROM operation, terminal, kiosk, card
WHERE ( (terminal.code = operation.terminal_code)
AND (kiosk.code = terminal.kiosk_code)
AND (card.code = operation.card_code)
AND (operation.classifier_code = 7)
AND (operation.status = 3)
AND (operation.operday = '30-MAR-2006')
)

В жабе (Toad) запрос отрабатывается правильно и без проблем. Когда в Fast Report Studio 3.21 ставлю источником данных этот запрос получаю пустой отчёт (причём нет ни заголовков страниц ни заголовка данных, пролностью пустая траница и ошибок никаких не выводит). Если урезать запрос до вида:

SELECT to_char (operation.paydate, 'DD.MM.YYYY HH:MI:SS')paydate, operation.paysum, card.name, terminal.terminalid, operation.traceno,
operation.authresponse, operation.referenceno, kiosk.name
FROM operation, terminal, kiosk, card
WHERE ( (terminal.code = operation.terminal_code)
AND (kiosk.code = terminal.kiosk_code)
AND (card.code = operation.card_code)

то отрабатывается всё нормально.

Что происходит ???
Как выйти из сложившейся ситуации?

Комментарии

  • gpigpi
    отредактировано 01:53
    Попробуйте выполнить такой запрос, без AND (operation.operday = '30-MAR-2006')
    SELECT to_char (operation.paydate, 'DD.MM.YYYY HH:MI:SS')paydate, operation.paysum, card.name, terminal.terminalid, operation.traceno,
    operation.authresponse, operation.referenceno, kiosk.name
    FROM operation, terminal, kiosk, card
    WHERE ( (terminal.code = operation.terminal_code)
    AND (kiosk.code = terminal.kiosk_code)
    AND (card.code = operation.card_code)
    AND (operation.classifier_code = 7)
    AND (operation.status = 3))
  • отредактировано 01:53
    Не помогает.
  • gpigpi
    отредактировано 01:53
    Попробуйте запрос с JOIN
  • отредактировано 01:53
    Попробовал создать простой запрос на выборку в редакторе SQL из трех таблиц имеющим две связи один-ко-многим.
    Редактор выдал следующее:

    SELECT t1.PostNaSklDate, t1.PostNaSklDocN, t2.InvN, t.TovarName, t2.PostNaSklQuantity, t2.PriceOut
    FROM
    tblNomenclature t
    INNER JOIN tblSpecPostNaSkl t2 ON (t.InvN=t2.InvN) AND (t.IDPostNaSkl=t2.IDPostNaSkl) ,
    tblPostavkiNaSklady t1

    т.е. вместо двух JOIN выдал только один, а второй JOIN заменил на AND,
    причем неправильно, вместо
    (t1.IDPostNaSkl=t2.IDPostNaSkl) выдал
    (t.IDPostNaSkl=t2.IDPostNaSkl)
    что и вызвало ошибку.
    Хотелось бы узнать это особенность встроенного редактора
    или в ADOQuery больше одного JOIN нельзя использовать.
    Я понимаю есть альтернатива с использованием WHERE,
    (хотя может и здесь не покатит, не проверял)
    но как быть если понадобиться LEFT или RIGHT JOIN.

  • отредактировано 01:53
    Перестроил запрос и всё получилось. Всем спасибо.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.