25.07.2007, 10:53 | #1 |
Участник
|
Количество строк на форме
День добрый. Вопрос от новичка: как узнать сколько строк в данный момент отображается на форме? или как сделать столбец "номер строки"?
|
|
25.07.2007, 10:56 | #2 |
Участник
|
Можно попробовать вот так:
X++: SysQuery::countTotal(<dataSourceName>_qr); |
|
25.07.2007, 11:17 | #3 |
Участник
|
А можно немного поподробнее, я же говорю - новичок.
|
|
25.07.2007, 11:23 | #4 |
Участник
|
К примеру, если Вы работаете с формой InventTable, то источник (первый) называется InventTable
тогда количество строк, которые отображаются в каждый момент времени, можно посмотреть так: (код этот можно добавить на кнопку какую-то, к примеру - метод clicked) X++: box::info(int2str(SysQuery::countTotal(InventTable_ds.queryRun()); |
|
25.07.2007, 11:43 | #5 |
Участник
|
Цитата:
Для отображения в форме Аксапта НЕ читает ВСЕ записи. Она читает только те, что помещаются в буфер. При необходимости читает дополнительные. Это происходит автоматически. Поэтому есть два ответа: 1. если под "отображается на форме" вы имеете в виду сколько строк загружено в буфер Аксапты, то надо рыть куда-то в низкоуровневое кодирование. 2. если под "отображается на форме" вы имеете в виду сколько строк в таблице, то можно сделать как говорит kashperuk, а можно и по-другому. Но в любом случае это будет дополнительный и достаточно тяжелый запрос, который значительно снизит производительность системы. Чтобы "сделать столбец номер строки" вы должны ответить для себя на несколько вопросов: 1. какие номера будут отображаться, если на записи наложить фильтр? Номера должны остаться такими же, как и до фильтрации или изменятся? 2. что будет происходить с номерами если изменить сортировку? (чтобы изменить сортировку, нажмите на любой заголовок столбца) 3. что будет происходить с номерами, если в середину будет вставлена запись? а при другой сортировке/фильтре? 4. Что будет происходить с номерами, если в середине запись будет удалена? Представьте, что у вас нет Аксапты. Есть только бумага и карандаш. Как только вы найдете ответ на бумаге, сразу станет ясно, что надо делать в Аксапте Цитата:
Только он насмерть забьет этими запросами систему. Может не стоит советовать такие вещи новичкам? Или хотя бы объяснять к чему это приведет. |
|
25.07.2007, 11:46 | #6 |
Участник
|
Да не очень уж он и тяжеловесный, разве что если его на ну очень большие таблицы применять.
там же если один источник, вызвыается CountPrim, насколько я помню, а в нем делается count(recId) - а это довольно легкий запрос. |
|
25.07.2007, 11:50 | #7 |
Участник
|
Цитата:
2. Почему ты решил, что у человека один источник? 3. Почему ты решил, что у человека версионник? Вдруг у него какой-нибудь SQL2000 с блокировками на чтение? И обрати внимание, в конечном итоге человек хотел сделать нумерацию строк. |
|
25.07.2007, 12:00 | #8 |
Участник
|
Спасибо за ответ. Подошел вариант с countLoops, так как к таблице джойнится еще одна. TotalCount выдавал отрицательный результат.
|
|