powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / реинжиниринг с помощью cache
100 сообщений из 100, показаны все 4 страниц
реинжиниринг с помощью cache
    #36519783
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет, изучаю cache только пару дней. такой вопрос.
у меня есть приложение написанное на visual foxpro 9, там небольшая база данных и форма для ввода/вывода результатов работы.

нужно это реализовать в cache. подскажите как ( с помощью каких элементов) это можно сделать.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36519810
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хранение, можно организовать в классах, это можно сказать таблицы как в реляционных базах
а вот формы ввода/вывода можно организовать на ZEN

если в данном приложении логика не сложная, простой ввод информации и ее отображение, то реализовать на Cache будет не сложно, особенно используя последние версии
таблицы из FoxPro, можно импортировать, целиком вместе с данными

а вот с ZEN придется помучится, он еще никому так просто сразу не сдался

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36519831
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

про импорт - полезна инфа, пасиб, а насчет логики, там сложно)

и еще вопрос, если делать с zen, можно потом exeшник, или только как веб страницу?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36519999
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoа насчет логики, там сложно)
Тоже запросто реализуется...

akihitoесли делать с zen, можно потом exeшник, или только как веб страницу?
Экзешника не будет ни при каком раскладе с "чито" Кщеем.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36520021
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihito,

типа EXE, можно только если реализовывать текстовый интерфейс, тогда можно по телнету подключатся, но это прошлый век

ну а можно написать свой клиент, в котором и будет реализована логика, можно реализовать не только под Windows, но и кросс-платформенный клиент
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36520193
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы посоветовал не мучаться с zen, сначала попробуйте csp - это то, что обёртывается zen'ом (подробее в документации очень понятно описано), полегче в изучении (тем более, что вы только начинаете), да и может этого вам хватит с полна.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36520734
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем за советы, буду пробовать )
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36520993
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor
а вот с ZEN придется помучится, он еще никому так просто сразу не сдался

Кстати вот до сих пор не понимаю (благо нет необходимости), хотя с каше давно работаю.
То есть в целом понимаю, что это из себя представляет, но не пойму зачем?
То есть мне кажется, что в XML запихивать структуру страницы получается сложнее и непонятней, чем ее просто так написать?
Но люди вроде хвалят, говорят, именно для быстрой разработки хорошо
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521090
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

Ну как вам сказать, я на предыдущем месте работы, был первопроходцем в разработке под ZEN
ну на самом деле если приноровится, ZEN очень хорош, но правда он еще сильно сырой
можно довольно быстро разработать приложение, с неплохим интерфейсом, не забывая про наследование, можно создавать свои собственные компоненты
разработка в которой я участвовал была уникальна тем что там, никак не использовать стандартные визуальные компоненты, типа кнопок листов меню и прочего, так как был задуман особенный интерфейс, с учетом использования тачскрина
поэтому было написано несколько компонентов, для использования во всем приложении
и учесть что все страницы наследуются от одной, где описан так сказать шаблон, на котором отображается шапка и низ страницы, причем главный шаблон умеет взаимодействовать с элементами на странице, к примеру, на шаблоне размещались кнопки постраничной навигации, а сам компонент который нужно листать находился на подчиненной странице
и ведь в дальнейшем для добавления новой страницы, с другой информацией, необходимо лишь отнаследовать от шаблонной страницы, добавить список на основе нужной таблицы, и все

если бы я писал все на голом CSP, я бы точно с ума сошел, все это вместе стыковать, и пришлось повторять куски кода во всех файлах, а при таком повторении очень легко что-то пропустить
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521265
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor , csp тоже можно делать по-разному... Наследование тоже там есть...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521353
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну с вами то у нас на этот счет разговор помнится уже был ))
Вы же сами переходите на ZEN

CSP, можно использовать только если на самих классах делать, без прослойки в виде файла CSP

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521413
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorВы же сами переходите на ZEN
Типа новые технологии!

DAiMorCSP, можно использовать только если на самих классах делать, без прослойки в виде файла CSP
Да, наследование только с классом... Но и с файлами можно применять

Код: plaintext
<!--#include virtual="/adm/inc/mainhead.csp"-->

Подправишь что-то в mainhead.csp - изменения будут во всех страницах, его использующих...

В ЗЕНе мне не нравится эта "матрёшность" элементов разметки. Тем более когда видишь что некоторые элементы даже в этом случее "не находят своего правильного места"...
Тут на форуме есть мой пример с ЛокаутМеню...
Зато с табличками вроде трынь-брынь - и особо голова не болит как ими управлять.

