-
Привет мастерам.
У меня возникла такая проблема даже незнаю как описать. Такесть у меня 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 Ким Л.А. на выполнения, Иванов Н.Н. на выполнения, Попов Р.Д. на рассмотрения
-
Пиши ХП.
-
ИМХО, без хранимой процедуры никак.
Вот только стОит ли стараться? Если "поле" получится очень большим начнутся проблемы с отображением.
-
+
Я так понимаю это документооборот какой то?
У каждой записи второй таблицы могут (даже должны) быть свои даты. Иначе весь учет теряет смысл без хронологии.
-
+
И отправитель еще должен быть во второй таблице.
-
Да это так это таблица для документооборота, а как это реализовать в ХП я еще не исползовал их. Обясните это в примере если возможно. так как это прого для дипломной работе то испольнителе могут быть макс 5 чел, разумеется в приделах 255 символов для отображения. Это строка нужно для ввода в отчет.
-
> [5] Xmen (24.03.08 09:41)
> так как это прого для дипломной работе то испольнителе могут быть макс 5 чел
Это неправильно - писать по разному для диплома и не для диплома. Пиши всегда правильно - меньше путаться придется. Кроме того - завалят ведь на защите диплома, если в комиссии не круглые идиоты будут. Скажут - чему ж мы тебя учили то 5 лет?
> а как это реализовать в ХП я еще не исползовал их
На сайет ibase.ru много всякого материала по ИБ/ФБ.
-
а можно это то что я спрашевал в FastReporte реализовать. У меня отчете там выходять, както видел что там тоже есть свой язык программирования или это уже сложно.
-
> [7] Xmen (24.03.08 10:15)
Можно В ФР. Перед печатью бенда заполняешь вручную переменную чем угодно.
Но неправильно это.
-
да тогда покажите простую путь примером. Пожалуйста...
-
Сделал так но выдал ощибку, не понял где сделал ощибку
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
-
> выдал ощибку
ждем текст ошибки
-
Текс такой
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
-
сделай явное приведение типов здесь:
e.executor_id||' '||e.control_date
-
хотя ошибка, похоже, при неправильном вызове процедуры
-
если я сделал
e.executor_id
все равно такая ощибка
-
какие типы полей?
как вызываешь ХП?
> pr_date + :pr_date1;
операция + не определена для строковых типов
-
я же вверху писал с ХП незнаком просто гдето посмотрел код ХП и для себя настроил. как нужно сделать правильние
-
> с ХП незнаком
ознакомься, это не долго
-
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".
Что это за ошибка?
-
> Что это за ошибка?
На чём?