powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / небольшой вопрос по счетчику
25 сообщений из 35, страница 1 из 2
небольшой вопрос по счетчику
    #36541514
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! у меня скорее всего тупой вопрос:) На форме в гриде выводится таблица с данными. Сделал поле в этой таблице num с типом Integer(AutoInc) для счетчика. Но у меня сортируются записи по фамилии. И получается так, что когда добавляю записи в таблице, то у Иванова может стоять номер 1, потому что первым его добавил, а у какого нибудь А.....ов номер 25. А хотел, чтоб цифры в поле num шли по возрастанию от 1 и т.д. независимо от фамилий. Прошу прощения, если такая тема есть, в поиске не нашел
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541546
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стоит этого делать вообще.

FoxPro - это не Excel. Нумерация строк - бессмысленное занятие, поскольку идентификация записей выполняется другими средствами.

Попробуйте написать (именно написать . Это сильно облегчает понимание) ЗАЧЕМ Вам может понадобиться нумерация строк? А потом подумайте, можно ли решить все эти задачи БЕЗ нумерации?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541554
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_denisВсем привет! у меня скорее всего тупой вопрос:) На форме в гриде выводится таблица с данными. Сделал поле в этой таблице num с типом Integer(AutoInc) для счетчика. Но у меня сортируются записи по фамилии. И получается так, что когда добавляю записи в таблице, то у Иванова может стоять номер 1, потому что первым его добавил, а у какого нибудь А.....ов номер 25. А хотел, чтоб цифры в поле num шли по возрастанию от 1 и т.д. независимо от фамилий. Прошу прощения, если такая тема есть, в поиске не нашелAutoIcr не означает автоматической сортировки по этому полю. Так что перед выводом в грид нужно сделать сортировку по этому полю.
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541570
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_denis,

Если нужна тупая простая нумерация строк для отображения в гриде может RECNO поможет?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541576
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМНе стоит этого делать вообще.
Попробуйте написать (именно написать . Это сильно облегчает понимание) ЗАЧЕМ Вам может понадобиться нумерация строк? А потом подумайте, можно ли решить все эти задачи БЕЗ нумерации?
нумерация для того, чтобы знать, сколько у меня записей в таблице. По другому я ведь не смогу узнать. Т.е. Вы предлагаете просто от руки вводить номер при добавлении следующей записи?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541582
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKaddenis_denis,

Если нужна тупая простая нумерация строк для отображения в гриде может RECNO поможет?
именно это мне и нужно) А можно поподробнее про RECNO? Как это осуществить?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541586
denis_denisнумерация для того, чтобы знать, сколько у меня записей в таблице. По другому я ведь не смогу узнать. То, что Вы чего-то не умеет или не можете, не означает отсутствия нужной Вам возможности. Почитайте хелп. По Reccount() к примеру.Т.е. Вы предлагаете просто от руки вводить номер при добавлении следующей записи?Жуть. И как только до такого додумались?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36541776
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только учтите, что reccount() покажет количество всех записей, в том числе помеченных на удаление.
Если нужно посчитать только живые записи, нужно воспользоваться count for not deleted() или SQL-запросом с предикатом where not deleted().
Подробности в ХЕЛПе
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542050
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igorbikтолько учтите, что reccount() покажет количество всех записей, в том числе помеченных на удаление.
Если нужно посчитать только живые записи, нужно воспользоваться count for not deleted() или SQL-запросом с предикатом where not deleted().
Подробности в ХЕЛПе
нашел в хэлпе. Сделал вроде все правильно, но он выдает ошибку пр запуске. Посмотрите, пожалуйста

OPEN DATABASE ('data1')
USE table1
CLEAR
count for count deleted(family)
DISPLAY FIELD num FOR UPPER(family)
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542060
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbikтолько учтите, что reccount() покажет количество всех записей, в том числе помеченных на удаление.
Если память мне не изменяет, то у этой ф-ии на этот счет имеется второй параметр?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542073
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_denisAmKaddenis_denis,

Если нужна тупая простая нумерация строк для отображения в гриде может RECNO поможет?
именно это мне и нужно) А можно поподробнее про RECNO? Как это осуществить?
Должно помочь это: напиши в ConstrolSource колонки нумерации
Код: plaintext
=Recno("mytable")
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542169
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad
Должно помочь это: напиши в ConstrolSource колонки нумерации
Код: plaintext
=Recno("mytable")

у меня в гриде есть поле num, в котором будут нумероваться поля. Как там там прописать эту функцию?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542176
denis_denisнашел в хэлпе. Сделал вроде все правильно, но он выдает ошибку пр запуске. Посмотрите, пожалуйста

Код: plaintext
1.
2.
3.
4.
SET DELETED OFF
OPEN DATABASE ('data1')
USE table1 
count for deleted('table1') to pnDeletedRecords
? pnDeletedRecords
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542236
denis_denisу меня в гриде есть поле num, в котором будут нумероваться поля. Как там там прописать эту функцию?

