ВЫБОРКИ ИЗ СПИСКА

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

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

korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

ВЫБОРКИ ИЗ СПИСКА

Сообщение korvanakorvana »

Ребята привет вот я написала такую маленькую программку

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


interface _kor_otgruzvibor 'Отчёт отгрузок по датам' escclose;
show at(,,30,);
/*
table struct tOtgr
(
polnrec:comp,
grpolnrec:comp,
sposob:string,
summa:double,
sf:string
)
with index
(idx1=polnrec+grpolnrec+sposob);
*/



create view 
var
date1:date
date2:date
dat1:date
dat2:date
as select * 
from 
basedoc  
,ttndoc 
,katorg orgpol   
,katorg orggrpol   
,katcity         
,katpodr
where 
((
word(1102)/==ttndoc.wtable     
and dat1<<=ttndoc.dpunrbeg(noindex)
and dat2>>=ttndoc.dpunrbeg(noindex) 
and ttndoc.cdoc==basedoc.nrec 
and basedoc.nrec == stepdoc.cbasedoc
and stepdoc.nrec == katsopr.cstepdoc

//and tOtgr.polnrec==orgPol.nrec  
//and tOtgr.Grpolnrec==orgGrPol.nrec
and katpodr.nrec==katsopr.CPODRFROM (noindex)
and basedoc.corg==orgPol.nrec
and katorg.ccity==katcity.nrec
))
;

screen srcsclad show at(,,,3);
fields date1:,noprotect;
       date2:,noprotect;
buttons
cmOk, default;
cmCancel;
<<
  .@@@@@@@@@    .@@@@@@@@@
<.    ОК    .> <.   Выход   .>
>>
end;
panel psclad show at(,4,,);
  browse brsclad
  table katpodr;
  fields
  katpodr.name 'Склад':[30],protect;
  end;
end;



handleevent 

cmInit:
{
date1:=date(1,month(cur_date),year(cur_date));   
date2:=Cur_Date;                 
}


