Jump to content


Photo

DDS. Module. View.

dds module view

  • Please log in to reply
10 replies to this topic

#1 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 16 May 2017 - 19:02

Добрый день.

 

Прошу Ваших рекомендаций по реализации представления для таблицы:

  1. в БД есть таблица документов и есть таблица заявлений от клиентов по оспариванию совершенных сделок;
  2. в таблице заявлений содержится информация о документе, который оспаривается, о двух документах, которые сопровождают операцию и собственно результирующий документ возмещения (убытков или разницы в зависимости от колебаний стоимости);
  3. таблица заявок имеет четыре связи с таблицей документов, по которым необходимо показать в приложении соответствующую информацию (номер, дата, сумма);
  4. В схеме таблиц можно добавить четыре ссылки на таблицу документов и связать ее с заявками;
  5. при создании представления на вкладке SQL нельзя добавить таблицу документов четыре раза для написания запроса через JOIN.

Прошу Ваших рекомендаций как сделать представления с корректным отображением информации о документах. Схема документов прилагается во вложении.

 

С уважением, Dearhome.

 

P.S. Поздравляю с прошедшими майскими праздниками.

Attached Files


  • Yoursag, EdwardGennesi, 115joylax and 18 others like this

#2 dlastochkin

dlastochkin

    Member

  • Administrators
  • 26 posts
  • Organisation:Compass Plus

Posted 17 May 2017 - 11:43

Добрый день!

Хотелось бы уточнить, какие колонки будут в Вашем представлении и для каких целей Вы это представление планируете использовать?

 

P.S. Вас тоже с прошедшими праздниками.


  • Yoursag, EdwardGennesi, LindaWhels and 7 others like this

#3 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 17 May 2017 - 12:16

Добрый день.

 

В основной таблице есть четыре поля с идентификаторами документов: TranId (идентификатор оспариваемого документа), TransODId (идентификатор ОД документа), TransDBId (идентификатор ДБ документа) и OutTransId (идентификатор документа возмещения/компенсации).

 

По каждому документу в приложении необходима следующая информация: номер документа, сумма документа, дата принятия решения по документу, решение по документу (проведен/отложен/заблокирован).

 

Документы ОД и ДБ формируются обязательно по каждому случаю оспаривания операции. В связи с принятым решением формируется документ возмещения/компенсации.

 

Представление хотел использовать при создании ADS-модуля "Заявления клиентов" - на основании его формировать DataSet для приложения. Цель приложения - сбор статистической информации по нештатным ситуациям. Ввод информации предполагается ручной.

Для заполнения информации о документах нельзя вручную вводить данные с клавиатуры (это может привести к возникновению ошибок в номере, сумме, дате и т.д.). Документы предполагается вводить путем выбора их из выпадающего списка. При выборе в форме и приложении визуализируется указанная выше информация, а при сохранении данных в БД - сохраняется только идентификатор документа.

Для выбора счета необходим Lookup, который отображает четыре(пять) колонок о предполагаемых документах, а в БД фиксируется Id выбранного документа. По возможности платформы создавать Lookup-ы я еще хотел у вас уточнить, но чуть позже.

 

Если изложил свои мысли сумбурно - уточните, пожалуйста, что нужно расписать более подробно и последовательно?!

 

С уважением, Dearhome.


  • LindaWhels, Frankvard, KaCenestany and 1 other like this

#4 dlastochkin

dlastochkin

    Member

  • Administrators
  • 26 posts
  • Organisation:Compass Plus

Posted 17 May 2017 - 16:16

Спасибо за информацию.

 

Для решения Вашей задачи, создавать представление на уровне БД не обязательно. У Entity классов существует специальный тип свойств, называемый Reference Properties. Свойство такого типа создаются по связям между таблицами в БД. При редактировании такого свойства в презентации редактора, открывается презентация селекотора для связанного объекта. В Вашем случае имеет смысл создать Reference Property на каждую из четырех связей и использовать эти свойства в презентациях. Про создание этого типа свойств можно почитать здесь. Так же существует возможность в презентациях дочерних объектов, выводить свойства родительских таблиц. Для этого используются Parent Property. Подробнее про типы свойств можно почитать на wiki.

 

Что касается Вашего первого вопроса:

В список таблиц, который задается в редакторе SQL-запроса при создании представления, таблицу можно добавить только один раз. Если в коде запроса Вам нужно использовать одну таблицу несколько раз, воспользуйтесь SQL alias-ом.


  • Frankvard and Charlesbip like this

