(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "ERwin"

Обсуждение вопросов, связанных с компанией Computer Associates, ее продуктами ERwin Data Modeler, ERwin Web Portal, ARCserve и др.

 
 
Добавить сообщение »

Тема: Циклы в макросах ErWin

Автор:  vlad-mal Дата: 19.05.2005 15:56

1. Всем спасибо, отдельно большое спасибо - Татьяне Точилкиной.
2. Всех росиян - с победой наших в кубке UEFA!
3. Задачу я решил, правда, не совсем средствами ErWin.

В общем - я использовал оператор Execute Statement сервера FireBird, который позволяет в процедурах использовать DDL.

Порядок работы:
1. Для атрибутов добавляем UDP:
Name = multy_col
Type = Int
DafaultValue = 0

2. В сущности, для которых хотим получить несколько онотипных полей, добаляем такое поле, например:
f varchar(22)
Указываем multy_col = 10 (например)

3. Определяем процендуру уровня модели:
CREATE PROCEDURE ALTERTABLE (
TABLENAME VARCHAR(50),
FIELDNAME VARCHAR(50),
FIELDTYPE VARCHAR(50),
TIMES INTEGER)
AS
DECLARE VARIABLE TMPSTR VARCHAR(100);
DECLARE VARIABLE I INTEGER;
begin
i = 0;
while (i<Times) do begin
tmpStr = 'ALTER TABLE ' // TableName // ' ADD ' // FieldName //
case when i<10 then '0'// i else i end // ' ' // FieldType;
execute statement tmpStr;
i = i + 1;
end
tmpStr = 'ALTER TABLE ' // TableName // ' DROP ' // FieldName;
execute statement tmpStr;

end

4. В post-script модели добавляем след.скрипт:

%ForEachEntity() {%ForEachAttribute() {%If (%>(%AttProp(multy_col),0)) {execute procedure AlterTable('%TableName', '%ColName', '%ColumnDatatype', %AttProp(multy_col));
}}}

Он развернется в след вида предложения:
execute procedure AlterTable('Colleague', 'S', 'VARCHAR(75)', 3);
execute procedure AlterTable('MyTable', 'f', 'VARCHAR(22)', 10);

В результате выполнения таких предложений в таблице Colleague будут созданы поля S00, S01, S02, а в таблице MyTable - поля f00...f09 соотв. типа (Varchar(22)) (а поля S и f будут уничтожены).

Предостережение: Следует соблюдать некоторую осторожность при использовании DDL совместно с Exceute statement; например - всегда после изменения метаданных следует выполнять Commit еред использованием новой структуры.

Таким образом, сгенерированный скрипт снова позволяет полностью обойтись средствами ErWin без привлечения чего-либо еще.
Ответить на сообщение »
 
Автор:  vlad-mal Дата: 19.05.2005 15:52
1. Всем спасибо, отдельно большое спасибо - Татьяне Точилкиной.
2. Всех росиян - с победой наших в кубке UEFA!
3. Задачу я решил, правда, не совсем средствами ErWin.

В общем - я использовал оператор Execute Statement сервера FireBird, который позволяет в процедурах использовать DDL.

Порядок работы:
1. Для атрибутов добавляем UDP:
Name = multy_col
Type = Int
DafaultValue = 0

2. В сущности, для которых хотим получить несколько онотипных полей, добаляем такое поле, например:
f varchar(22)
Указываем multy_col = 10 (например)

3. Определяем процендуру уровня модели:
CREATE PROCEDURE ALTERTABLE (
TABLENAME VARCHAR(50),
FIELDNAME VARCHAR(50),
FIELDTYPE VARCHAR(50),
TIMES INTEGER)
AS
DECLARE VARIABLE TMPSTR VARCHAR(100);
DECLARE VARIABLE I INTEGER;
begin
i = 0;
while (i<Times) do begin
tmpStr = 'ALTER TABLE ' // TableName // ' ADD ' // FieldName //
case when i<10 then '0'// i else i end // ' ' // FieldType;
execute statement tmpStr;
i = i + 1;
end
tmpStr = 'ALTER TABLE ' // TableName // ' DROP ' // FieldName;
execute statement tmpStr;

end

4. В post-script модели добавляем след.скрипт:

%ForEachEntity() {%ForEachAttribute() {%If (%>(%AttProp(multy_col),0)) {execute procedure AlterTable('%TableName', '%ColName', '%ColumnDatatype', %AttProp(multy_col));
}}}

Он развернется в след вида предложения:
execute procedure AlterTable('Colleague', 'S', 'VARCHAR(75)', 3);
execute procedure AlterTable('MyTable', 'f', 'VARCHAR(22)', 10);

В результате выполнения таких предложений в таблице Colleague будут созданы поля S00, S01, S02, а в таблице MyTable - поля f00...f09 соотв. типа (Varchar(22)) (а поля S и f будут уничтожены).

Предостережение: Следует соблюдать некоторую осторожность при использовании DDL совместно с Exceute statement; например - всегда после изменения метаданных следует выполнять Commit еред использованием новой структуры.

Таким образом, сгенерированный скрипт снова позволяет полностью обойтись средствами ErWin без привлечения чего-либо еще.
Ответить на сообщение »
 
Автор:  vlad-mal Дата: 19.05.2005 15:51
1. Всем спасибо, отдельно большое спасибо - Татьяне Точилкиной.
2. Всех росиян - с победой наших в кубке UEFA!
3. Задачу я решил, правда, не совсем средствами ErWin.

В общем - я использовал оператор Execute Statement сервера FireBird, который позволяет в процедурах использовать DDL.

Порядок работы:
1. Для атрибутов добавляем UDP:
Name = multy_col
Type = Int
DafaultValue = 0

2. В сущности, для которых хотим получить несколько онотипных полей, добаляем такое поле, например:
f varchar(22)
Указываем multy_col = 10 (например)

3. Определяем процендуру уровня модели:
CREATE PROCEDURE ALTERTABLE (
TABLENAME VARCHAR(50),
FIELDNAME VARCHAR(50),
FIELDTYPE VARCHAR(50),
TIMES INTEGER)
AS
DECLARE VARIABLE TMPSTR VARCHAR(100);
DECLARE VARIABLE I INTEGER;
begin
i = 0;
while (i<Times) do begin
tmpStr = 'ALTER TABLE ' // TableName // ' ADD ' // FieldName //
case when i<10 then '0'// i else i end // ' ' // FieldType;
execute statement tmpStr;
i = i + 1;
end
tmpStr = 'ALTER TABLE ' // TableName // ' DROP ' // FieldName;
execute statement tmpStr;

end

4. В post-script модели добавляем след.скрипт:

%ForEachEntity() {%ForEachAttribute() {%If (%>(%AttProp(multy_col),0)) {execute procedure AlterTable('%TableName', '%ColName', '%ColumnDatatype', %AttProp(multy_col));
}}}

Он развернется в след вида предложения:
execute procedure AlterTable('Colleague', 'S', 'VARCHAR(75)', 3);
execute procedure AlterTable('MyTable', 'f', 'VARCHAR(22)', 10);

В результате выполнения таких предложений в таблице Colleague будут созданы поля S00, S01, S02, а в таблице MyTable - поля f00...f09 соотв. типа (Varchar(22)) (а поля S и f будут уничтожены).

Предостережение: Следует соблюдать некоторую осторожность при использовании DDL совместно с Exceute statement; например - всегда после изменения метаданных следует выполнять Commit еред использованием новой структуры.

Таким образом, сгенерированный скрипт снова позволяет полностью обойтись средствами ErWin без привлечения чего-либо еще.
Ответить на сообщение »
 
Автор:  vlad-mal Дата: 06.05.2005 21:49
Здравствуйте, с праздниками!

Подскажите, пожалуйста, как при генерации кода вставить Post-Script, cодержащий повторяющийся код n раз, например:

ALTER TABLE MyTable ADD F_01 INTEGER;
ALTER TABLE MyTable ADD F_02 INTEGER;
...
ALTER TABLE MyTable ADD F_99 INTEGER;

Выяснилось, что я не умею в макросах ErWin генерировать повторяющиеся n раз конструкции. Нужно в макросах ErWin (4.*) организовать цикл, подобный
%ForEachAtt(%TableName), только мне нужен цикл самый простой - от 1 до 10, к примеру.

Спасибо.
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
erwin Data Modeler Workgroup Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
erwin Data Modeler Standard Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
erwin Data Modeler Navigator Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
Allround Automation PL/SQL Developer - Annual Service Contract - 5 users
Business Studio 4.2 Enterprise. Конкурентная лицензия + Business Studio Portal 4.2. Пользовательская именная лицензия.
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Новые материалы
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Русификация рамки IDEF0 BPWin4 (41)
Возможно ли русифицировать рамку диаграмм в BPWin4?
 
Проектирование курсовой работы в BPWin (32)
Здравствуйте.Подскажите пожалуйста где можно найти примерное проектирование курсовой работы...
 
Русификация ERWin (29)
Здравствуйте! Используем версию ERwin 4.1 в сети,но при создании логической модели вместо...
 
применение CA Process Modeller (BPWin) и связь моделей BPWin и ErWin (1)
Не очень понятна связь прогр продуктов CA Process Modeller (BPWin) и CA Data Modeller...
 
Erwin 3.5.2 (6)
Где скачать или кто может поделиться прогой Erwin 3.5.2? И как открыть файл из 3.5.2 в Erwin...
 
 
 



    
rambler's top100 Rambler's Top100