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

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

Запрос по соединению данных. [D7, FireBird 1.5]


Xmen ©   (2008-03-24 06:45:00) 

Привет мастерам.
У меня возникла такая проблема даже незнаю как описать. Такесть у меня 2 таблицы мастер(1)-детал(1). В одном список документов а втором кому этот документ назначен для прочтения. Нужно сделат такой запрос чтобы в одной строке был данные с мастер таблицы и в конце одном поле показывал бы данные с второй таблицы.
1 табл.
ID            Doc_name                    Doc_Date              Doc_type
---------------------------------------------------------------
1              письмо1                     21.03.2008             письмо
2              приказ1                     22.03.2008             приказ
3              письмо2                     22.03.2008             письмо

2 табл.
ID             Main_id              FIO                        Content
---------------------------------------------------------------
1                 1                Петров А.С.           на расмотрение
2                 2                Ким Л.А.               на выполнение
3                 2                Иванов Н.Н.          на выполнение
4                 2                Попов Р.Д.            на рассмотрение
5                 3                Иванов Н.Н.          для ознакомления

результат должен быт такой
ID  Doc_name     Doc_date          FIO_Content
2  приказ1        22.03.2008        Ким Л.А. на выполнения,         Иванов Н.Н. на выполнения, Попов Р.Д.  на рассмотрения


Johnmen   (2008-03-25 16:14:00) [1]


> Что это за ошибка?

На чём?


Xmen   (2008-03-25 15:50:00) [2]

This operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$PROCEDURES failed.
lock conflict on no wait transaction.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_21".

Что это за ошибка?


Правильный_Вася   (2008-03-24 16:15:00) [3]


>  с ХП незнаком

ознакомься, это не долго


Xmen   (2008-03-24 15:59:00) [4]

я же вверху писал с ХП незнаком просто гдето посмотрел код ХП и для себя настроил. как нужно сделать правильние


Правильный_Вася   (2008-03-24 15:55:00) [5]

какие типы полей?
как вызываешь ХП?

> pr_date +  :pr_date1;

операция + не определена для строковых типов


Xmen   (2008-03-24 15:49:00) [6]

если я сделал
e.executor_id
все равно такая ощибка


Правильный_Вася   (2008-03-24 15:45:00) [7]

хотя ошибка, похоже, при неправильном вызове процедуры


Правильный_Вася   (2008-03-24 15:45:00) [8]

сделай явное приведение типов здесь:
e.executor_id||' '||e.control_date


Xmen   (2008-03-24 15:41:00) [9]

Текс такой
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.


Правильный_Вася   (2008-03-24 15:34:00) [10]


> выдал ощибку

ждем текст ошибки


Xmen   (2008-03-24 15:14:00) [11]

Сделал так но выдал ощибку, не понял где сделал ощибку

CREATE PROCEDURE PR1 (
   main_id integer)
returns (
   pr_date varchar(255))
as
declare variable pr_date1 varchar(55);
begin
 /* Procedure Text */
 pr_date = '';
 for select e.executor_id||' '||e.control_date
 from incoming_executor e
 where e.incoming_id=:main_id
 into :pr_date1
 do
  begin
    if (:pr_date1 is not null) then pr_date = pr_date +  :pr_date1;
  end
 suspend;
end


Xmen   (2008-03-24 10:36:00) [12]

да тогда покажите простую путь примером. Пожалуйста...


Sergey13   (2008-03-24 10:23:00) [13]

> [7] Xmen   (24.03.08 10:15)

Можно В ФР. Перед печатью бенда заполняешь вручную переменную чем угодно.

Но неправильно это.


Xmen   (2008-03-24 10:15:00) [14]

а можно это то что я спрашевал в FastReporte реализовать. У меня отчете там выходять, както видел что там тоже есть свой язык программирования или это уже сложно.


Sergey13   (2008-03-24 10:08:00) [15]

> [5] Xmen   (24.03.08 09:41)
> так как это прого для дипломной работе то испольнителе могут быть макс 5 чел

Это неправильно - писать по разному для диплома и не для диплома. Пиши всегда правильно - меньше путаться придется. Кроме того - завалят ведь на защите диплома, если в комиссии не круглые идиоты будут. Скажут - чему ж мы тебя учили то 5 лет?

> а как это реализовать в ХП я еще не исползовал их

На сайет ibase.ru много всякого материала по ИБ/ФБ.


Xmen   (2008-03-24 09:41:00) [16]

Да это так это таблица для документооборота, а как это реализовать в ХП я еще не исползовал их. Обясните это в примере если возможно. так как это прого для дипломной работе то испольнителе могут быть макс 5 чел, разумеется в приделах 255 символов для отображения. Это строка нужно для ввода в отчет.


Sergey13   (2008-03-24 09:08:00) [17]

+
И отправитель еще должен быть во второй таблице.


Sergey13   (2008-03-24 09:05:00) [18]

+
Я так понимаю это документооборот какой то?
У каждой записи второй таблицы могут (даже должны) быть свои даты. Иначе весь учет теряет смысл без хронологии.


Sergey13   (2008-03-24 09:02:00) [19]

ИМХО, без хранимой процедуры никак.
Вот только стОит ли стараться? Если "поле" получится очень большим начнутся проблемы с отображением.


Johnmen   (2008-03-24 09:00:00) [20]

Пиши ХП.


Наверх

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