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

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

Добавлено: 22 ноя 2004, 13:49
michman
Временная таблица не вмещает больше одной записи. Привидите работающий пример.

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

Добавлено: 22 ноя 2004, 13:54
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;
. . . . . . ..
И так далее

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

Добавлено: 22 ноя 2004, 14:09
michman
объявляю также но почему-то в таблицу не помещается больше одной записи, как ее заполнять?

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

Добавлено: 22 ноя 2004, 14:22
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. У меня такой вариант работает.

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

Добавлено: 22 ноя 2004, 16:34
Spvl
Мне как то тоже пришлось заполнять вр. таблицу
я использовал вот такую конструкцию.

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

и Все работает ver 5.84 и 5.85

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

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

Одной строкой вставка всех полей без лишних операторов Update, Кстати - конструкция - стандартная.

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

Добавлено: 23 ноя 2004, 10:15
oiko
И та и эта конструкция применяется. Можно даже поискать какая где. Я применяю конструкцию insert current когда однозначно что-то присваиваю, а insert - update current когда идет присвоение по условию.

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

Добавлено: 23 ноя 2004, 12:23
dZima
еще несколько вопросов:
можно ли объявить временную таблицу в форме?
или как вывести итог перед выводом всех данных (исходников интерфейса нет, редактировать можно только форму)?
и можно ли из формы писать в текстовый файл?

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

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