Количество записей в таблице

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

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

Ответить
pavel_rts
Постоянный гость
Сообщения: 55
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва ЗАО "Рантайм Системс"
Контактная информация:

Количество записей в таблице

Сообщение pavel_rts »

Как получить количество записей в таблице?
_Loop в данном в случае скорее не подойдет, так как имена таблиц меняются. Хотя может если объявить переменную типа Table, но не понятно как, в документации по VIP ничего не нашел?
:shock:
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Есть функция

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

function RecordsInTable (iTable : Integer) : LongInt; 
но она вернет сколько записей в физ. таблице, без учета наложенных на таблицу ограничений.
А вот _loop как раз и подойдет :lol:

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

#declare dclRecordsInTable(Tbl, lCount)
  #lCount := 0;
  _loop #Tbl
  {
     #lCount := #lCount + 1;
  }
#end

...

  #dclRecordsInTable(KatSopr, I);
  Message('В таблице KatSopr записей: ' + I);
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Нет слов ...

Пошел переписывать отчеты ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
pavel_rts
Постоянный гость
Сообщения: 55
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва ЗАО "Рантайм Системс"
Контактная информация:

Сообщение pavel_rts »

Этого конечно хорошо, но

в первом случае RecordsInTable(1) -работает ...
RecordsInTable(5) - Галка закрывается и только остается
Runtime error 213 in streams_.dll at 001C675

во втором случае, тоже ничего не получилось, система задувается, но не считает. (P.S. я вставляю в цикле имена табл, типа String)

Или я где-то не прав? :(
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

1. RecordsInTable(tnKatos) например по основным. Katos должна быть объявлена во from что бы работало.
2. var i:longint;
i:=0;
_Loop katos inc(i);
message(string(i));

В мессадж покажется кол-во записей.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

pavel_rts писал(а): во втором случае, тоже ничего не получилось, система задувается, но не считает. (P.S. я вставляю в цикле имена табл, типа String)

Или я где-то не прав? :(
оригинально....
declare - это макроопределение, если вы передаете строку, то и цикл будет по строке
что-то вроде _loop 'KatSopr' {}
как у меня написано в примере так и используйте, не додумывайте.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

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

Сообщение Goblin »

Хе, процентов 50 % отчетов сократились в объеме исходников на 30-60 % :)

Только жалко что вложеные макроопределения не поддерживаются и в случае ошибки трудновато искать, где там собака порылась ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Ответить