powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Из курсора в таблицу на форме
24 сообщений из 24, страница 1 из 1
Из курсора в таблицу на форме
    #38531145
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть таблица (к примеру asd(id, name, pdate, rdate, pvid)). В блоке 3 поля DateStart, DateEnd, Vid -условия для pdate, rdate, pvid и таблица. Есть кнопка, которая должна загрузить все из asd с условием
pdate>:Block.DateStart
rdate<:Block.DateEnd
pvid=:Block.Vid

Делаю триггер на кнопку - WHEN-BUTTON-PRESSED

DECLARE
CURSOR EE IS
SELECT name, pdate, rdate, pvid FROM asd WHERE pdate>:Block.DateStart AND rdate<:Block.DateEnd AND pvid=:Block.Vid;
BEGIN
OPEN EE;
LOOP
FETCH EE INTO :BLOCK.name, :BLOCK.pdate, :BLOCK.rdate,:BLOCK.pvid;
EXIT WHEN EE%NOTFOUND;
END LOOP;
CLOSE EE;
END ;

Проблема в том, что вставляется последняя строка. Подскажите, где я что либо не так сделал, oracle знаю мало.
Как сделать EXECUTE_QUERY c условием?
Спасибо
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531181
Лоботомик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ramm9999,

ну так почитай книжки. что за мода пошла, хвататься за скальпель не выучив даже латынь.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531239
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лоботомик, спасибо за ответ.
Читаю, но времени оч мало. Да и сколько не читаю-каша в голове. Я понять не могу - почему не вся таблица выходит, а последняя строка. Дебагерром посмотрел курсор - вся инфа есть в курсоре, но как ее всю вывести... И как сделать EXECUTE_QUERY c условием? Как устроен EXECUTE_QUERY?
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531242
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно, конечно, сделать "Запрос"-->"Ввод", но надо через нажатие кнопки.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531258
oracle1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ramm9999, У тебя с курсора фетчаться все строки по одной в твои переменные, соответственно последней отфетчиться последняя строка. Формс не знаю, в pl/sql можно FETCH BULK COLLECT INTO в коллекцию.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531393
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ramm9999

DECLARE
CURSOR EE IS
SELECT name, pdate, rdate, pvid FROM asd WHERE pdate>:Block.DateStart AND rdate<:Block.DateEnd AND pvid=:Block.Vid;
BEGIN
go_block(:BLOCK);
for x in ee loop
create_record;
:BLOCK.name:=x.name;
:BLOCK.pdate=x.pdate;
:BLOCK.rdate:=x.rdate;
END LOOP;
commit;
END ;
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531429
ten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,
commit лишний.

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531627
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, все понял,помогло.
В свободное время поищу еще способ, найду-напишу.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531797
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ramm9999Как сделать EXECUTE_QUERY c условием?
условие задается в свойствах блока
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38531947
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ramm9999
На всякий случай, спрошу - вы уверены, что вам нужна именно такая реализация? Стандартный блок в Forms замечательно поддерживает выборки и условия отбора по ним без этого вашего "велосипедного" кода.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38532062
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не уверен. Насчет "велосипедности" соглашусь - так как пока вкурил более-менее оракл. Реализация нужна через кнопку, а не в колонке вводить условие выборки.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38532166
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, тогда, RTFM (concepts по дата-блокам, set_block_property, query_data_source_name, default_where, onetime_where и т.п.)
Строить блок, как у вас, никто не запрещает - дело ваше... :) Просто это, так сказать, не совсем по формсовскому фен-шую.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38536279
Bombat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ramm9999
Если данные в блоке не нужно будет редактировать, то...
Свойство блока QUERY DATA SOURCE TYPE устанавливаете в значение FROM...
В QUERY DATA SOURCE NAME пишете запрос
В DEFAULT WHERE - условие (при необходимости можно изменять динамически через вызов SET_BLOCK_PROPERTY('БЛОК', DEFAULT_WHERE, 'УСЛОВИЕ'))
На кнопку вешаете триггре
GO_BLOCK('БЛОК');
DO_KEY('EXECUTE_QUERY');

Есть еще куча вариантов реализации данной задачи, но это самый простой (ИМХО).
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38536371
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я уже понял как делать. Именно так и сделал. Стыдно, конечно, за тот код, который сперва хотел использовать.
Еще вопрос знатокам.

Есть поле, по которому идет фильтрация, pvid. пусть он принимает 3 значения ('aaa','bbb','ccc')-потом может быть больше путем update.
Если поле pvid заполнено-то фильтруем по этому значению, если не заполнено-то берем по всем значениям.
Как это сделать в oracle forms?
Пока мысль ("велосипедность") - сделать аггрегацию строк в одну (через "sys_xmlagg(xmlelement..."), затем применить REGEXP_LIKE.
Спасибо.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38536378
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эмммм....DEFAULT_WHERE?
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38536724
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя одно текстовое поле? Как туда пользователь будет вводить значения?
Может тебе скинуть книжку по формсам на русском языке?
Ты в состоянии конструировать на ходу условие поиска любым удобным для тебя видом, можешь собрать как IN (),
можешь запихнуть в массив и обращаться к нему как к таблице, можешь как предложил - все приемлемые.


И если не секрет, что за проект, новый или старый? Мне кажется что мы (формсовики) уже сильно вымирающий вид.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38537607
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
предлагаю заценить велосипед:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select cr_id from CR where REGEXP_LIKE (currency,'[' || 
(
  select NVL(:BASE_BLOCK.CURR,
  (
  Select to_char(
		 sys_xmlagg(
			   xmlelement(
                                     "QWER", xmlagg(xmlelement("COL", cur || ',')
			             Order by cur
			             )
                           )
                 ).extract('ROWSET/QWER/COL/text()').getclobval()
  ) as cur
  From (select distinct(cur) as cur from CR ) 
  group by cur
  )
            ) as cur
  from dual
)
|| ']')



если пользователь ничего не вводит, то выводится все.
Прошу прокомментировать, направить на путь правильный. Чтобы не плодить потом "говнокод". Спасибо.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38537608
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вместо currency cur в самом начале
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38537616
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Книжку посоветуйте-хороший совет не вредит.
Проект тестовый.
Я не формсовик-хочу влиться в oracle. До этого с T-SQL был знаком.

Пользователь может фильтровать по дате (2 поля -between между датами) и текстовому полю. Если эти поля пустые - то выводится все. Можно, конечно, сделать чтобы пользователь выбирал из списка значений, но я не стал этого делать.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38538653
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не сохраняется учебник, размер больше
Скидывай почту
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38538660
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38539080
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скинул
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38539167
brig_2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ramm9999,

Формсы - это не делфи, васик или ява. В формсах за тебя уже вве сделано для работы с бд, нало только знать. При этом надо понимать, что формсы - это не язык программирования, а инстркъумент, со своею логикой работы, а пл/скл при этом выполняет лишь вспомогательную роль. Так что учи сначала, делай потом. Быстро, на лету не получится. Зато потом можно клепать формочки для работы имеено с бд раза в 3 быстрее, чем на лругих технологиях. Единственное ограничение , так как оракел не развивает технологию эту, то клиент и пл/скл остались на уровне оракл 8, поэтому, если надо какие-то новые фичи, то делай вью или пакеты в базе, а не в формсах. А из формсов просто дергай их.
...
Рейтинг: 0 / 0
Из курсора в таблицу на форме
    #38539572
ramm9999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за советы, надеюсь получится из меня что то стоящее
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Из курсора в таблицу на форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]