Хотя у ребят есть контраргументы с ДжиКвери, де там более лучше и более распространено и применимо в других конторах, если придётся увольняться с Кащея...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521442
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor
если бы я писал все на голом CSP, я бы точно с ума сошел, все это вместе стыковать, и пришлось повторять куски кода во всех файлах, а при таком повторении очень легко что-то пропустить
Куски повторяющегося кода в интерфейсный класс, страницу отнаследовать от него, на странице вызовы базовых методов. Хотя не спорю, код-ориентированная разработка CSP имеет ряд преимуществ.
1.CodeCSP=cache+html+css+javascript+csp:class
2.TagCSP=cache+html+css+javascript+csp:class+csp:tag
3.Zen=cache+html+css+javascript+zen:class+zen:xml+zen:tag
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521806
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Да, наследование только с классом... А как же
Код: plaintext
<CSP:CLASS SUPER="MyApp.MyPage" /> 
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521814
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Хотя у ребят есть контраргументы с ДжиКвери, де там более лучше и более распространено и применимо в других конторах Если понадобится нанимать их на работу ;)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36521902
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintА как же
Код: plaintext
<CSP:CLASS SUPER="MyApp.MyPage" /> 

Такое не использовал...
Икак там потом писать часть своего кода? Допустм в супер классе есть шапка и поддон... Как в дочернем классе дописать середину?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522077
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Код: plaintext
1.
2.
3.
4.
5.
6.
<CSP:CLASS SUPER="MyApp.Template" /> 
...
<server>d ..wHeader()</server>
<div><!-- do something --></div>
<server>d ..wFooter()</server>
...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522091
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТакое не использовал...
Икак там потом писать часть своего кода? Допустм в супер классе есть шапка и поддон... Как в дочернем классе дописать середину?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<html>
<head>

<!-- Put your page Title here -->
<title>	Cache Server Page </title>

</head>

<body>
<script language="Cache" method="workGet"
 arguments="id:%String" returntype="%String">
   &js<CSPPage.document.form.Name.value = #(^work("Name",objid))#;
      if (condition) {
         CSPPage.document.form.DOB.value = #(^work("DOB",objid))#;
      }
      else {
         CSPPage.document.form.DOB.value = '';
      }
   >
</script>

		<!-- Put your page code here -->
		My page body
</body>
</html>

Ctrl+F7 -> Ctrl+Shift+V

в documatic'е
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522173
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще о наследовании в CSP
Код: plaintext
1.
2.
<script language="cache" runat="compiler">
  d %compiler.Set("%cspclass.SUPER","%CSP.Page,MyApp.Template")
</script>
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522285
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint
Код: plaintext
1.
2.
3.
4.
5.
6.
<CSP:CLASS SUPER="MyApp.Template" /> 
...
<server>d ..wHeader()</server>
<div><!-- do something --></div>
<server>d ..wFooter()</server>
...

А как тогда выглядит MyApp.Template.csp?

Второй пример я не понял... Про что там?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522286
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaВторой пример я не понял... Про что там?
Это уже вопрос к neznau ...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522399
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Class MyApp.Template Extends %CSP.Page [ ProcedureBlock ] {
 ClassMethod wHeader(ByRef args as %String="") as %Status {
	w "<div><h1>Header</h1></div>"	Q $$$OK	
 }
 ClassMethod wFooter(ByRef args as %String="") as %Status {
	w "<div><h1>Footer</h1></div>"	Q $$$OK	
 }
}
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522412
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , нууу...
По-мне так это хуже чем
Код: plaintext
<!--#include virtual="/adm/inc/mainhead.csp"-->
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522465
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, нууу... :) А по мне так это хуже, чем класc (возможно не первый в иерархии) с параметрами и методами, который я могу подписать тестами. Для самых простых вариантов использование
Код: plaintext
<csp:include>
или
Код: plaintext
<!--#include virtual="/adm/inc/mainhead.csp"-->
возможно будет более лаконичным, кто же спорит
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522582
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsakrvsaВторой пример я не понял... Про что там?
Это уже вопрос к neznau ...

:)

посмотрите во что превращается csp файл после компиляции, там сразу все понятно станет, как что сделать с методами (как их объявить в самом csp-файле, как указать последовательность вызовов и т.п. и т.д.), суперкласс указывается как тут уже писали через "<CSP:CLASS SUPER=..."
этот пример я просто скопипастил из документации :)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522725
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznau , мне больше нравятся понятные изначально по тексту csp-странички...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522810
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.То есть мне кажется, что в XML запихивать структуру страницы получается сложнее и непонятней, чем ее просто так написать?
Но люди вроде хвалят, говорят, именно для быстрой разработки хорошо

1. html вроде подмножество xml. Даже с учетом "странности" лэйаута зена, "постигается" его разметка гораздо быстрее, чем html или xsl. Другой вопрос, если у Вас большая практика html-разметки... Мне это не мешает...

