Добавить ключ для временной таблицы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Добавить ключ для временной таблицы

Сообщение Larisa »

Пожскажите пожалуйста.
Создала временную таблицу, описала составной индекс
table struct tab26
( ckau: comp,
sumob: double,
datob: date,
scheto:string,
subossch:string,
schetk:string,
subschk:string,
sodpr:string,
sodprr:string,
da1: date,
da2: date
) with index (d=da1+da2);
При компиляции ругается нужен ключ для da1+da2.
Как создать ключ для составного индекса?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

with Index
(
i02 = da1+da2
);
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Спасибо получилось.
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Извините не получилось все равно ругается "Нужен ключ для da1+da2" хотя я написала так как вы сказали
table struct tab26
( ckau: comp,
sumob: double,
datob: date,
scheto:string,
subossch:string,
schetk:string,
subschk:string,
sodpr:string,
sodprr:string,
da1: date,
da2: date
) with index (i02 = da1+da2);
В чем может быть причина?
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Подскажите пожалуйста.
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

Пришли кусок кода в котором у вас идёт подвязка к вашей таблице, то есть where
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Есть две временные таблицы
table struct tab25
( ckau: comp,
sumob: double,
datob: date,
scheto:string,
subossch:string,
schetk:string,
subschk:string,
sodprr:string
) with index (i0=ckau);


table struct tab26
( ckau: comp,
sumob: double,
datob: date,
scheto:string,
subossch:string,
schetk:string,
subschk:string,
sodpr:string,
sodprr:string,
da1: date,
da2: date
) with index (i02 = da1+da2);

Делаю добавление из таблицы tab26 в таблицу tab25 определенных полей
.begin
if getfirst tab26 = tsok message('Есть данные в таблице tab26')
{
insert tab25 (sumob, ckau, datob, scheto, subossch, schetk, subschk, sodprr)
select tab26.sumob, tab26.ckau, tab26.datob, tab26.scheto, tab26.subossch, tab26.schetk, tab26.subschk, tab26.sodprr from tab26
where (( dfor1 <<= tab26.da1
and dfor2 >>= tab26.da2 ))
;
}
end.
Выдает ошибку Нужен ключ da1+da2 для tab26
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

Потому что операторы
<<= и >>=
Применимы только к последней части индекса.
можно

Код: Выделить всё

Where 
(( 
   dfor1 <<= tab26.da1 
   And dfor2 >>= tab26.da1 
))
или

Код: Выделить всё

Where 
(( Какая то новая дата == tab26.da1 
   And dfor1  <<= tab26.da2 
   And dfor2 >>= tab26.da2 
))
А вот так ошибка

Код: Выделить всё

Where 
(( 
          dfor1  <<= tab26.da1 
   And dfor2 >>= tab26.da1 
   And Какая то новая дата == tab26.da2 
))
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Поняла, спасибо большое. Все получилось.
Ответить