Не поля, а записи, наверно, во-первых. А во-вторых — Ва же уже сказали, что нет смысла нумеровать записи. Количество неудаленных записей в таблице можно получить командой SELECT COUNT ... FROM ... FOR !DELETED(); общее количество записей выдаёт функция RECCOUNT().
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542278
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_denisAmKad
Должно помочь это: напиши в ConstrolSource колонки нумерации
Код: plaintext
=Recno("mytable")

у меня в гриде есть поле num, в котором будут нумероваться поля. Как там там прописать эту функцию?

Если Вы воспользуетесь курсорадаптером,
если уж Вам сдался этот счетчик,
то вот некоторые финты ушами:

1. в селекткмд можете написать

Код: plaintext
1.
2.
3.
4.
select recn() as num, *
     from table
     where условие
     order by ....     

тогда у Вас этот счетчик будет создаваться автоматом при отборе

2. в курсорсхеме прописать автоинкримент полю,
в селекткмд написать 0 as num

тогда при наполнении курсора данными произойдет автонумирация


при работе с курсорадаптером
всегда можно посмотреть reccount(), который всегда явно и точно
возвращать реальное кол-во всех записей в курсоре

подобный механизм работы Вы можете посмотреть в примере:
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542294
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вторая часть примера:

в настроечной табличке можете как раз поиграться со строчкой запроса и добавить
как раз счетчик (там есть интерфейс)

recn() as num


т.е. в данном примере Вы увидите как работать с выборками
из табличек, в данном примере со всеми записями,
но в реальных фреймах Вы должны понимать,
что создаются конструкторы для задания выражения where,
которые позволяют выбирать части по каким-то условиям.

в данном примере Вы увидите класс, который автоматом
отображает номер текущей записи и общее кол-во записей в списке -
возможно Вам это понравится и Вы что-то подобное
реализуете самостоятельно.
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542305
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... Все что-то советуют, а зачем это вообще нужно, никому даже в голову не приходит спросить...

Итак, в чем, собственно, состоит задача? Что сделать-то нужно? Не выбранный способ реализации, а сама задача в чем заключается? Конечная цель?

Вариант 1. Узнать общее количество записей?

Ну, задача, как задача. Правда, непонятно, зачем для ее решения нумеровать эти самые записи. Или Вы для подсчета, скажем, яблок на тарелке, обязательно ручкой пишите на их боках порядковые номера? А без такой нумерации подсчитать общее количество невозможно?

А теперь уточняем: каких записей? Всех какие есть или удовлетворяющих определенному условию?

Да, разумеется, в FoxPro записи удаляются в два этапа: сначала запись помечается как удаленная, и только потом физически удаляется. Как следствие, в таблице могут присутствовать "мусорные" записи. Т.е. записи подготовленные к удалению, но пока не удаленные.

Однако это всего-лишь один из вариантов подсчета. Ведь, как правило, в Grid отображаются не вообще все записи, а лишь записи, удовлетворяющие определенным условиям. Т.е. возможно, задача сводится к подсчету отображенных записей? Опять же, нумерация здесь никак не поможет.


Вариант 2. Нужно отобразить некий порядковый номер строки . Как в Excel

Несмотря на то, что автор отнекивается от этого, но судя по фразе "у меня в гриде есть поле num, в котором будут нумероваться поля" именно это он и хочет.

В принципе, задача решаемая, но чудовищными усилиями. Причем в конце-концов выясняется, что это никому не нужно. Почему?

Тут надо начать с самого начала. Зачем вообще введена нумерация строк в Excel? Ответ очевиден - для идентификации строк. Чтобы можно было однозначно найти нужную строку в огромном листе Excel. Ключевое слово " найти ". Причем номер строки Excel вообще никак не связан с тем, что в этой строке содержится.

Как организуется работа в базах данных? Пользователю отображают некую выборку. Часть записей. При этом, объем этой выборки изначально относительно невелик. А, кроме того, может быть отсортирован в произвольном порядке. По возрастанию, по убыванию, в порядке "физического" следования или как-то еще.

Другими словами, порядковый номер строки в базе данных - бессмысленная информация.

Она, во-первых, никак, никоим образом не идентифицирует запись. Одна и та же форма может отображать одну и ту же информацию в самом разном виде. И если сегодня "первая" строка - это что-то одно, то буквально через минуту - это уже что-то совсем другое

Во-вторых, как следствие, по порядковому номеру строки невозможно однозначно идентифицировать запись. Когда возникает задача что-то найти в базе данных, поиск будет осуществляться ни в коем случае не по номеру строки, а по каким-то реквизитам самой записи. Скажем, части названия.