2. ZEN - он не про разметку... он, скорее, про Ajax... Вернее, даже про интереснейшую реализацию MVC для http & Cache'.

Контролы убогие, но в реальной работе даже являются некой лакмусовой бумажкой - если их "не хватает", то значит задача поставлена неверно... Такая посылка меня лично выручила раз 100 (если не больше ;)
Редкие (единичные) исключения из этого правила заканчивались, обычно, разработкой новых контролов.

3. В условиях, когда нет заведомо однозначной информации о том, что же, собственно, нужно заказчику. Как инструмент прототипирования zen поспорит с чем угодно... Быстрее можно, разве что, на бумаге нарисовать (и то не всегда - на "простой справочник" с несколькими скалярными полями и парой ссылок на другие справочники, уйдет до 5 минут, при правильных предках, читай - инфраструктуре). Но бумаге клиент склонен верить (а потом утверждать "я совсем не это имел ввиду!"), а тут может сразу пощупать.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522831
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего лично мне не хватает в ZEN-е, так это старого доброго ##server. Подо все методы сервера приходится обертки писать... Скукота.

Мож, кто знает, как обращаться из js к серверным методам напрямую в ZEN?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522864
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov1. html вроде подмножество xml.
Это не так... Т.е. то, что уже может называться ХТМЛ ИКСМЛем не назать.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522895
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovЧего лично мне не хватает в ZEN-е, так это старого доброго ##server. Подо все методы сервера приходится обертки писать... Скукота.

Мож, кто знает, как обращаться из js к серверным методам напрямую в ZEN?
Покажи как ты это делаешь? Что там за "обёртки" у тебя?

Как раз в ЗЕНе-то это выглядит вообще просто. Вызвал метод и все! Без всяких там
Код: plaintext
#srver(...)#

Кстати такая штуковина только в Кащее и есть! ПХПисты с ХТТПРеквестом дрючатся дабы на сервер обратиться, чего-то с него получить...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36522937
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот мой пример...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
/// Просмотр поступлений техники
ClassMethod Shipping() [ Language = javascript ]
{
	id=zenPage.cIdClient(zenPage.idItem)
	if (id=='') {
		alert('Id клиента не определено...')
		return
	}
	zenPage.Go('uch.ZEN.Shipping.cls?id='+id)
}

/// Вернёт Id клиента
ClassMethod cIdClient(Id As %String) As %String [ ZenMethod ]
{
	s o=##class(uch.DAT.Enterprise).%OpenId(Id)
	s id=o.Client.%Id()
	d o.%Close()
	q id
}

Никакой "обёртки". Просто вызов... Просто метод...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36523280
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Без всяких там
Код: plaintext
#server(...)#
Кстати такая штуковина только в Кащее и есть! ПХПисты с ХТТПРеквестом дрючатся дабы на сервер обратиться, чего-то с него получить...
Кстати, Cache тоже с тем же ХТТПРеквестом дрючится, только старательно это скрывает :) Даже когда просто вызов просто метода, то обертка, которой Вы не замечаете, этим самым и занимается.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36523380
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , я в курсе что чудес не бывает... Но синтаксис есть синтаксис. У одних он есть... У других его нет.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525173
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПокажи как ты это делаешь? Что там за "обёртки" у тебя?

Ваш пример работает для вызова методов ZEN, расположенных на той же странице, откуда идет вызов.
А вот в случае, когда мне нужно вызвать метод не с текущей странички, выглядит это так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ClientMethod jsCheck() [ Language = javascript ]
{
	var p =  1 
	var tmp = zenPage.zenCheck(p);
}

ClassMethod zenCheck(p As %String) As %String [ ZenMethod ]
{
	q ##class(my.Class).serverCheck(p)
}
Вместо того, чтобы сразу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ClientMethod jsCheck() [ Language = javascript ]
{
	var p =  1 
	var tmp = #(##class(my.Class).serverCheck(p))#;
или
	var tmp = #server(my.Class.serverCheck(p))#;
или
	var tmp = #call(my.Class.serverCheck(p))#;
}
В ZEN-е это не прокатывает, к сожалению...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525237
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какой смысл вызывать методы не той страницы, а другой
если прям так нужно вызывать методы другого класса, можно добавить этот класс в SUPER
либо создать отдельный не визуальный компонент, и на страничке его добавить, и тогда будут доступны его методы через component.Mymethod()

у вас странная идея вызывать методы другого класса, что-то я не знаю языков которые используются для WEB и в них можно было вызвать функции из другого файла, без дополнительного обьявления

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525254
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov , не вижу особой разницы в вызове... Главное что это есть. И оно не дюже геморное...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525281
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора какой смысл вызывать методы не той страницы
Еще какой!
И причем методы не страниц (это скорее плохой тон), а методы хранимых классов.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525301
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.автора какой смысл вызывать методы не той страницы
Еще какой!
И причем методы не страниц (это скорее плохой тон), а методы хранимых классов.

