Страница 1 из 1

Проблема со временной таблицей

Добавлено: 19 ноя 2004, 14:52
michman
В цикле во временную таблицу вставляю записи:
someCO:=InitMarker('GetSomeFpCO', 2, 15, 13);
for (i:=0; i < GetMarkerCount(someCO); i:=i+1)
{GetMarker(someCO, i, mrkCO);
Insert into tblSomeCO select nRec, name from FPCO where((mrkCO/==FPCO.nRec));
}
а в итоге там оказывается только последняя
Вчем причина

Re: Проблема со временной таблицей

Добавлено: 19 ноя 2004, 15:10
oiko
Могу ошибиться но по моему такая конструкция требует еще "update current tblSomeCo;" следующей строкой.

Re: Проблема со временной таблицей

Добавлено: 19 ноя 2004, 15:15
Goblin
Конструкция Insert Into ... Select ...
не поддерживается

Re: Проблема со временной таблицей

Добавлено: 19 ноя 2004, 15:51
blackoff
тока не "update current tblSomeCo;"

"insert current tblSomeCo;"

Re: Проблема со временной таблицей

Добавлено: 20 ноя 2004, 08:56
michman
временная таблица почемута не может содержать больше одной записи.
я попробовал вставить туда все записи из реяльной таблицы:
insert tblSomeCO select * from FPCO;
но в итоге во временной оказалась только одна запись - последняя из FPCO.
может где-то, как-то устанавливается размер временной таблицы?

Re: Проблема со временной таблицей

Добавлено: 20 ноя 2004, 09:21
Vitas
Для начала хотелось бы узнать, как ты пришел к выводу, что во временной таблице одна запись?

Re: Проблема со временной таблицей

Добавлено: 20 ноя 2004, 09:50
michman
посмотрел её:
Window TSOMECOW ' Выбранные ЦО 'doAccept;
show at(1,1,20,23);
Browse tsomeco;
table SFPCO;
fields
SFPCO.name : protect;
end;
end;
И в итоге одна запись- последняя из FPCO

Re: Проблема со временной таблицей

Добавлено: 20 ноя 2004, 10:02
Vitas
а запрос у фейса какой был?

Re: Проблема со временной таблицей

Добавлено: 21 ноя 2004, 14:34
IStep
function InitMarker (name : string; size, count, delta : longInt; sorted : boolean) : longInt;

sizeof(nRec) = 8, а у тебя 2 - только младшие 2 байта сохраняешь!
...повезло, у тебя старшие байты nRec-ов не пустые, а то потом ;(

Ради побыстрее (уж не знаю быстрее-ли? ) :
for (i:=GetMarkerCount(someCO); i<=0; Dec(i))