Передача параметра в запрос Postgresql

отредактировано 08:07 Раздел: FastReport .NET
Добрый день!

Помогите, пожалуйста разобраться.
Использую FastReport Дизайнер 2017.2.1.
Создаю Connection через ODBC к БД PostgreSQL (подключение проходит успешно).
В источник данных необходимо прописать запрос с параметром.

Пытаюсь сделать так:
1. В окне Мастер запроса запрос:
SELECT "DocN", "ID", "RegDate", "JournalID", "VersionCount" 
FROM  dbo.TableName 
WHERE "JournalID" = $1

2. В следующем окне указываю один параметр:
<CommandParameter Name="1" DataType="10" Expression="[Journal_ID]" DefaultValue="379246"/>

3. В итоге получается источник данных:
    <TableDataSource Name="Table" DataType="System.Int32" Enabled="true" SelectCommand="SELECT "DocN", "ID", "RegDate", "JournalID", "VersionCount" 
FROM  dbo.LDERC 
WHERE "JournalID" = $1">
        <Column Name="DocN" DataType="System.String"/>
        <Column Name="ID" DataType="System.Int32"/>
        <Column Name="RegDate" DataType="System.DateTime"/>
        <Column Name="JournalID" DataType="System.Int32"/>
        <Column Name="VersionCount" DataType="System.Int32"/>
        <CommandParameter Name="1" DataType="10" Expression="[Journal_ID]" DefaultValue="379246"/>
      </TableDataSource>

4. В окне Данные - Параметры создан параметр Journal_ID
<Parameter Name="Journal_ID" DataType="System.Int32"/>

5. К разделу Данные отчета привязана таблица с указанным запросом:
    <DataBand Name="Data1" Top="74.15" Width="718.2" Height="47.25" DataSource="Table">
      <TextObject Name="Text3" Left="56.7" Top="18.9" Width="113.4" Height="18.9" Text="[Table.DocN]"/>
      <TextObject Name="Text5" Left="292.95" Top="18.9" Width="132.3" Height="18.9" Text="[Table.RegDate]"/>
      <TextObject Name="Text7" Left="500.85" Top="18.9" Width="113.4" Height="28.35" Text="[Table.VersionCount]"/>
    </DataBand>

6. Выполняем Предварительный просмотр.

Результат: отображается исключение:
System.Data.Odbc.OdbcException (0x80131937): ERROR [42P02] ERROR: there is no parameter $1;
Error while executing the query

Подскажите, пожалуйста:
Корректно ли в данном случае передается параметр в запрос (для PostgreSQL данный синтаксис является корректным и в мастере создания запроса ошибок нет)?
Если нет, то каким образом передавать значение в запрос?

Комментарии

  • отредактировано 08:07
    anna_qa написал: »
    Добрый день!

    Помогите, пожалуйста разобраться.
    Использую FastReport Дизайнер 2017.2.1.
    Создаю Connection через ODBC к БД PostgreSQL (подключение проходит успешно).
    В источник данных необходимо прописать запрос с параметром.

    Пытаюсь сделать так:
    1. В окне Мастер запроса запрос:
    SELECT "DocN", "ID", "RegDate", "JournalID", "VersionCount" 
    FROM  dbo.TableName 
    WHERE "JournalID" = $1
    

    2. В следующем окне указываю один параметр:
    <CommandParameter Name="1" DataType="10" Expression="[Journal_ID]" DefaultValue="379246"/>
    

    3. В итоге получается источник данных:
        <TableDataSource Name="Table" DataType="System.Int32" Enabled="true" SelectCommand="SELECT "DocN", "ID", "RegDate", "JournalID", "VersionCount" 
    FROM  dbo.LDERC 
    WHERE "JournalID" = $1">
            <Column Name="DocN" DataType="System.String"/>
            <Column Name="ID" DataType="System.Int32"/>
            <Column Name="RegDate" DataType="System.DateTime"/>
            <Column Name="JournalID" DataType="System.Int32"/>
            <Column Name="VersionCount" DataType="System.Int32"/>
            <CommandParameter Name="1" DataType="10" Expression="[Journal_ID]" DefaultValue="379246"/>
          </TableDataSource>
    

    4. В окне Данные - Параметры создан параметр Journal_ID
    <Parameter Name="Journal_ID" DataType="System.Int32"/>
    

    5. К разделу Данные отчета привязана таблица с указанным запросом:
        <DataBand Name="Data1" Top="74.15" Width="718.2" Height="47.25" DataSource="Table">
          <TextObject Name="Text3" Left="56.7" Top="18.9" Width="113.4" Height="18.9" Text="[Table.DocN]"/>
          <TextObject Name="Text5" Left="292.95" Top="18.9" Width="132.3" Height="18.9" Text="[Table.RegDate]"/>
          <TextObject Name="Text7" Left="500.85" Top="18.9" Width="113.4" Height="28.35" Text="[Table.VersionCount]"/>
        </DataBand>
    

    6. Выполняем Предварительный просмотр.

    Результат: отображается исключение:
    System.Data.Odbc.OdbcException (0x80131937): ERROR [42P02] ERROR: there is no parameter $1;
    Error while executing the query
    

    Подскажите, пожалуйста:
    Корректно ли в данном случае передается параметр в запрос (для PostgreSQL данный синтаксис является корректным и в мастере создания запроса ошибок нет)?
    Если нет, то каким образом передавать значение в запрос?

    1. В запросе укажите параметр через символ двоеточие, например Where JournalID = :Parameter1
    2. В окне параметров запроса добавьте новый параметр Parameter1 и заполните все необходимые поля
  • daedae
    отредактировано April 2022

    Добрый день

    Передаю параметр

    select "БИК" from stack."Банки" where "БИК" = :bik

    Получаю ошибку error 42601 ОШибка синтаксиса (примерное положение ":")

    Подключение через ODBC

    Объясните что не так?

    Использую Fastreport.net 2018.4.7

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

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