тем более, обращаться к методам хранимых классов со стороны браузера, по-моему не очень безопасно будет
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525373
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorа какой смысл вызывать методы не той страницы, а другой
если прям так нужно вызывать методы другого класса, можно добавить этот класс в SUPER
либо создать отдельный не визуальный компонент, и на страничке его добавить, и тогда будут доступны его методы через component.Mymethod()Не часто, но это бывает нужно. Пример: на многих интерфейсах при вводе информации объектов класса "собака" после выбора хозяина нужно вызвать метод рассчитатьПодсказкуДляПособачногоНалога (АйДиХозяина, Известные, Параметры, Псины), который, на основании существующих питомцев и их свойств, а также предполагаемого нового песика, возвращает рекомендацию типа "Желательно взять суку, с весом до 5 кг., короткошерстную. В этом случае налог будет ... руб."

DAiMorу вас странная идея вызывать методы другого класса, что-то я не знаю языков которые используются для WEB и в них можно было вызвать функции из другого файла, без дополнительного обьявленияХм... CSP с этим прекрасно справляется ;)

Впрочем, как я уже пояснил, неудобство это шутошное ;)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525382
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.И причем методы не страниц (это скорее плохой тон), а методы хранимых классов.О! Наш человек!
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525433
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorтем более, обращаться к методам хранимых классов со стороны браузера, по-моему не очень безопасно будет

А откуда "безопасно", если не секрет? Вопрос, имхо, риторический...
Я больше скажу - Вы их все равно оттуда вызовете... так или иначе... Мне нравится, когда это можно делать при обработке событий на странице, кому-то другому удобнее сделать семислойную архитектуру и послойно вызывать обертки, проверяя при этом черти-что... при том, что за всю безопасность уже с лихвой ответили роли/ресурсы... а вся бизнес-логика зашита в методы на COS (если не так, то нахрена козе баян нам Каше, спрашивается?)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525490
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
#call()# и #server()# скрытые ajax вызовы динамически создаваемых на стороне Cache страниц. Посмотрите на это с точки сервис-ориентированного приложения. Каждая страница это web-функция с параметрами (ответ в форматах HTML, XML, JSON, text). Вызов любого метода возможен через оберточный класс (например, наследник %СSP.Page) через HTTP-request.
На стороне сервера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Class csp.anyFunction Extends %CSP.Page {
 ClassMethod OnPage() As %Status {
  s class=$G(%request.Data("class")),method=$G(%request.Data("method"))
  ;!!!ПРОВЕРКИ!!!, например Q:'##class(%Dictionary.CompiledClass).%ExistsId(class) $$$OK и т.д
  m args=%request.Data ;
  d $zobjclassmethod(class,method,args) ;или write 
  Quit $$$OK
 }

На клиентской странице:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<script src="js/jQuery-1.3.2.min.js" type="text/javacript"/><!--write less, do more - есть версия 1.4-->
<script type="text/javascript">
  function btnClick(e){
      var result = $.ajax({
      url: "csp.anyFunction.cls"  //вызов посредника
      ,type: "POST"
      ,data: ({id : this.getAttribute('id')})
      ,dataType: "html",  
     }).responseText;
     //делаем что-нибудь с переменной на клиенте 
     $("#serverResponse").text(result); //например выводим в элемент с id=serverResponse
  }
</script>
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36525501
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в data забыл добавить добавить значения class и method
Код: plaintext
1.
2.
3.
4.
5.
<script type="text/javascript">
 ....
 ,data: {id : this.getAttribute('id'),class:"MyDog",method:"GetDogTaxTips "}
 ...
</script> 
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36526493
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

Но это тоже своего рода обертка. ZEN-овский вариант, на мой взгляд, даже приятнее с виду ;)
Хотя и применение, думаю, можно найти. Спасибо.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36532711
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а импорт данных из фокс про к примеру в cache осуществляется с помощью DeepSee?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36532735
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoа импорт данных из фокс про к примеру в cache осуществляется с помощью DeepSee?
нет DeepSee совсем для другого предназначен
Создаешь подключение по ODBC, соответственно на сервере с кашей, должен стоять ODBC драйвер для FoxPro, и должно быть настроено в Windows подключение по ODBC к нужному серверу
в портале [Домашняя страница] > [Конфигурация] > [Параметры Объектного/SQL Шлюзов] > [Соединения SQL Шлюза]
после создания подключения в Cache
в портале на главной в столбце управления данными пункт SQL
выбрав слева область, где будут созданы классы и куда будут сохранены данные
выбираешь мастер миграции данных
в мастере указываешь свое подключение, схему(если есть), и выбрать одну или несколько таблиц
на следующей странице лучше переименовать схему, если была [null schema]
после завершения мастера, и завершения миграции данных, в Cache будут все те же таблицы, что и в фоксе, с теми же данными
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36533752
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMorпосле завершения мастера, и завершения миграции данных, в Cache будут все те же таблицы, что и в фоксе, с теми же данными
Еще не мешало бы сверить данные с оригиналом после миграции. У меня были случаи, когда не все записи импортировались, хотя идентичная операция с помощью кода Cache (через %SQLGatewayConnection) зачитала из того же DNS-источника все записи.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36540127
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

