Default Guid Value

отредактировано 14:27 Раздел: FastReport .NET
Добрый день,
пытаюсь сделать следующее:
в комбобуксе выбрается значение из таблицы вида guid,name
Далее хочу передать выбранный guid в запрос. Запнулся на определении параметра запроса. Без defaultvalue параметра запрос не работает. Ставлю тип guid, определяю значение 00000000-0000-0000-0000-000000000000 - запрос не работает. Ставлю тип varchar - ловлю ошибку "invalid cast from int32 to guid".
Подскажите, нужно обновить версию (172) или есть другой способ?

Комментарии

  • отредактировано 14:27
    Здравствуйте,

    Да, в DefaultValue передать guid не получится. Нужна доработка с моей стороны.
    В Expression передать можно в таком виде:
    new Guid("01fe00a2-d389-49ff-9c10-6d9684321fc1")
  • отредактировано 14:27
    Да, но если не заполнить DefaultValue, то запрос не отрабатывает.
  • отредактировано 14:27
    Поправил, версия соберется сегодня ночью.
  • отредактировано 14:27
    Александр, скачал свежую версию,
    В лоб указывать Guid по прежнему не дает, использование varchar и конструкции вида " "+[qstore.id] и [qstore.id].toString() выдают эксепшн.

    Поскажите правильный способ
  • отредактировано 14:27
    Хм, а у меня работает. Используете MS SQL Connection, или что-то еще?
  • отредактировано 14:27
    MS SQL Connection
    А какой способ у Вас работает? Я пробовал как минимум 4 пути.
  • отредактировано 14:27
    Делаю такой запрос:

    select * from Table1
    where Column3 = @param1

    поле Column3 - типа UniqueIdentifier

    Создаю параметр:

    Name = param1
    DataType = UniqueIdentifier
    DefaultValue = 01fe00a2-d389-49ff-9c10-6d9684321fc1

    все отрабатывает, на следующем шаге мастера я вижу список колонок, которые вернул запрос.
  • отредактировано 14:27
    До этого момента работает. Далее нужно подставить в параметр значение комбобукса: добавляю в эспрешион ссылку на справочник далее не работает
  • отредактировано 14:27
    Далее, как я писал - надо

    В Expression передать можно в таком виде:
    new Guid("01fe00a2-d389-49ff-9c10-6d9684321fc1")
  • отредактировано 14:27
    Это константа. А если нужное значение выбирается в комбобоксе диалога по полям другой таблицы?
  • отредактировано 14:27
    Ну это ведь пример. Вместо константы передать можно что угодно, например, так:

    new Guid(ComboBox1.Text)
  • отредактировано 14:27
    Тогда позвольте еще раз к задаче: есть две таблицы, скажем спр складов и движений. Нужно отобрать движения по выбранному на форме складу. Как пытаюсь сделать: в диалоге комбобукс с складами, в запрос по движениям добавляю параметр типа guid. Что указать параметру?
  • отредактировано 14:27
    Параметру указать выбранный guid. Тут уже все зависит от того, как Вы работаете с комбобоксом. Я бы сделал так:

    - комбобокс можно заполнить автоматически, если привязать его к колонке "Склад.Название" с помощью св-ва DataColumn;
    - когда выберете склад и закроете форму, таблица "Склад" будет отфильтрована автоматически, в ней останется только одна запись с выбранным складом;
    - в параметр надо передать значение поля "Склад.Идентификатор" - он типа guid. Например, с помощью такого выражения:

    [Склад.Идентификатор]
    или
    new Guid([Склад.Идентификатор].ToString())
  • отредактировано 14:27
    Первых два пукта так и есть. После третьего на вкладке с параметрами увы пусто.
  • отредактировано 14:27
    Я как-то забыл, что реальная фильтрация "Склада" будет выполнена не при закрытии формы, а при инициализации источника данных. Инициализацию можно сделать программно, либо добавить в отчет дата-бэнд, привязанный к этому источнику. Логичнее сделать отчет типа master-detail, как в прикрепленном примере. Он не рабочий, т.к. не прикрепляю базу данных. Этот пример может работать не только с комбобоксом, но и с CheckedListBox, например (когда выбирается несколько складов).

    В примере Tabe2 - аналог таблицы складов, Table - аналог таблицы движений.

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

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