|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
Всем привет! у меня скорее всего тупой вопрос:) На форме в гриде выводится таблица с данными. Сделал поле в этой таблице num с типом Integer(AutoInc) для счетчика. Но у меня сортируются записи по фамилии. И получается так, что когда добавляю записи в таблице, то у Иванова может стоять номер 1, потому что первым его добавил, а у какого нибудь А.....ов номер 25. А хотел, чтоб цифры в поле num шли по возрастанию от 1 и т.д. независимо от фамилий. Прошу прощения, если такая тема есть, в поиске не нашел ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:40 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
Не стоит этого делать вообще. FoxPro - это не Excel. Нумерация строк - бессмысленное занятие, поскольку идентификация записей выполняется другими средствами. Попробуйте написать (именно написать . Это сильно облегчает понимание) ЗАЧЕМ Вам может понадобиться нумерация строк? А потом подумайте, можно ли решить все эти задачи БЕЗ нумерации? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:47 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisВсем привет! у меня скорее всего тупой вопрос:) На форме в гриде выводится таблица с данными. Сделал поле в этой таблице num с типом Integer(AutoInc) для счетчика. Но у меня сортируются записи по фамилии. И получается так, что когда добавляю записи в таблице, то у Иванова может стоять номер 1, потому что первым его добавил, а у какого нибудь А.....ов номер 25. А хотел, чтоб цифры в поле num шли по возрастанию от 1 и т.д. независимо от фамилий. Прошу прощения, если такая тема есть, в поиске не нашелAutoIcr не означает автоматической сортировки по этому полю. Так что перед выводом в грид нужно сделать сортировку по этому полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:49 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denis, Если нужна тупая простая нумерация строк для отображения в гриде может RECNO поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:54 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
ВладимирМНе стоит этого делать вообще. Попробуйте написать (именно написать . Это сильно облегчает понимание) ЗАЧЕМ Вам может понадобиться нумерация строк? А потом подумайте, можно ли решить все эти задачи БЕЗ нумерации? нумерация для того, чтобы знать, сколько у меня записей в таблице. По другому я ведь не смогу узнать. Т.е. Вы предлагаете просто от руки вводить номер при добавлении следующей записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:55 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
AmKaddenis_denis, Если нужна тупая простая нумерация строк для отображения в гриде может RECNO поможет? именно это мне и нужно) А можно поподробнее про RECNO? Как это осуществить? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:57 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisнумерация для того, чтобы знать, сколько у меня записей в таблице. По другому я ведь не смогу узнать. То, что Вы чего-то не умеет или не можете, не означает отсутствия нужной Вам возможности. Почитайте хелп. По Reccount() к примеру.Т.е. Вы предлагаете просто от руки вводить номер при добавлении следующей записи?Жуть. И как только до такого додумались? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 10:59 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
только учтите, что reccount() покажет количество всех записей, в том числе помеченных на удаление. Если нужно посчитать только живые записи, нужно воспользоваться count for not deleted() или SQL-запросом с предикатом where not deleted(). Подробности в ХЕЛПе ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 12:01 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
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) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 13:14 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
igorbikтолько учтите, что reccount() покажет количество всех записей, в том числе помеченных на удаление. Если память мне не изменяет, то у этой ф-ии на этот счет имеется второй параметр? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 13:18 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisAmKaddenis_denis, Если нужна тупая простая нумерация строк для отображения в гриде может RECNO поможет? именно это мне и нужно) А можно поподробнее про RECNO? Как это осуществить? Должно помочь это: напиши в ConstrolSource колонки нумерации Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 13:23 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
AmKad Должно помочь это: напиши в ConstrolSource колонки нумерации Код: plaintext
у меня в гриде есть поле num, в котором будут нумероваться поля. Как там там прописать эту функцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 13:51 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisнашел в хэлпе. Сделал вроде все правильно, но он выдает ошибку пр запуске. Посмотрите, пожалуйста Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 13:52 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisу меня в гриде есть поле num, в котором будут нумероваться поля. Как там там прописать эту функцию? Не поля, а записи, наверно, во-первых. А во-вторых — Ва же уже сказали, что нет смысла нумеровать записи. Количество неудаленных записей в таблице можно получить командой SELECT COUNT ... FROM ... FOR !DELETED(); общее количество записей выдаёт функция RECCOUNT(). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:03 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisAmKad Должно помочь это: напиши в ConstrolSource колонки нумерации Код: plaintext
у меня в гриде есть поле num, в котором будут нумероваться поля. Как там там прописать эту функцию? Если Вы воспользуетесь курсорадаптером, если уж Вам сдался этот счетчик, то вот некоторые финты ушами: 1. в селекткмд можете написать Код: plaintext 1. 2. 3. 4.
тогда у Вас этот счетчик будет создаваться автоматом при отборе 2. в курсорсхеме прописать автоинкримент полю, в селекткмд написать 0 as num тогда при наполнении курсора данными произойдет автонумирация при работе с курсорадаптером всегда можно посмотреть reccount(), который всегда явно и точно возвращать реальное кол-во всех записей в курсоре подобный механизм работы Вы можете посмотреть в примере: ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:14 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
вторая часть примера: в настроечной табличке можете как раз поиграться со строчкой запроса и добавить как раз счетчик (там есть интерфейс) recn() as num т.е. в данном примере Вы увидите как работать с выборками из табличек, в данном примере со всеми записями, но в реальных фреймах Вы должны понимать, что создаются конструкторы для задания выражения where, которые позволяют выбирать части по каким-то условиям. в данном примере Вы увидите класс, который автоматом отображает номер текущей записи и общее кол-во записей в списке - возможно Вам это понравится и Вы что-то подобное реализуете самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:18 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
Мда... Все что-то советуют, а зачем это вообще нужно, никому даже в голову не приходит спросить... Итак, в чем, собственно, состоит задача? Что сделать-то нужно? Не выбранный способ реализации, а сама задача в чем заключается? Конечная цель? Вариант 1. Узнать общее количество записей? Ну, задача, как задача. Правда, непонятно, зачем для ее решения нумеровать эти самые записи. Или Вы для подсчета, скажем, яблок на тарелке, обязательно ручкой пишите на их боках порядковые номера? А без такой нумерации подсчитать общее количество невозможно? А теперь уточняем: каких записей? Всех какие есть или удовлетворяющих определенному условию? Да, разумеется, в FoxPro записи удаляются в два этапа: сначала запись помечается как удаленная, и только потом физически удаляется. Как следствие, в таблице могут присутствовать "мусорные" записи. Т.е. записи подготовленные к удалению, но пока не удаленные. Однако это всего-лишь один из вариантов подсчета. Ведь, как правило, в Grid отображаются не вообще все записи, а лишь записи, удовлетворяющие определенным условиям. Т.е. возможно, задача сводится к подсчету отображенных записей? Опять же, нумерация здесь никак не поможет. Вариант 2. Нужно отобразить некий порядковый номер строки . Как в Excel Несмотря на то, что автор отнекивается от этого, но судя по фразе "у меня в гриде есть поле num, в котором будут нумероваться поля" именно это он и хочет. В принципе, задача решаемая, но чудовищными усилиями. Причем в конце-концов выясняется, что это никому не нужно. Почему? Тут надо начать с самого начала. Зачем вообще введена нумерация строк в Excel? Ответ очевиден - для идентификации строк. Чтобы можно было однозначно найти нужную строку в огромном листе Excel. Ключевое слово " найти ". Причем номер строки Excel вообще никак не связан с тем, что в этой строке содержится. Как организуется работа в базах данных? Пользователю отображают некую выборку. Часть записей. При этом, объем этой выборки изначально относительно невелик. А, кроме того, может быть отсортирован в произвольном порядке. По возрастанию, по убыванию, в порядке "физического" следования или как-то еще. Другими словами, порядковый номер строки в базе данных - бессмысленная информация. Она, во-первых, никак, никоим образом не идентифицирует запись. Одна и та же форма может отображать одну и ту же информацию в самом разном виде. И если сегодня "первая" строка - это что-то одно, то буквально через минуту - это уже что-то совсем другое Во-вторых, как следствие, по порядковому номеру строки невозможно однозначно идентифицировать запись. Когда возникает задача что-то найти в базе данных, поиск будет осуществляться ни в коем случае не по номеру строки, а по каким-то реквизитам самой записи. Скажем, части названия. Вот про все это я и говорил, когда просил НАПИСАТЬ (не в форум, а для себя) ЧТО Вы хотите получить. Какую задачу решить при помощи этой самой нумерации? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:22 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
ВладимирМ, я подумал и понял, что мне важнее скорее всего узнать общее количество записей. Чтоб знать, сколько у меня в таблице человек. Удаленные записи меня не интересуют, а только те, которые отображаются в гриде. Не обязательно нумеровать. Может создать поле, в котором будет написано общее количество людей? Вот это мне необходимо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:29 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisВладимирМ, я подумал и понял, что мне важнее скорее всего узнать общее количество записей. Чтоб знать, сколько у меня в таблице человек. Удаленные записи меня не интересуют, а только те, которые отображаются в гриде. Не обязательно нумеровать. Может создать поле, в котором будет написано общее количество людей? Вот это мне необходимоДа что Вы так зациклились -то на создании поля? Для чего Вам это поле? Хранить во всех записях в этом поле количество записей? Ну когда до Вас дойдет что количество записей постоянно меняется? И их количество не хранят, это определяют разными способами в нужный момент времени? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:37 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
проходящий., здесь я имел ввиду текстовое поле textbox, а не поле в таблице) Я понимаю, что количество записей постоянно меняется. Чтобы в этом поле их количество тоже менялось ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:45 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisя подумал и понял, что мне важнее скорее всего узнать общее количество записей. Чтоб знать, сколько у меня в таблице человек. Удаленные записи меня не интересуют, а только те, которые отображаются в гриде. Не обязательно нумеровать. Может создать поле, в котором будет написано общее количество людей? Вот это мне необходимо Снова что-то не додумано в постановке задачи. Ну, общее физическое количество записей в таблице - это функция Reccount(). Но, как правило, практического смысла она не имеет по той причине, что часть записей при подсчете учитывать не надо. Во-первых, это записи, помеченные как удаленные, но которые физически еще не удалены. Количество таких записей подсчитать не сложно Код: plaintext 1. 2. 3. 4. 5.
Во-вторых, как уже говорилось, обычно требуется подсчитать не вообще ВСЕ записи, а записи, удовлетворяющие определенным условиям. Например, количество людей из такой-то группы. Т.е. возникает некое дополнительное условие WHERE в команде Select-SQL Наконец вопрос, который явно не прозвучал, но "чувствуется": следует ли это количество где-то хранить и как его отображать? Следует ли хранить в поле таблицы? Собственно, зачем? Чтобы каждый раз не пересчитывать заново? Вопрос далеко не простой. Иногда действительно имеет смысл это сделать, но есть ли необходимость это в данном случае? Действительно так долго каждый раз заново пересчитывать общее количество? Как-то сомнительно... Как отображать? Ну, как... В объекте формы. Просто присвоив, например, какому-либо TextBox рассчитанное значение Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 14:55 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
2 denis_denis посмотрите и поиграйтесь с примером, который я Вам выложил. Вы озадачились отображением кол-ва записей в списке. изв., но этот велосипед уже предуман до Вас и некоторые разработчики возлагают эту задачу на какие-то предсозданные заранее заготовки-классы. иными словами: Вы можете подсмотреть некоторый стиль предсоздания заготовок, которые Вам облегчат жизнь. просто посмотрите на некоторый внешний вид и т.д., далее постарайтесь понять принцип построения(зоздания) каких-то универсальных предзаготовок, которые .... иными словами: в фокспро есть способ создания некоторых шаблонов, и далее уже с пом-ю этих шаблонов быстро масштабировать(наращивать) приложение. такой подход облегчает жизнь разработчику, снижает его трудозатраты, позволяет быстро вносить изменения и просто сопровождать проект. пока, просто подсмотрите "фишку". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 15:14 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
ВладимирМ, сделал как Вы мне посоветовали. Прописал этот код у формы, потом создал текстбокс, присвоил ему значение как Вы посоветовали. Но при запуске формы текстбокс остается пустым, нажимаю на него, выскакивает ошибка Unknown member TextBox2 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 15:32 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
прошелмимо, спасибо, буду смотреть) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 15:39 |
|
небольшой вопрос по счетчику
|
|||
---|---|---|---|
#18+
denis_denisВладимирМ, сделал как Вы мне посоветовали. Прописал этот код у формы, потом создал текстбокс, присвоил ему значение как Вы посоветовали. Но при запуске формы текстбокс остается пустым, нажимаю на него, выскакивает ошибка Unknown member TextBox2 Сам код можно посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 18:37 |
|
|
start [/forum/topic.php?fid=41&msg=36542606&tid=1585472]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 145ms |
0 / 0 |