#5 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 17 May 2017 - 16:32

Спасибо за Ваш ответ. Буду реализовывать.


  • Frankvard likes this

#6 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 22 May 2017 - 16:38

Добрый день.

 

Прошу помочь решить проблему с выполнением SQL представления двух таблиц:

 

create or replace view TERMINALVIEW as

SELECT

              t.Id, t.Kind, t.Address, t.Code, tk.Code AS KindCode, tk.Info AS KindInfo

FROM

              TERMINAL t

JOIN

              TerminalKind tk

              ON tk.Id = t.Kind

/

grant...

/

 

При выполнении SQL-запроса получаю ошибку: SQLSyntaxErrorException: ORA-00904: "T"."KIND": invalid identifier.

Таблица Terminal содержит поле Kind с типом NUMBER(9,0).

Создавал представление следующим образом:
1. на вкладке Columns импортировал колонки из таблиц;
2. на вкладке Query добавлены таблицы Terminal и TerminalKind;

3. таблицы добавлены в редактор запроса двойным кликом мыши;

4. все поля перечислены вручную.

 

Прошу уточнить, почему ПО не воспринимает поле Kind?

 

С уважением, Dearhome.

 


  • Frankvard likes this

#7 dlastochkin

dlastochkin

    Member

  • Administrators
  • 26 posts
  • Organisation:Compass Plus

Posted 22 May 2017 - 17:24

Добрый день!

Приложите, пожалуйста, скриншот редактора запроса у представления.


  • Frankvard likes this

#8 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 22 May 2017 - 17:31

Скриншот запроса во вложении.

 

С уважением, Dearhome.

Attached Files



#9 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 23 May 2017 - 11:45

Добрый день.

 

В дополнение к моему вчерашнему вопросу хочу добавить один комментарий, возможно, это важно:

- во вкладке "Query" записан запрос на выборку данных:

 

SELECT tt.Id, tt.Kind, tt.Code, tt.Address, tk.Code AS KindCode, tk.Info AS KindInfo

FROM Terminal tt INNER JOIN TerminalKind tk ON tk.Id = tt.Kind

 

при выполнении SQL запроса получаю сообщение об ошибке ORA-904: tt.Kind: invalid identifier.

- выполняю замену в конструкции Inner JOIN

 

SELECT tt.Id, tt.Kind, tt.Code, tt.Address, tk.Code AS KindCode, tk.Info AS KindInfo

FROM Terminal tt INNER JOIN TerminalKind tk ON tt.Kind = tk.Id

 

при выполнении SQL запроса получаю сообщение об ошибке ORA-904: tk.Id: invalid identifier.

Т.е. получается, что любое мое поле после знака равенства не воспринимается корректно.

 

Возможно, это будет важно.



#10 dlastochkin

dlastochkin

    Member

  • Administrators
  • 26 posts
  • Organisation:Compass Plus

Posted 23 May 2017 - 14:21

Добрый день.

 

Судя по ошибке, скорее всего, структура таблиц в БД разошлась с моделью базы в RW Designer. Такое могло произойти, если Вы, по какой-то причине, не выполнили один из скриптов. Для того, чтобы это проверить, можно воспользоваться Oracle SQL Developer. Вам нужно подключится к базе и сравнить список и названия колонок в Ваших таблицах.

 

Еще один момент: для вставки названий объектов БД наиболее эффективно использовать тэги. Дело в том, что те имена, которые вы видите в модели, не являются реалными именами объектов в базе (реалные имена пишется рядом с галочкой Auto DB name). Для удобства чтения и написания запросов в RadixWare добавлен SQML - расширения языка SQL, которое поддерживает вставку тэгов. При генерации SQL-запроса, на место тэгов подставляются реальные имена объеков базы. Для вставки тэга можно воспользоваться меню редактора SQML или контекстной подсказкой (для этого начните печатать имя объекта, которое задано в модели и нажмите CTRL+SPACE). Хорошей практикой при создании продукта на платформе RadixWare является использование тэгов там, где их можно использовать (не только в запросах, но и при написании кода в ADS). Это позволит избежать большого количества ошибоки и облегчит жизнь разработчику.



#11 dearhome

dearhome

    Advanced Member

  • Members
  • PipPipPip
  • 61 posts
  • Organisation:Home

Posted 23 May 2017 - 18:56

Спасибо за Ваш ответ.







0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users