устанавливаю ODBC драйвер для FoxPro, в Администратор источников даных для ODBC выбираю этот драйвер и прописываю путь к нужной database.

В Соединения Объектного/SQL Шлюзов пишет "Не найдено ни одного элемента".
что-то еще настраивать?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36540184
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну правильно его еще нужно добавить
выше есть ссылка Создать новое соединение
там можно будет выбрать настроенный DSN
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36540481
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

в форме для нового соединения есть поля Пользователь и Пароль. что туда вводить?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36540739
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
логин и пароль можно не указывать
полагаю они нужны в том случае если при настройке DSN они не указывались, либо нужно подключаться с другим логином и паролем

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36540845
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вобщем если создавать DSN как системный, а не как пользовательский, то работает.
только зависает на последнем шаге мастера миграций, и кнопка завершить никак не загорается.

а на что можно поменять [null schema], может в этом дело?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36540895
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[null schema] можно поменять на что угодно
в Cache необходимо чтобы классы группировались в пакеты
так вот [null schema] и есть имя нового пакета
к примеру в вашей бд есть таблица users, в каше она так называться не может, она должна начинаться с имени пакета, разумно разделять таблицы/классы с разным назначением в разные пакеты
к примеру вы грузите таблицу users в cache в каше указываете имя пакета sys
тогда класс в каше появится sys.users.cls, а sql запрос приобретает вид
select * from sys.users

можно назвать пакет User, тогда в sql запросах имя пакета можно будет опустить
и можно будет использовать запросы вида
select * from users
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36551149
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как в каше просмотреть импортированную таблицу?
а то нахожу только описание свойств.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36551371
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoа как в каше просмотреть импортированную таблицу?
Как вариант в SQL-менеджере сделать запрос

Код: plaintext
select * from <table>
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36564455
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такой вопрос.

есть таблица, нажимая любую ячейку в всяких листбоксах, появляются данные для нее, я выбираю те данные, что нужны, и они должны в этой ячейке сохраниться.
такую таблицу можно реализовать с помощью <dynaGrid>?
и нужен ли тут Model View Controller?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36564757
iriskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да можно, смотри по форуму, здесь много тем на счет dynaGrid
если в свойствах грида указать
Код: plaintext
ondrawcell="return data;"
, то можно вставить любой html компонент в ячейку, с зен компонентами не работает.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36564758
iriskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihito,

на счет контроллера, если с ним проще тебе то нужен, я вообще всячески желал использовать его у себя, но не выходит пока у нас ничего :(
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36569644
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно реализовать (в каше) приложение с таким вот интерфейсом:
http://s004.radikal.ru/i207/1004/c4/7df95715b087.jpg
требования к нему:
- приложение открыто одновременно у всех клиентов (не больше 10) и все могут редактировать данные , сервер каждые 60 сек проверяет страницы клиентов на изменения и если есть обновляет.

как ПРОЩЕ реализовать, с помощью Zec или CSP?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36569648
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://s004.radikal.ru/i207/1004/c4/7df95715b087.jpg
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36569905
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoсервер каждые 60 сек проверяет страницы клиентов на изменения и если есть обновляет.
Сервер не имеет права что-то делать у клиента. Другое дело на клиенте выполнять некую функцию по таймеру, которая и будет проверять обновления и перезагружать страницу/элемент по надобности...

akihitoкак ПРОЩЕ реализовать, с помощью Zec или CSP?
Как понимать это "проще"? На csp-это можно сделать явно быстрее (чисто физически)... Но не факт что работать с этим будет проще нежели на ЗЕН...

P.S. А дизайнец ппц! Кто делал?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36570405
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мой препод)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36570462
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihito , тонко намекни ему что он явно переборщил с количеством элементов на странице.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36571384
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihito, проще будет с тем, что лучше знаете. Надо только знать как это работает.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36572293
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
из документации про csp:

Question:
I want my page to automatically refresh every 60 seconds. How should I do this?
Answer:
In the head of your CSP page, use the following metatag:
META HTTP-EQUIV="REFRESH" CONTENT="60; URL=mypage.csp">