cmOk:
{
var
filename:string;


filename:=GetStringParameter('Files','OutputFilesDirectory',0)+'отгрузки'+DatetoStr(cur_Date,'DDMMYYYY')+'.xls';
xlCreateExcel(filename,true);


dat1:=date1;
dat2:=date2;
var summ:double;
StartNewVisual(vtRotateVisual, vfTimer+vfBreak+vfConfirm,'Идет расчет реальных отгрузок...', RecordsInTable(#basedoc));

//_loop ttndoc message(basedoc.nodoc);
//_loop ttndoc message(ttndoc.dpunrend);
var i:integer;
i:=2;
xlSetCellFormula('№',1,1,1,1);
xlSetCellFormula('Организация',1,2,1,2);
xlSetCellFormula('Адрес',1,3,1,3);
xlSetCellFormula('Дата отгрузки',1,4,1,4);
xlSetCellFormula('Номер сч/ф',1,5,1,5);
xlSetCellFormula('Сумма',1,6,1,6);
xlSetCellFormula('Получено',1,7,1,7);
//message('мы выбрали'+katpodr.name); 
_loop ttndoc
{                                                         
xlSetCellNumberValue(i-1,i,1,i,1);
xlSetCellFormula(orgpol.name,i,2,i,2);
xlSetCellFormula(orgpol.ADDR,i,3,i,3);
xlSetCellFormula(ttndoc.dpunrbeg,i,4,i,4);
xlSetCellFormula(basedoc.nodoc,i,5,i,5);                          
if (basedoc.vhodnal=1) then { summ:=basedoc.summa; }
else  summ:=basedoc.summa + basedoc.nds;
xlSetCellFormula(summ,i,6,i,6); 
i:=i+1;                         
}
StopVisual('Опрерации завершена!',0);
xlSetColumnWidth(30,1,2,i,3);//устанавливаем ширину колонок
xlSetColumnWidth(4,1,1,i,1);
xlSetColumnWidth(10,1,4,i,7);
xlKillExcel;
}

end;

end.

Меня интересует следующее
panel psclad show at(,4,,);
browse brsclad
table katpodr;
fields
katpodr.name 'Склад':[30],protect;
end;
Я хочу выбирать склад. Для этого пользуюсь вот этим кодом.
Скажите пожалуйста, а как мне теперь вывести информацию, отфильтрованную по этому полю katpodr.name?
ЗЫ как всегда со своими глупыми вопросами), ну не могу врубиться((((
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

обычно выбор делают не так - cmPick поищите.
ну а так в запросе потом фильтруете по katpodr.nrec
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

ну а так в запросе потом фильтруете по katpodr.nrec....НЕ поняла(((
можно на примере мне так понятнее
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

(( katpor.nrec == ??????? ))
но вопрос а что хотите вы выбрать то?
да и не правильно так делать 8)
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

Еще больше запуталась((( ... :? Вообще я хотела сделать выбор одного из складов. Выбрала нажала сформировать и вся инфа которая мне нужна по этому складу вышла на печать.
вот только как этот katpodr.name к моей выборке приклеить не могу понять((
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

проще переписать
katpodr -> katsopr -> все остальное , и почему name? проще то по nrec фильтровать.
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

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

create view 
var
date1:date
date2:date
dat1:date
dat2:date
as select * 
from 
basedoc 
,ttndoc 
,tOtgr
,katorg orgPol  
,katorg orgGrPol
,katcity         //каталог городов
,katpodr
where 
((
word(1102)/==ttndoc.wtable     
and dat1<<=ttndoc.dpunrbeg(noindex)//dat1<<=дата начала разгрузки
and dat2>>=ttndoc.dpunrbeg(noindex) //dat2>>=дата начала разгрузки
and ttndoc.cdoc==basedoc.nrec 

//and tOtgr.polnrec==orgPol.nrec  //=
//and tOtgr.Grpolnrec==orgGrPol.nrec
and orgGrPol.ccity==katcity.nrec
and basedoc.corg==orgPol.nrec
and basedoc.nrec == stepdoc.cbasedoc 
and stepdoc.nrec == katsopr.cstepdoc
and katpodr.nrec ==katsopr.CpodrFrom(NOINDEX) 
))
;
не могу понять я сделала выборку в такой форме Почему на выходе не фильтруется по katpodr
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

korvanakorvana
На словах опишите постановку задачи, а то по вашему коду непонятно, что хотите.
Атрибут NoIndex использовать нежелательно, т. к. он означает обход всей таблицы с понятными последствиями. В большинстве случаев можно переформулировать запрос без этого атрибута и сэкономить массу времени на стадии выполнения.
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

нужно сделать форму. Чтобы в ней выдавлась информация по всем отгруженным на заданный промежуток времени(ttndoc.dpunrbeg) товарам. Заполняются следующие поля в форме. №, Организация, адрес, дата отгрузки, номер сч-ф ,сумма.
Имеется возможность выбора Склада отгрузки(katpodr.name)
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

Тогда почему TTNDOC? Проще и удобнее отбирать РСО за заданный период по заданному складу, а к ним подтягивать накладные и СФ.
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

РСО?
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

Расходные складские ордера...
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

и как же будет иметь выборка? как связвть SKLORDER и TTNDOC?
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

Когда дату отгрузки из SKLORDER возьмете, TTNDOC может вовсе не пригодиться (только если в ней есть какая-то специфическая информация, которой нет в других таблицах). А схема связей будет выглядеть как-то так:

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

((
0==SKLORDER.sp and
1==SKLORDER.vidorder and
KATPODR.nrec==SKLORDER.cpodr and
dat1<<=SKLORDER.dord and
dat2>>=SKLORDER.dord and
SKLORDER.csopr==KATSOPR.nrec and
KATSOPR.cschfact==SCHFACT.nrec and
...
))
Плюс для пущей надежности можно добавить проверку KATSOPR.vidsopr=201, я бы это не в ЛТ, а в код на VIP-е вставил. Если все-таки нужна TTNDOC - ее подтащить несложно будет.
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

это я уже написала) а TTNDOC нужна как ее вытащить?
Ответить