Страница 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;
}
куда уж проще... 8-)