все так просто, одна строчка ?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36572453
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihito,
С Вашим примером интерфейса, жестоко так издеваться над сервером и пользователями :) И к тому же, это не csp.
Код csp страницы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<script runat="server" language="cache" method="GetRandom" arguments="jsfunc:%String" returntype="%Boolean">
    s jsfunc=$G(jsfunc,"alert"), random=$R( 10 )
    w jsfunc,"(",random,"); " Q  1 
</script>
<html><head><title>Пример периодического обновления с сервера</title></head><body>
<label>Случайное число с сервера, каждую секунду: </label>
<input type="text" id="R" value="#($R(10))#" style="width:2em;"/>
<script type="text/javascript">
  var page={R:null}; 
  page.serverCall=function(){ //асинхронный вызов сервера
	#call(..GetRandom("page.setRandom"))#;	  
  }
  page.init=function(){ //инициализация
	 page.R=document.getElementById("R"); //приемник значения
	 setInterval(page.serverCall,  1000 ); //вызов каждую секунду
  }
  page.setRandom=function(/*Число с сервера*/ random){ //callback
     if (page.R) page.R.value=random;
  }
  //после загрузки страницы, запуск инициализации
  if ("\v"=="v") {
	  window.attachEvent("onload",page.init);
  }	else {
	  window.addEventListener("load",page.init,false);
  }
</script>
</body></html>
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36572503
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , не хорошо скрипты не в ХЕДе держать...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36572574
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, "вера - чувство иррациональное и не требует доказательств". Вы говорите "нехорошо", тут говорят "очень хорошо". Как жить завтра, если уже сегодня никому нельзя верить ;)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36572649
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там, кстати, говорят наоборот "Располагайте скрипты внизу страницы"

хотя для интранет-приложений это будет пофиг.
Мы тоже часто скрипты в хеде храним, иногда (когда сразу в скриптах идет подстановка переменных каше) внизу.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36572796
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintКак жить завтра, если уже сегодня никому нельзя верить ;)
Да уж...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36583077
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу добавить из фокса в каше таблицу. (4 свойства, 2 строчки, даже без индекса)
В текущих фоновых задачах выдает ошибку:

