Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вывести на экран из СУБД


Разведка ©   (2012-10-21 23:25:00) 

Например есть в таблице два поля "имя","должность"
задание вывести на экран содержимое двух полей в одном поле новом поле в таком виде [имя, должность] т.е. 9. Вывести на экран имя, соединённое с идентификатором должности через запятую и пробел в новой колонке Employee and Title . СУБД ORACLE


kilkennycat   (2012-10-22 13:59:00) [1]


> MsGuns ©   (22.10.12 11:17) [4]

неизвестно, может он на печать это выводит или в пдф-файл, в общем, куда-то без возможности и необходимости дальнейшей обработки. тогда все перечисленные неудобства отпадают.


AV   (2012-10-22 13:17:00) [2]

через небезызвестную таблу получаем запрос
begin
dbms_output.put_line( 'select ');
for CUR in (select T.COLUMN_NAME from ALL_TAB_COLUMNS T
           where T.TABLE_NAME = 'MYTABLE')
loop            
 dbms_output.put_line( to_char(CUR.COLUMN_NAME));
 dbms_output.put_line( '|| '' , ''  ||');
 
end loop;
dbms_output.put_line(' '' '' from '||'MYTABLE');
end;

который идет на выполнение.


MsGuns   (2012-10-22 11:17:00) [3]

>Есть ли упрощение такой записи

Есть просто другое решение, избавленное от недостатков Вашего.
Дело в том, что в Вашем случае возвращается НД с единственным полем, куда "сбиты" все реквизиты. Оно, может и компактнее при отображении, но:
а) Нет возможности нормального поиска по ЛЮБОМУ атрибуту, как и сортировки, например, по зарплате,
б) Не всегда удобно при отображении, т.к. "табличный" способ чисто визуально предпочтительнее "спискового"
в) Не дает в принципе возможность редактирования.

Правильнее делать по-другому:
1. Возвращать все поля таблицы, которые нужны для отображения, редактирования или для поиска/идентификации записей. Чаще всего это Select *
2. Отображать поля записи в табличной форме, т.е. каждому полю - "своя" колонка, при этом ширины колонок ограничивать сообразно данным набора, для дополнительных "сборных" колонок использовать TField.OnGetText либо Calc-поля.
3. При наличии "длинных" данных вместо "растягивания" колонок использовать технологии расширенного просмотра (хинты и подписи, многострочное отображение ячеек, Stay-On-Top формы с подробным и полным отображением всех реквизитов записи, режим переключения гридов и т.д.)


kilkennycat   (2012-10-22 04:28:00) [4]

Крнечно есть. SELECT * FROM employees;


Разведка   (2012-10-22 00:42:00) [5]

Есть ли упрощение такой записи

SELECT
  employee_id||','||first_name||','||last_name||','||email||','||phone_number||','
  ||hire_date||','||job_id||','||salary||','||commission_pct||','
  ||manager_id||','||department_id "Employee and Title"
FROM employees


Разведка   (2012-10-22 00:26:00) [6]

Упс... уже нашел.

SELECT
  employee_id||', '||last_name||', '||jobs.job_title||', '
  "Employee and Title"
FROM employees,jobs
WHERE employees.job_id=jobs.job_id


Наверх

Титульная страница Поиск, карта сайта Написать письмо