про интерфейс

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

про интерфейс

Сообщение Vek »

Здравствуйте!

пытаюсь реализовать интерфейс, такой же как в модуле ФРО -> Сводные платежные поручения -> ОКДиР.
Открывается интерфейс, в котором в верхей части показаны Сводные платежные поручения(по таблице ReePlPor),
а в нижней - соответствующие платежные поручения(по таблице PlPor).
В общем, не знаю как сделать.
Подскажите пожалуйста вариант решения.
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

То есть я делаю так:

два браузера и две вьюхи, первая "вьюха" просто выбирает записи из таблицы ReePlPor для верхнего браузера,

а вторая "вьюха" выбирает записи из таблицы PlPor, соответствующие той записи из верхнего браузера (ReePlPor), на которой стоит курсор.

Вот у меня возникла сложность с селектом для второй "вьюхи". Не могу связать эти два браузера.

Подскажите пожалуйста
stray
Постоянный гость
Сообщения: 90
Зарегистрирован: 29 мар 2005, 17:49

Сообщение stray »

посмотри reepldoc - там ссылка на реестр и платежный документ
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение 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 ...

Скажите пожалуйста, что не так
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

1. У вас две логических таблицы. В этом случае надо обращаться к таблицам так table y.plpor

2. В вашем случае у вас в разных браузераз будут разные записи, т.е. плпор ни как не будет связан с реестром.

Если вам это нужно, надо сделать одну логическую таблицу и уже плпор подключать к реестру. Как? Ищите поле связки.
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

1.) сделал так table y.plpor - не компилирует, выдает ошибку Ошибка: Oops. Такой таблицы нет: y

все равно почему-то не работает

2.) ко второй части пока не переходил, так как не получается использовать две вьюхи в интерфейсе. (потом буду пробовать привязать Плпор к Реестру)
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Надо сделать одну вьюху, раз у вас будут связанные таблицы.
Если одна таблица зависит от первой, делается это в одной логической таблице.
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение 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). (логика такая, хотя может и ошибочная)

А как тут поступить я не знаю, может кто-нибудь знает, подскажите пожалуйста
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

Помогите кто-нибу-у-у-дь!

все же не получается сделать так, чтобы выбрав курсором запись из "Сводных платежных поручений" (ReePLPor), в нижней панели отображались несколько соотетствующих платежных поручений(PLPor).

Алексей (см. выше) сказал, что надо использовать одну логическую таблицу, помогите построить эту самую логическую таблицу. У меня не получается прицепить платежные поручения(PLPoR) к реестру (ReePLPoR)

Спасибо!
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Сообщение WiRuc »

Код: Выделить всё

create view 
from reeplpor,PlPor,reepldoc 
where
((
  reeplpor.nrec    ==   reepldoc.creeplpor and
  reepldoc.cplpor  ==   plpor.nrec 
));
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

Спасибо!!! Заработало!

моей ошибкой оказалось неправильное расположение таблиц в подцепке

Спасибо!
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

Здравствуйте!

У меня три браузера:

------------------------------------------------------------------------------------
браузер №1: Реестр платежных поручений(табл. ReePlPor)
------------------------------------------------------------------------------------
браузер №2: Платежные поручения (табл. PlPor)
------------------------------------------------------------------------------------
браузер №3: а тут выводятся Авизо для платежного поручения
------------------------------------------------------------------------------------

Выбрав в первом браузере сводное платежное поручение,
во втором браузере отображаются соответствующие платежные поручения ,
а в третьем браузере - авизо, соответствующие платежному поручению.


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

Использую обработчик cmPositionChanged и в нем "пробегаю" по платежным поручениям из браузера№2 (PlPor) и вычисляю сумму Авизо.

Считает все нормально, но после добавления обработчика изменения позиции(cmPositionChanged), стал невозможен выбор мышкой(перемещение) по любой из нескольких платежек в браузере №2.

В принципе, это и логично, так как после смены позиции в браузере№1 интерфейс автоматически пробегает по браузеру №2 (по выборке во вьюхе из PlPor) и так каждый раз при нажатии на строку из браузера№2.

А вопрос в том, как решить проблему, может обработчик другой использовать , не cmPositionChanged, или еще какой-нибудь вариант решения есть, подскажите пожалуйста
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

cmIdle например - он будет запускатся в течении какого то времени после ничего неделания.
Второй путь объявить процедуру как forward перед create view и использовать ее в выч.полях вьюхи, но она должа быть достаточно шустрой чтобы не приводить к тормозам при любом действии в окнах.
Juve
Постоянный гость
Сообщения: 60
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение Juve »

объявить процедуру как forward перед create view и использовать ее в выч.полях вьюхи
а можно маленький примерчик?
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение 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-)
Жду выхода Вселенная 2.12!
Ответить