Подскажите как объявить временную таблицу.

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

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

Ответить
michman
Посетитель
Сообщения: 34
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Подскажите как объявить временную таблицу.

Сообщение michman »

Временная таблица не вмещает больше одной записи. Привидите работающий пример.
ALEKS123
Местный житель
Сообщения: 278
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Подскажите как объявить временную таблицу.

Сообщение ALEKS123 »

Table struct SMyTable
(KSNrec : comp,
D_Nakl : date,
N_Nakl : string[20],
T_Nakl: word,
N_PDRFROM: string,
CPDR_FR : comp,
G_FR : word,
N_PDRTO: string,
CPDR_TO : comp,
G_TO : word,
T_KO : double,
N_U: string[1])
with index (M1 = D_Nakl + T_Nakl);

interface R_G_G (,,sci1ESC);

show at (,,,41);


var
PRIZ_ZP : word;
F_NAME : string;
hndF : longint;
FIL_c : boolean;
M_DATE : string;
BR_NO_BR : word;
TD : string;
N_PODR : comp;
begdate, enddate : date;
PDRTO : string;
. . . . . . ..
И так далее
michman
Посетитель
Сообщения: 34
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Подскажите как объявить временную таблицу.

Сообщение michman »

объявляю также но почему-то в таблицу не помещается больше одной записи, как ее заполнять?
lada
Посетитель
Сообщения: 44
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва ЗАО "Март-Консалтинг"

Re: Подскажите как объявить временную таблицу.

Сообщение lada »

Сначала объявляем структуру таблицы:

Table Struct tsootv
( cosh : string(3),
cosub : string(3),
filsh : string(3),
filsub : string(3),
filsub2 : string(3)
)
with index
(tsootv = filsh+filsub+filsub2
);
А потом в интерфейсе заполняем, например из .dbf - файла:
do
{
pcosh:=DBFGetFieldValue(hMyDbf,'cosh');
pcosub:=DBFGetFieldValue(hMyDbf,'cosub');
pfilsh:=DBFGetFieldValue(hMyDbf,'filsh');
pfilsub:=DBFGetFieldValue(hMyDbf,'filsub');
pfilsub2:=DBFGetFieldValue(hMyDbf,'filsub2');

Insert tsootv set cosh:=pcosh,
cosub:=pcosub,
filsh:=pfilsh,
filsub:=pfilsub;
filsub2:=pfilsub2;
Update current tsootv;
}while DBFGetNext(hMyDbf)=0;


Обязательно при добавлении записи в таблицу должны быть и insert и update. У меня такой вариант работает.
Spvl
Постоянный обитатель
Сообщения: 136
Зарегистрирован: 29 мар 2005, 17:49

Re: Подскажите как объявить временную таблицу.

Сообщение Spvl »

Мне как то тоже пришлось заполнять вр. таблицу
я использовал вот такую конструкцию.

modifier insert My_Tabl set sch= list[i], s_vx = Sal_d-Sal_k, ndate =d2;

и Все работает ver 5.84 и 5.85
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Подскажите как объявить временную таблицу.

Сообщение Maverick »

Вообще заполнять лучче так
Do
{
Insert Current My_Tbl Set My_Tbl.fField1:=value1,My_Tbl.fField2:=value2,...My_Tbl.fFieldN:=value1;
}while DBFGetNext(hMyDbf)=0;

Одной строкой вставка всех полей без лишних операторов Update, Кстати - конструкция - стандартная.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
oiko
Местный житель
Сообщения: 417
Зарегистрирован: 29 мар 2005, 17:49

Re: Подскажите как объявить временную таблицу.

Сообщение oiko »

И та и эта конструкция применяется. Можно даже поискать какая где. Я применяю конструкцию insert current когда однозначно что-то присваиваю, а insert - update current когда идет присвоение по условию.
dZima
Новичок
Сообщения: 29
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Подскажите как объявить временную таблицу.

Сообщение dZima »

еще несколько вопросов:
можно ли объявить временную таблицу в форме?
или как вывести итог перед выводом всех данных (исходников интерфейса нет, редактировать можно только форму)?
и можно ли из формы писать в текстовый файл?
\\m/ ©[°±°]© \\m/
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Подскажите как объявить временную таблицу.

Сообщение edward_K »

1. для этого ты объявляешь ее в отдельном файле
в проекте
#include ddd.inc
компилить соотв. только випом
2.нужно накапливать данные во временную таблу(если с такой не получиться можешь юзать TEMPDESCR например, или другую из схемы user)
потом после вывода итогов выводишь данные из таблы.
3. самое примитивное logstrtofile(file,mes)
Ответить