Страница 1 из 1
Добавить ключ для временной таблицы
Добавлено: 07 май 2009, 09:43
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.
Как создать ключ для составного индекса?
Добавлено: 07 май 2009, 09:56
Алексей
with Index
(
i02 = da1+da2
);
Добавлено: 07 май 2009, 10:23
Larisa
Спасибо получилось.
Добавлено: 07 май 2009, 11:32
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);
В чем может быть причина?
Добавлено: 07 май 2009, 11:49
Larisa
Подскажите пожалуйста.
Добавлено: 07 май 2009, 11:51
k_vit
Пришли кусок кода в котором у вас идёт подвязка к вашей таблице, то есть where
Добавлено: 07 май 2009, 12:04
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
Добавлено: 07 май 2009, 12:44
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
))
Добавлено: 07 май 2009, 13:53
Larisa
Поняла, спасибо большое. Все получилось.