CopyTableFKeys -400 .table1: SQLState: (IM001) NativeError: [0] Message: [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции

Но пакет с таблицей в каше добавляет. И я могу просмотреть свойства таблицы.

В разделе "Выполнить SQL выражение" пишу:
SELECT * FROM d.table1

Выдает ошибку:
ОШИБКА #5540: SQLCODE: -30 Сообщение: Таблица 'D.TABLE1' не найдена

Что это значит, данные не добавляются или я не правильно табл открываю?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36585546
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, что значит ошибка:

CopyTableFKeys -400 .table1: SQLState: (IM001) NativeError: [0] Message: [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36585571
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoПодскажите, что значит ошибка:

CopyTableFKeys -400 .table1: SQLState: (IM001) NativeError: [0] Message: [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции

так как данный метод в описании
Copy Foreign Keys from remote DB to Cache for the given FK Table.
видимо драйвер не поддерживает копирование внешних ключей (Foreign Keys)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36585776
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
драйвер версии 6.1 отсюда http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36586555
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor[quot akihito](Foreign Keys)
Нет в моей таблице ни Primary Keys, ни Foreign Keys.

Может данные перенеслись в каше, а я не могу их просмотреть?

SELECT * FROM d.table1
Ошибка:
ОШИБКА #5540: SQLCODE: -30 Сообщение: Таблица 'D.TABLE1' не найдена
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36588333
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihitoSELECT * FROM d.table1
Ошибка:
ОШИБКА #5540: SQLCODE: -30 Сообщение: Таблица 'D.TABLE1' не найдена
1. В портале область выбрана правильно?
2. Имя схемы "D"?
3. Через пункт "Открыть таблицу" открывается таблица? ("SQL" -> "Просмотр SQL схем" -> выбираем схему "D" -> выбираем таблицу "TABLE1" -> пункт меню "Открыть таблицу".)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36588805
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,
через "открыть таблицу" все работает, а в зен пейдж пишет - найдена.
с областью все верно.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36588808
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в зен пейдж - НЕ найдена.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36589623
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihitoв зен пейдж - НЕ найдена.
С Зен не работал, поэтому тут ничем не могу помочь. Проблема похожа на эту тему (хотя там четкого ответа нет).

akihitoВ разделе "Выполнить SQL выражение" пишу:
SELECT * FROM d.table1
Выдает ошибку:
ОШИБКА #5540: SQLCODE: -30 Сообщение: Таблица 'D.TABLE1' не найдена
Это тоже не работает?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36589902
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TurkПроблема похожа на эту тему (хотя там четкого ответа нет).
Там он вроде нашел откуда ноги растут, если далее пошел проблемы создавать/решать...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36591183
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
Для проверки можно в страничку можно добавить
<p>Проверка наличия данных #($d(^Family.HumanD))#</p>

это в сsp?
а как в зен?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36591554
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoэто в сsp?
Да.

akihitoа как в зен?
Как вариант вот так...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
<html 
	id="myContent" 
	OnDrawContent="GetInfo" 
/>
...
/// Дополнительная информация о ком-либо или о чем-либо
ClassMethod GetInfo(pSeed As %String) As %Status
{
    &html<<p>Дополнительная информация о ком-либо или о чем-либо #($d(^Family.HumanD))#</p>>
    Quit $$$OK
}
...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36591616
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihito , а покажика "заголовок" своего класса... Есть там вот такая фигня?

/// test
Код: plaintext
Class tmp.test Extends %Persistent [ SqlTableName = "tmp.MY" ]
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592364
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
///
Class aaa.table1 Extends %Persistent [ ClassType = persistent,
DdlAllowed, Owner = UnknownUser,
ProcedureBlock, SqlRowIdPrivate,
SqlTableName = table1, StorageStrategy = "" ]


А может что проблема в том, что когда в Портале Упр. Системой таблица мигрирует из фокса, там Пользователь - UnknownUser, а в Студио - _SYSTEM ?

Если меняю в заголовке Owner = _SYSTEM и компилирую - никакого эффекта.

Хочу Студио как UnknownUser, но не знаю пароля.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592398
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думается мне проблема вот в чем
akihito
Код: plaintext
1.
2.
3.
4.
/// 
Class aaa.table1 Extends %Persistent [ ClassType = persistent,
 DdlAllowed, Owner = UnknownUser, 
 ProcedureBlock, SqlRowIdPrivate, 
 SqlTableName = table1, StorageStrategy = "" ]


Я для примера сделал класс tmp.test... В портале сделал запрос к нему
Код: plaintext
1.
2.
3.
select
*
from
tmp.test
все работает нормально... Потом добавил классу SqlTableName - все! После этого запрос не работал - писал нет такой таблицы.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592422
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
/// 
Class tmp.test Extends %Persistent 
{

Property name As %String;

}
Код: plaintext
1.
2.
3.
select
*
from
tmp.test

Работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
/// 
Class tmp.test Extends %Persistent [ SqlTableName = mytest ]
{

Property name As %String;

}

после этого
Код: plaintext
1.
2.
3.
select
*
from
tmp.test
авторОШИБКА #5001: 30: SQL ERROR #30: Table 'TMP.TEST' not found action = (parse) rtn = () $ze = (<SYNTAX>errdone+2^%qaqqt) err = (qaqperr)
Код: plaintext
1.
2.
3.
select
*
from
mytest
авторОШИБКА #5001: 30: SQL ERROR #30: Table 'SQLUSER.MYTEST' not found action = (parse) rtn = () $ze = (<SYNTAX>errdone+2^%qaqqt) err = (qaqperr)
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592546
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
Удаляю
[ ClassType = persistent,
DdlAllowed, Owner = UnknownUser,
ProcedureBlock, SqlRowIdPrivate,
SqlTableName = table1, StorageStrategy = "" ]

выдает ту же ошибку ОШИБКА #5540: SQLCODE: -30 Сообщение: Таблица 'AAA.TABLE1' не найдена
SOURCE ELEMENT: %ZEN.Component.tablePane ()
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592561
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
если создаю таблицу в каше, то все ок, а те, что не открываются, мигрировали из фокса. Но в просмотре SQL схем я их вижу, должны ж они как-то в зен открываться.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592642
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihitoдолжны ж они как-то в зен открываться.
Вот это я не в курсе...
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592722
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihitokrvsa,
если создаю таблицу в каше, то все ок, а те, что не открываются, мигрировали из фокса. Но в просмотре SQL схем я их вижу, должны ж они как-то в зен открываться.

Не пойму в чем у вас проблема ...
Класс
Код: plaintext
1.
2.
3.
4.
5.
6.
Class tmp.data Extends (%Persistent, %ZEN.DataModel.DataModel) [ SqlTableName = ups ]
{

Property Fam As %String;

}

Страничка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
/// Created using the page template: Default
Class tmp.tmp Extends %ZEN.Component.page
{

/// Имя приложения, которому принадлежит эта страница.
Parameter APPLICATION = "tmp.Application";

/// Отображаемое имя для нового приложения.
Parameter PAGENAME;

/// Домен, используемый для локализации.
Parameter DOMAIN;

/// Comma-separated list of additional CSS include files for the page.
Parameter CSSINCLUDES As STRING;

/// Этот блок Style содержит определение CSS стиля страницы.
XData Style
{
<style type="text/css">
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="" >
<dataController id="source" 
	modelClass="tmp.data" modelId="1"/>
<form id="myForm" controllerId="source" width="100%">
<tablePane	sql="select * from tmp.ups"/>
</form>
</page>
}

вот вывод: тут
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592869
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akihito,
возможно в именах полей зарезервированные sql-слова?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36592885
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintвозможно в именах полей зарезервированные sql-слова?
Тогда ошики были бы другие... У ТС ошибка "нет таблички".
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36593055
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, судя по коду 2acid и akihito а те, что не открываются, мигрировали из фокса., попробовать отнаследовать их от %ZEN.DataModel.DataModel ?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36593614
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2acid,

делаю все по вашему примеру. такая же ошибка #5540:SQLCODE -30 таблица не найдена.

не знаю, что дальше делать.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36593792
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihito2acid,

делаю все по вашему примеру. такая же ошибка #5540:SQLCODE -30 таблица не найдена.

не знаю, что дальше делать.
На текущий момент проблема при обращении возникает только на Zen-страницах? Или в портале все так же не выполняется запрос? Пробовали Embedded SQL ( &sql(...) ), %ResultSet, CSP ( <script language=sql ...> ) ?
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36595795
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вобщем вся моя проблема в том что отсутствует разрешение на чтение данных для 'msysrelationships'.

в ACCESS 2003 это решается так:
[In Microsoft Access, make sure that system objects are displayed.
Click Tools > Options and select the setting on the View tab.
Click Tools > Security > User and Group Permissions. Then select the Read check box next to the table name.]

может кто знает как решить эту проблему в фоксе? ( если это возможно )
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36595834
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihitoпроблема в том что отсутствует разрешение на чтение данных для 'msysrelationships'.


при импорте каше пытается копировать foreign keys сведения о которsй хранятся в табл. 'msysrelationships' (это название для Access), которая недоступна для чтения. в результате импортируюся данные без foreign keys, выдает ошибку.
и как я думаю не дает отображать данные на зен-странице, и не работает sql-менеджер для этих таблиц.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36596063
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akihitoakihitoпроблема в том что отсутствует разрешение на чтение данных для 'msysrelationships'.


при импорте каше пытается копировать foreign keys сведения о которsй хранятся в табл. 'msysrelationships' (это название для Access), которая недоступна для чтения. в результате импортируюся данные без foreign keys, выдает ошибку.
и как я думаю не дает отображать данные на зен-странице, и не работает sql-менеджер для этих таблиц.
Ваша таблица, мигрируемая из FoxPro, пользуется внешними ключами?
Если нет, то наличие ошибки при миграции - это всего лишь предупреждение, но не источник дальнейших проблем. (Сам не раз проводил миграцию из dbf-файлов в Cache - процесс ругался на внешние ключи, но данные сохранялись нормально и проблем с обращением к ним не было.)
Если все же вы пользуйтесь внешними ключами, то заведите их самостоятельно, подправив описания необходимых классов (легко делается с помощью мастера).
В любом случае, я сомневаюсь, что проблема связана с внешними ключами, т.к. внешние ключи влияют только на обновление (UPDATE) и удаление (DELETE) данных из связанной таблицы, но никак не на отбор (SELECT) из текущей таблицы.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36599460
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turk,

в csp все работает.
но часть проекта уже сделана в зен. и в csp я плохо разбираюсь.

а были вообще случаи, чтоб импортированная база из фокса нормально работала в зен?
или если да, то в какой версии фокса была сохранена БД.
...
Рейтинг: 0 / 0
реинжиниринг с помощью cache
    #36604074
akihito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как так может быть, с помощью dynaForm таблицу редактирую, а tablePane якобы эту же страницу не может найи и не отображает?

<page xmlns="http://www.intersystems.com/zen" title="">
<html id="title">My Telephone Book</html>
<vgroup width="100%">
<dataController id="source" modelClass="aa.fakultet" modelId="sin"/>
<dynaForm id="MyForm" controllerId="source" />
<button caption="Новий" onclick="zenPage.newRecord();" />
<button caption="Зберегти" onclick="zenPage.saveRecord();" />
<button caption="Видалити" onclick="zenPage.deleteRecord();" />
<tablePane id="mytable" tableName="aa.fakultet" >
</tablePane>
<tableNavigatorBar tablePaneId="mytable"/>
<dynaGrid id="MyGrid" controllerId="source" valign="top"/>
</vgroup>
</page>
...
Рейтинг: 0 / 0
100 сообщений из 100, показаны все 4 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / реинжиниринг с помощью cache
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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