Помогите, кто может!!!

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

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

Ответить
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Помогите, кто может!!!

Сообщение Sheinina »

Никак не могу понять, где ошибаюсь :-?
Вот какая странная ситуация у меня возникла:

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

view
var
   cpodr     : comp;
   m_podr  : longint;
as select persons.fio, persons.tabnmb,
          catalogs.name
where
((
  persons.department == catalogs.nrec 
))
and (persons.ISEMPLOYEE='К' or 
     persons.ISEMPLOYEE='С'and persons.jobnature=cpost) 
and persons.disdate=date(00,00,00)
condition Dep = catalogs.nrec = cpodr
order o1 by persons.ISEMPLOYEE, persons.tabnmb;
...
cmPick: {
var n_pick: longint;
var i_pick: longint;
var c_pick: comp;
   if CurField()=#npodr then {
      if conditionActive(tcDep) then  popCondition(tcDep);
      if RunInterface('PickCatalog2',-11,cpodr,100) = cmCancel then {
         cpodr:=cmain;
         rescanPanel(tnPersons); 
         set npodr:='';
      }
      else {
         m_podr:=InitMarker('CatalogsMarker', 8, 200, 10); 

if GetMarkerCount(m_podr)>0 then {

n_pick:=GetMarkerCount(m_podr);
for (i_pick:=0; i_pick<n_pick; i_pick:=i_pick+1) {
   getmarker(m_podr, i_pick, c_pick);
   if getfirst catalogs where ((c_pick == catalogs.nrec)) = tsOK
      logstrtofile('dot.log', string(c_pick,17,0)+' '+catalogs.name);
}
if (getfirst catalogs where searchmarker(m_podr,catalogs.nrec,i_pick) ) = tsOK then 
   do  message(catalogs.name) 
   while (getnext catalogs where searchmarker(m_podr,catalogs.nrec,i_pick) ) = tsOK;
}
else 
...
Кусочек файла dot.log:
000300000000010Ch Административно-хозяйственное управление
000300000000010Dh Секретариат
000300000000010Eh Служба доставки (общая)
000300000000010Fh Служба доставки
0003000000000110h Курьерская группа
0003000000000111h Транспортная группа
0003000000000112h Хозяйственная часть
0003000000000113h Группа складского учета

А по message высвечивается только Хозяйственная часть.
3opkae Boka
Сообщения: 18
Зарегистрирован: 06 окт 2005, 13:12

Сообщение 3opkae Boka »

Довольно странная конструкция

if (getfirst catalogs where searchmarker(m_podr,catalogs.nrec,i_pick) ) = tsOK then
do message(catalogs.name)
while (getnext catalogs where searchmarker(m_podr,catalogs.nrec,i_pick) ) = tsOK;
тем паче i_pick нигде не меняется

_Loop catalog
if foundmarker(m_podr,catalogs.nrec)
message(catalogs.name)
3opkae Boka
Сообщения: 18
Зарегистрирован: 06 окт 2005, 13:12

Сообщение 3opkae Boka »

сорри, ОЧЕПЯТКА :-)))

_Loop catalogS
if foundmarker(m_podr,catalogs.nrec)
message(catalogs.name)

а вообще-то более правильно от маркера идти меньше данных перелапатите
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Спасибо!
Ответить