Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > View


Автор: SPrograMMer 10.11.2006, 02:48
Значит создаю я его:
Код
Create View MyViewName(List, Fields, _in_, MyView) 
Select * From Пам-парам 
Where Таррам

Создается значит эта зараза.А теперь собственно проблема, но прежде некоторые мои соображения.

Итак View, т е курсор, т е представление. В теории это набор данных, сформированных на основе запроса. Непосредственно таблицей он не является, однако может быть отредактирован (если он это позволяет), при этом непосредственная коррекция произойдет в таблицах, на основе которых был курсор создан. Еще один факт, что это нечто таблицоподобное, это то что к курсорам можно составлять запросы. Все это мы знаем.

Что мы имеем более простыми словами: View - который с одной стороны таблица, но с другой сторны и нет.... А почему нет? Наверное потому... Ну в общем моя проблема:

Создался значит этот курсор. Без ошибок. "все прекрасно". Теперь хотим его просмотреть... Например, в IBConsole, хотя это не принципиально. Идем в ветку Views, видим значок нашего курсора, открываем его. Нам услужливо предлагают его методанные просмотреть, Но они нас не интересуют в данный момент. Идем мы значит на вкладочку "Data", ну что б данные просмотреть.... А на нас в этот самый прекрасный момент ругаются: "invalid database key". и данных нам не дают (уууу какие они злые  ;) ). Такой же эффект (всмысле ругательство) наблюдается если, например в среде Delphi кинуть на форму TIBTable и выбрать в ней таблицу с именем MyViewName, т е наш курсор. А потом попробовать сделать ей Active:=True, то на нас снова начинают злобно и аналогично ругаться.   smile 

Хотя  с другой стороны запрос к представлению:
Код
Select * From MyViewName
отрабатывает и показывает энное количество строчек.
НО!!! мне нужно работать с этим курсором через TIBTable, хоть и изменять я его не буду. И тем не менее такие вот сложности....

Суммарный вопрос (ато буковок много): Можно ли вообще с курсорами работать как с таблицами, через компоненты Table? 

Автор: Akella 10.11.2006, 13:47
а чего так не сделаешь?
Код

Create View MyViewName(List, Fields, _in_, MyView) 
as
Select
T.List,
T.Fields,
T._in_,
Y.MyView
 From Table1 T
Where Таррам

или так
Код

Create View MyViewName
as 
Select * From Пам-парам 
Where Таррам

Автор: SPrograMMer 10.11.2006, 15:03
Цитата(Akella @  10.11.2006,  13:47 Найти цитируемый пост)
а чего так не сделаешь?

Кажется в IB обязательно указание спска полей в предложении 
Код

Create View ViewName (Список полей) As...
 т к  пробовал без него, так как ты говоришь (ибо 14 полей вручную перечислять не очень хотелось), однако на меня ругнулись - пришлось перечислять...

Автор: Akella 10.11.2006, 15:55
ну и что, я 55 перечислял, работай с IBExpert`ом - у него есть "доводчик(знаток) кода", как в Delphi

Автор: SPrograMMer 11.11.2006, 05:50
Цитата(Akella @  10.11.2006,  15:55 Найти цитируемый пост)
IBExpert`ом 

это конечно хорошо, но вот все же: 
Цитата(SPrograMMer @  10.11.2006,  02:48 Найти цитируемый пост)
Такой же эффект (всмысле ругательство) наблюдается если, например в среде Delphi кинуть на форму TIBTable и выбрать в ней таблицу с именем MyViewName, т е наш курсор. А потом попробовать сделать ей Active:=True, то на нас снова начинают злобно и аналогично ругаться. 

Я ведь программулину пишу.... на делфях... а изначально все началось с отчета master-detail, для кторого нужны именно Table, а не Query.  http://forum.vingrad.ru/topic-120638/0.html
Ради того что View - это 
Цитата(SPrograMMer @  10.11.2006,  02:48 Найти цитируемый пост)
нечто таблицоподобное

я его и создавал... поэтому IBExpert - не выход....

Автор: Akella 13.11.2006, 15:08
и Query и Table наследники Dataset`а

Добавлено @ 15:10 
Цитата(SPrograMMer @  10.11.2006,  15:03 Найти цитируемый пост)
ибо 14 полей вручную перечислять

в эксперте есть кнопочка "создать view" и "создать процедуру" и создаётся вьюха или процедура с с кодом, в котором уже перечислены поля

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)