Вот про все это я и говорил, когда просил НАПИСАТЬ (не в форум, а для себя) ЧТО Вы хотите получить. Какую задачу решить при помощи этой самой нумерации?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542333
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
я подумал и понял, что мне важнее скорее всего узнать общее количество записей. Чтоб знать, сколько у меня в таблице человек. Удаленные записи меня не интересуют, а только те, которые отображаются в гриде. Не обязательно нумеровать. Может создать поле, в котором будет написано общее количество людей? Вот это мне необходимо
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542365
denis_denisВладимирМ,
я подумал и понял, что мне важнее скорее всего узнать общее количество записей. Чтоб знать, сколько у меня в таблице человек. Удаленные записи меня не интересуют, а только те, которые отображаются в гриде. Не обязательно нумеровать. Может создать поле, в котором будет написано общее количество людей? Вот это мне необходимоДа что Вы так зациклились -то на создании поля? Для чего Вам это поле? Хранить во всех записях в этом поле количество записей? Ну когда до Вас дойдет что количество записей постоянно меняется? И их количество не хранят, это определяют разными способами в нужный момент времени?
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542398
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

здесь я имел ввиду текстовое поле textbox, а не поле в таблице) Я понимаю, что количество записей постоянно меняется. Чтобы в этом поле их количество тоже менялось
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542439
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_denisя подумал и понял, что мне важнее скорее всего узнать общее количество записей. Чтоб знать, сколько у меня в таблице человек. Удаленные записи меня не интересуют, а только те, которые отображаются в гриде. Не обязательно нумеровать. Может создать поле, в котором будет написано общее количество людей? Вот это мне необходимо
Снова что-то не додумано в постановке задачи.

Ну, общее физическое количество записей в таблице - это функция Reccount(). Но, как правило, практического смысла она не имеет по той причине, что часть записей при подсчете учитывать не надо. Во-первых, это записи, помеченные как удаленные, но которые физически еще не удалены. Количество таких записей подсчитать не сложно

Код: plaintext
1.
2.
3.
4.
5.
SET DELETED ON   && глобальная настройка, обычно делающаяся в начале приложения
Local laCnt( 1 )
laCnt =  0 
select count(*) from MyTable into Array laCnt
?laCnt[ 1 ]

Во-вторых, как уже говорилось, обычно требуется подсчитать не вообще ВСЕ записи, а записи, удовлетворяющие определенным условиям. Например, количество людей из такой-то группы. Т.е. возникает некое дополнительное условие WHERE в команде Select-SQL

Наконец вопрос, который явно не прозвучал, но "чувствуется": следует ли это количество где-то хранить и как его отображать?

Следует ли хранить в поле таблицы?

Собственно, зачем? Чтобы каждый раз не пересчитывать заново? Вопрос далеко не простой. Иногда действительно имеет смысл это сделать, но есть ли необходимость это в данном случае? Действительно так долго каждый раз заново пересчитывать общее количество? Как-то сомнительно...

Как отображать?

Ну, как... В объекте формы. Просто присвоив, например, какому-либо TextBox рассчитанное значение

Код: plaintext
ThisForm.TextBox1.Value = laCnt[ 1 ]
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542507
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 denis_denis

посмотрите и поиграйтесь с примером,
который я Вам выложил.

Вы озадачились отображением кол-ва записей в списке.
изв., но этот велосипед уже предуман до Вас
и некоторые разработчики возлагают эту задачу на
какие-то предсозданные заранее заготовки-классы.

иными словами:
Вы можете подсмотреть некоторый стиль предсоздания заготовок,
которые Вам облегчат жизнь.

просто посмотрите на некоторый внешний вид и т.д.,
далее постарайтесь понять принцип построения(зоздания)
каких-то универсальных предзаготовок,
которые ....

иными словами:
в фокспро есть способ создания некоторых шаблонов,
и далее уже с пом-ю этих шаблонов
быстро масштабировать(наращивать) приложение.

такой подход облегчает жизнь разработчику, снижает его трудозатраты,
позволяет быстро вносить изменения и просто сопровождать проект.

пока, просто подсмотрите "фишку".
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542583
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
сделал как Вы мне посоветовали. Прописал этот код у формы, потом создал текстбокс, присвоил ему значение как Вы посоветовали. Но при запуске формы текстбокс остается пустым, нажимаю на него, выскакивает ошибка Unknown member TextBox2
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36542606
denis_denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

спасибо, буду смотреть)
...
Рейтинг: 0 / 0
небольшой вопрос по счетчику
    #36543124
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_denisВладимирМ,
сделал как Вы мне посоветовали. Прописал этот код у формы, потом создал текстбокс, присвоил ему значение как Вы посоветовали. Но при запуске формы текстбокс остается пустым, нажимаю на него, выскакивает ошибка Unknown member TextBox2
Сам код можно посмотреть?
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / небольшой вопрос по счетчику
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]