Вопрос по запросам DBX (ошибка?)

отредактировано 05:22 Раздел: FastReport 3.0
Здравствуйте.

Ситуация следующая: в отчете есть 2 запроса, и стоит зависимость 2-го от первого. Настроено соединение к SQLServer ч/з DBX.

Примерный вид 1-го запроса:
SELECT distinct table1.field1 df FROM table1

2-й запрос:
SELECT table1.field1, table2.f1 FROM table1
LEFT OUTER JOIN table2 on table1.field1 = table2.f2
and table2.f2 = :p1

здесь p1 определен как <Запрос1."df">


В чем проявляется ошибка - при выполнении 1-го sql не в FastReport, он возвращает, как и должен 4 строчки (для примера).
При выполнении в FR возвращается 5! строк, причем последняя из них пустая - ''

это было отслежено только по ошибке приведения видов в конструкции table2.f2 = :p1
т.е. отчет строится нормально, все данные есть, но в конце выдает ошибку.
(тип table1.field1 и table2.f2 - uniqueidentifier

Т.е. если строить отчет, и сравнивать, например строковые данные - нет проблем, 5я строка сравнения не пройдет и в результат не будет выведено ничего.

Что подскажете?

ps: используется FR 3.20 stable

Комментарии

  • gpigpi
    отредактировано 05:22
    написал:
    при выполнении 1-го sql не в FastReport
    не в FastReport - это в Delphi с использованием DBX или в SQLServer?
  • отредактировано 05:22
    это в SQLServer.

    В Delphi - метод RecordCount возвращает правильное число,
    но если считывать построчно - появляется одна лишняя строка
    Видимо особенность дельфей?
  • gpigpi
    отредактировано 05:22
    Может быть, особенность DBX. Покажите фрагмент кода, считывающий построчно информацию.
  • отредактировано 05:22
    А, нет, попробовал - проблемы нет и при использовании dbx напрямую...

    вот пример кода

    SQLQuery1->Open();
    SQLQuery1->First();
    while (!SQLQuery1->Eof)
    {
    ListView1->Items->Add()->Caption = AnsiString(">> ") + SQLQuery1->FieldByName("field1")->AsString;
    SQLQuery1->Next();
    }

    Так что проблема где то в самом FastReportе насколько я понимаю.
  • отредактировано 05:22
    FR никакой "отсебятины" не делает. Только First/while not Eof do/Next. Единственно - если отчет с группами - то после окончания группы идет откат на запись назад, потом возврат. Но это в данном случае не работает (DBX однонаправленный датасет).

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

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