Используется Clarion 6 Windows.
Приложение работает с файлами TPS. Требуется перевести под DB2, но чтобы структура в DCT не была помененна
и могли читаться таблицы DB2.
Вопрос по описанию поля типа GROUP.
В структуре TPS есть поля типа GROUP.
Как для них должны быть определены поля в структуре таблицы Db2.
Пример :
В TPS есть поля типа
DATA_KOM_GROUP (типа group)
DATA_KOM_DATE (типа date)
DATA_KOM_TIME (типа time)
END
Так вот это описание соответствует типу поля - DATA_KOM TIMESTAMP .
А как быть с другими наборами GROUP?
Соответствие полей файла TPS, описанных в DCT, полям таблицы DB2
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Соответствие полей файла TPS, описанных в DCT, полям таблицы DB2
Смысл TimeStamp в восьми байтах, в Кларионе нет такого типа, поэтому используем группу, причём с Over. А какие у Вас ещё группы? Я предполагаю, т.к. в SQL нет такого, то описать как раздельные поля. А в словаре оставить как есть.
We are hard at work… for you. 

Соответствие полей файла TPS, описанных в DCT, полям таблицы DB2
Например такая группа в TPS
GPrava (GROUP, размерность 5)
PrPod1 (byte)
PrPod2 (byte)
PrPod3 (byte)
PrPod4 (byte)
PrPod5 (byte)
END
Или другой вариант
GD (GROUP, размерность 258)
X1 (массив из 31 по 1 байту)
X2 (массив из 31 long)
X3 (массив из 31 short)
X4 (массив из 31 byte)
P1 (byte)
P2 (long)
T1 (byte)
T2 (long)
END
Вроде все поля в GROUP дают общую длину - 31 + 31*4 + 31*2 + 31 + 1 + 4 +1 + 4 = 258
GPrava (GROUP, размерность 5)
PrPod1 (byte)
PrPod2 (byte)
PrPod3 (byte)
PrPod4 (byte)
PrPod5 (byte)
END
Или другой вариант
GD (GROUP, размерность 258)
X1 (массив из 31 по 1 байту)
X2 (массив из 31 long)
X3 (массив из 31 short)
X4 (массив из 31 byte)
P1 (byte)
P2 (long)
T1 (byte)
T2 (long)
END
Вроде все поля в GROUP дают общую длину - 31 + 31*4 + 31*2 + 31 + 1 + 4 +1 + 4 = 258
Соответствие полей файла TPS, описанных в DCT, полям таблицы DB2
Попробовал создать таблицу в DB2.
Таблица не читается, но когда вывел все поля из группы, в саму группу удалил
GPrava (GROUP, размерность 5)
END
тогда таблица стала в DCT открываться.
С одиночными полями можно обойтись, а как быть с описанием массивов?
Можно конечно элементы массивов определить как отдельные поля,
но тогда будет больше хлопот по изменениям в исходниках.
Таблица не читается, но когда вывел все поля из группы, в саму группу удалил
GPrava (GROUP, размерность 5)
END
тогда таблица стала в DCT открываться.
С одиночными полями можно обойтись, а как быть с описанием массивов?
Можно конечно элементы массивов определить как отдельные поля,
но тогда будет больше хлопот по изменениям в исходниках.
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Соответствие полей файла TPS, описанных в DCT, полям таблицы DB2
Добрый день.
Массивы или в поля или в отдельный файл.
Алексей
Массивы или в поля или в отдельный файл.
Алексей
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Соответствие полей файла TPS, описанных в DCT, полям таблицы DB2
Плясать надо от SQL. Если сервак не поддерживает какие-то типы, то вот так. И ещё поэкспериментировать с OVER. А использование массивов в базах данных, ИМХО, вредно. Особенно, в SQL. Они (сервера) позволяют работать с массивами, но у Клариона, боюсь, не получится. Надо иметь ещё ввиду, что есть прослойка в виде ODBC-драйвера, которая накладывает ограничения.
We are hard at work… for you. 
