Страница 1 из 2
про интерфейс
Добавлено: 16 фев 2006, 13:39
Vek
Здравствуйте!
пытаюсь реализовать интерфейс, такой же как в модуле ФРО -> Сводные платежные поручения -> ОКДиР.
Открывается интерфейс, в котором в верхей части показаны Сводные платежные поручения(по таблице ReePlPor),
а в нижней - соответствующие платежные поручения(по таблице PlPor).
В общем, не знаю как сделать.
Подскажите пожалуйста вариант решения.
Добавлено: 17 фев 2006, 06:54
Vek
То есть я делаю так:
два браузера и две вьюхи, первая "вьюха" просто выбирает записи из таблицы ReePlPor для верхнего браузера,
а вторая "вьюха" выбирает записи из таблицы PlPor, соответствующие той записи из верхнего браузера (ReePlPor), на которой стоит курсор.
Вот у меня возникла сложность с селектом для второй "вьюхи". Не могу связать эти два браузера.
Подскажите пожалуйста
Добавлено: 17 фев 2006, 11:25
stray
посмотри reepldoc - там ссылка на реестр и платежный документ
Добавлено: 17 фев 2006, 13:00
Vek
Вот такая ситуация сложилась
этот код не компилируется, Сапорт выдает ошибку: Ошибка: Oops. Такой таблицы нет: Plpor
interface interf1 'qqq' show at(0,0,50,20);
create view X
as select * from reeplpor;
create view y
as select * from PlPor;
browse bbb_x show at(1,1,49,8);
table reeplpor;
fields
x.reeplpor.name;
end;
browse bbb_y show at(1,9,49,19);
table PlPor;
fields
y.plpor.nodok;
end;
handleevent
end;
end.
а если вообще закоментировать эту строку table PlPor,
то компилируется, а когда запускаю интерфейс, то Сапорт выдает ошибку Runtime error 216 in ORA73.drv at ...
Скажите пожалуйста, что не так
Добавлено: 17 фев 2006, 13:09
Алексей
1. У вас две логических таблицы. В этом случае надо обращаться к таблицам так table y.plpor
2. В вашем случае у вас в разных браузераз будут разные записи, т.е. плпор ни как не будет связан с реестром.
Если вам это нужно, надо сделать одну логическую таблицу и уже плпор подключать к реестру. Как? Ищите поле связки.
Добавлено: 17 фев 2006, 13:28
Vek
1.) сделал так table y.plpor - не компилирует, выдает ошибку Ошибка: Oops. Такой таблицы нет: y
все равно почему-то не работает
2.) ко второй части пока не переходил, так как не получается использовать две вьюхи в интерфейсе. (потом буду пробовать привязать Плпор к Реестру)
Добавлено: 17 фев 2006, 13:33
Алексей
Надо сделать одну вьюху, раз у вас будут связанные таблицы.
Если одна таблица зависит от первой, делается это в одной логической таблице.
Добавлено: 17 фев 2006, 14:30
Vek
Вот такую подцепку сделал
create view
as select * from reeplpor,PlPor,reepldoc
where((reepldoc.creeplpor==reeplpor.nrec and reepldoc.cplpor==plpor.nrec));
в обычном отчете я бы в первом селекте запоминал Reeplpor.nrec в переменную N, а потом во втором селекте выбирал бы все записи, удовлетворяющие условию where (ReeplPor.nrec = N). (логика такая, хотя может и ошибочная)
А как тут поступить я не знаю, может кто-нибудь знает, подскажите пожалуйста
Добавлено: 21 фев 2006, 14:10
Vek
Помогите кто-нибу-у-у-дь!
все же не получается сделать так, чтобы выбрав курсором запись из "Сводных платежных поручений" (ReePLPor), в нижней панели отображались несколько соотетствующих платежных поручений(PLPor).
Алексей (см. выше) сказал, что надо использовать одну логическую таблицу, помогите построить эту самую логическую таблицу. У меня не получается прицепить платежные поручения(PLPoR) к реестру (ReePLPoR)
Спасибо!
Добавлено: 21 фев 2006, 16:19
WiRuc
Код: Выделить всё
create view
from reeplpor,PlPor,reepldoc
where
((
reeplpor.nrec == reepldoc.creeplpor and
reepldoc.cplpor == plpor.nrec
));
Добавлено: 22 фев 2006, 06:41
Vek
Спасибо!!! Заработало!
моей ошибкой оказалось неправильное расположение таблиц в подцепке
Спасибо!
Добавлено: 09 мар 2006, 12:42
Vek
Здравствуйте!
У меня три браузера:
------------------------------------------------------------------------------------
браузер №1: Реестр платежных поручений(табл. ReePlPor)
------------------------------------------------------------------------------------
браузер №2: Платежные поручения (табл. PlPor)
------------------------------------------------------------------------------------
браузер №3: а тут выводятся Авизо для платежного поручения
------------------------------------------------------------------------------------
Выбрав в первом браузере сводное платежное поручение,
во втором браузере отображаются соответствующие платежные поручения ,
а в третьем браузере - авизо, соответствующие платежному поручению.
Но дальше мне нужно делать некоторые вычисления, в том числе выводить сумму всех Авизо для каждого платежного поручения.
Использую обработчик cmPositionChanged и в нем "пробегаю" по платежным поручениям из браузера№2 (PlPor) и вычисляю сумму Авизо.
Считает все нормально, но после добавления обработчика изменения позиции(cmPositionChanged), стал невозможен выбор мышкой(перемещение) по любой из нескольких платежек в браузере №2.
В принципе, это и логично, так как после смены позиции в браузере№1 интерфейс автоматически пробегает по браузеру №2 (по выборке во вьюхе из PlPor) и так каждый раз при нажатии на строку из браузера№2.
А вопрос в том, как решить проблему, может обработчик другой использовать , не cmPositionChanged, или еще какой-нибудь вариант решения есть, подскажите пожалуйста
Добавлено: 09 мар 2006, 16:53
edward_K
cmIdle например - он будет запускатся в течении какого то времени после ничего неделания.
Второй путь объявить процедуру как forward перед create view и использовать ее в выч.полях вьюхи, но она должа быть достаточно шустрой чтобы не приводить к тормозам при любом действии в окнах.
Добавлено: 13 мар 2006, 14:02
Juve
объявить процедуру как forward перед create view и использовать ее в выч.полях вьюхи
а можно маленький примерчик?
Добавлено: 13 мар 2006, 17:10
Max_Fin
Код: Выделить всё
function GetSQR(x: Double): Double; forward;
.create view
as select
GetSQR(LSchet.Tarif) (fieldname = sGetSQR)
from LSchet;
function GetSQR(x: Double): Double;
{
GetSQR := x * x;
}
куда уж проще...