Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.08;
Скачать: CL | DM;

Вниз

Пронумеровать записи   Найти похожие ветки 

 
Alex_C   (2011-12-07 16:06) [0]

Так правильнопронумеровать записи в таблице при выводе пользователю? Делал на CalcFields

 if LogTable.RecNo <> -1 then
   LogTableNumer.AsInteger := LogTable.RecNo
 else if LogTable.Bof then
   LogTableNumer.AsInteger := 1
 else if LogTable.Eof then
   LogTableNumer.AsInteger := LogTable.RecordCount;

До использования ADO+Access работало. Сейчас первую и последнюю запись неправильно нумерует - первую как номер последней записи, последнюю - как 1


 
Медвежонок Пятачок ©   (2011-12-07 16:08) [1]

а смысл этих нумераций в чем?

например пятая запись. это что значит?


 
Anatoly Podgoretsky ©   (2011-12-07 16:15) [2]

> Alex_C  (07.12.2011 16:06:00)  [0]

Загадочная фраза "ADO+Access работало"


 
Inovet ©   (2011-12-07 17:07) [3]

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


 
Inovet ©   (2011-12-07 17:10) [4]

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


 
Alex_C   (2011-12-07 17:16) [5]


> например пятая запись. это что значит?


Нет смысла. Но пользователи хотят идеть Цыферку.  
Что реально нельзя как то просто?


> Да, пронимеровать записи в выборке возможно в запросе, но
> сильно тормозно будет


Да я поле то уберу не проблема. Но я в шоке))) Вроде такая простая задача))


 
Alex_C   (2011-12-07 17:17) [6]

Да кстати -благодаря форуму переделал практически свою программу))) Круто получилось))) Еще раз спасибо ВСЕМ!!!!


 
Медвежонок Пятачок ©   (2011-12-07 17:27) [7]

Но пользователи хотят идеть Цыферку.  

Им надо объяснить, что они не хотят видеть эту цифирьку, а им просто это кажется, что они хотят ее видеть.

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


 
Anatoly Podgoretsky ©   (2011-12-07 17:36) [8]


> Inovet ©   (07.12.11 17:07) [3]

В генераторах отчетов это делается средствами генератора.


 
Anatoly Podgoretsky ©   (2011-12-07 17:37) [9]

> Alex_C  (07.12.2011 17:16:05)  [5]

Которая не нужна в базах. Скажу страшное - ее нет даже в Эксель.
Это очень вредная вещь.


 
Inovet ©   (2011-12-07 17:37) [10]

> [8] Anatoly Podgoretsky ©   (07.12.11 17:36)
> > Inovet ©   (07.12.11 17:07) [3]
>
> В генераторах отчетов это делается средствами генератора.

Это что за фраза?


 
Ega23 ©   (2011-12-07 19:11) [11]


> Да я поле то уберу не проблема. Но я в шоке))) Вроде такая
> простая задача))

Вот представь себе.
Ты играешь в преферанс. Тебе пришло 10 карт. Ты говоришь: "Хочу, штоб были циферки, с 1 по 10". ОК, расставили циферки. Ты взял карты в руки и расположил снаяала пики по старшинству, потом трефы, бубну и черви.
Что станет с твоими циферками? Они перемешаются.
Потом ты подумал, и расположил масти по старшинству, но сначала пики, потом бубны, потом трефы, потом черви. Ну чтобы чёрное-красное чередовалось.
Что опять станет с твоими циферками? Они опять перемешаются.
Ты сделал три захода с каких-то карт У тебя на руках осталось семь. Твои циферки мало того что перемешаются, в них ещё и "дырки" появятся.

Так вот. Колода - это таблица в СУБД, твои 10 карт - это записи, которые тебе вернул запрос. Сортировка по мастям и по возрастанию-убыванию, это то, что клиент в заголовках грида тыкает. Оставшиеся карты после сдачи - это тот фильтр, который клиент на выборку накладывает.
Посему - задача не имеет никакого практического смысла.
Только в одном случае: данные на клиенте никогда не сортируются и никак не фильтруются.


 
antonn ©   (2011-12-07 20:46) [12]


> Им надо объяснить, что они не хотят видеть эту цифирьку,
>  а им просто это кажется, что они хотят ее видеть.

Нет, они правильно хотят.
Есть общая БД, есть сетевой софт, который через запрос выбирает записи и отображает их в гриде. Номер строки в гриде - это совершенно элементарное желание. Когда этих строк на экране штук 30, и текст почти не различается, то удобно иметь номер строки. Чтобы Марь Иванна могла Елене Николаевне просто сказать - посмотри пятую строку у поставщика РогаИКопыта. Это удобно, быстро, наглядно. Такая информация совсем лишней не бывает, занимает относительно мало места на экране. Запрос один, данные одни и те же, ситуация когда данные изменятся и один из клиентов не обновит список - бывает, но не смертальная в большинстве случаев. И как ее исправить очень просто донести даже до дубого пользователя, сделав кнопочку "обновить список".
Меня удивляет насколько умными считают отвечающие и выдающие такие бредовые и недальновидные ответы. Понятия не имеющие какой софт у вопрошающего, но дающие однозначные ответы с высоты узкого кругозора.


 
Медвежонок Пятачок ©   (2011-12-07 20:59) [13]

Чтобы Марь Иванна могла Елене Николаевне просто сказать - посмотри пятую строку у поставщика РогаИКопыта.

Аха аха.
Она пятая у мариванны. А у Елены Николаевны в это же самое время она вторая.

И типа других ключевых естественных ключей в гриде просто нету.
Все документы рогов и копыт имеют одну дату, одну сумму, одно количество и вообще всё одно имеют.
Но программист спешит на помощь и бабушкам и нумерует строки.


 
Медвежонок Пятачок ©   (2011-12-07 21:00) [14]

Понятия не имеющие какой софт у вопрошающего

У вопрошающего дурной софт.
Если теткам нужны номера строк, они должны получить не грид, а отчет.


 
Ega23 ©   (2011-12-07 21:02) [15]


> Меня удивляет насколько умными считают отвечающие и выдающие
> такие бредовые и недальновидные ответы.


Знаешь... Это твоё посмотри пятую строку у поставщика РогаИКопыта выглядит бредовым. Такое впечатление, что ты никогда БД не проектировал. Если тебе нужно нумеровать сроки у поставщика - заведи в таблице "Строки поставщиков" поле StringNr, поставь уникальный индекс на сочетание (ID_Поставщика, StringNr), Order by ID_Поставщика, StringNr и смело выводи его в грид отдельной колонкой. Опять таки с возможностью сортировки на клиенте.
Но нумеровать строки в НД это просто бессмысленно.


 
antonn ©   (2011-12-07 21:03) [16]


> Она пятая у мариванны. А у Елены Николаевны в это же самое
> время она вторая.

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


> И типа других ключевых естественных ключей в гриде просто
> нету.

Я уже говорил про узкий кругозор. Это исправляется, но исключительно при собственном желании и действии, сидя за компьютером дома и отвечая глупыми советами на ДМ кругозор не сильно расширяется.


> У вопрошающего дурной софт.

Свободен. Крестик справа сверху


 
Медвежонок Пятачок ©   (2011-12-07 21:05) [17]

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

Так может быть.
А еще так может и не быть.

Могу рассказать возможные варианты.


 
antonn ©   (2011-12-07 21:05) [18]


> Это твоё посмотри пятую строку у поставщика РогаИКопыта
> выглядит бредовым

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


> Но нумеровать строки в НД это просто бессмысленно.

я без понятия кто подумал что я говорю про нумерацию в БД


 
antonn ©   (2011-12-07 21:06) [19]


> Так может быть.
> А еще так может и не быть.

Вот тебе и ответ. Значит однозначного твоего:

> Им надо объяснить, что они не хотят видеть эту цифирьку,
>
> >  а им просто это кажется, что они хотят ее видеть.

быть не должно.


 
Медвежонок Пятачок ©   (2011-12-07 21:10) [20]

Маривана видит пять строк рогов и копыт.
Нинапетровна тоже видит пять строк рогов и копыт.

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

мариванна вставила строку номер шесть, а нина петровна не обновила свой датасет и видит пять строк.

и так далее.

в общем дурь программирует дурь.


 
antonn ©   (2011-12-07 21:11) [21]


> Но мариванна кликнула по заголовку цены

ситуации когда кликать нельзя - не бывает?
будешь дальше спорить?


 
antonn ©   (2011-12-07 21:19) [22]

В общем как я вижу ситуацию глазами Пятачка:
- Данные на клиенте нельзя нумеровать. Потому что вы, тупые курицы (операторы), будите сортировать их и тогда нумерация не будет одинаковой и тогда вы не сможите друг другу сказать номер строки и однозначно идентифицировать объект. Разумеется вы, старые калоши, и не думаете применять нумерацию в своих личных целях (запример запомнив номер последней строки с которой работали), а не при общении друг с другом, используйте маркеры. И уж тем более вы никогда не сможите общаясь друг с другом сказать "отсортируй столбцы по цене", ведь это недосягаемое кун фу для вас. Вам никогда не понадобится одним взглядом окинув грид увидеть общее количество строк, а если понадобится, то я где нибудь отдельно прикручу эту цифру. Исходя из этого я констатирую - вам не нужна нумерация, абсолютно.
И вообще отстаньте, у меня из-за вас шоры виски натирают.


 
Медвежонок Пятачок ©   (2011-12-07 21:25) [23]

ситуации когда кликать нельзя - не бывает?

ну я же говорил, что тот софт дурной.
еще и кликать для сортировки нельзя.


 
antonn ©   (2011-12-07 21:26) [24]


> ну я же говорил, что тот софт дурной.

а я говорил про шоры.
на том и порешим


 
Медвежонок Пятачок ©   (2011-12-07 21:27) [25]

и тогда вы не сможите друг другу сказать номер строки и однозначно идентифицировать объект.

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


 
Ega23 ©   (2011-12-07 21:30) [26]


> я без понятия кто подумал что я говорю про нумерацию в БД


Так как нумерация в БД имеет вполне конкретный смысл.
А вот нумерация "строк" в наборе данных - нет.


> быть не должно.


Наоборот. Ты просто обязан объяснить заказчику, что он хочет получить и каковы будут последствия этого. если он настаивает и готов оплатить данную работу - ну тут да, любой каприз за ваши деньги. Но если ты сам, без его желания туда такое прикрутишь - это дурь.
Такое имеет смысл только в неизменяющихся (ну либо крайне редко изменяющихся) справочных таблицах. Но для этого есть масса других вариантов решения.
Пример из жизни: когда-то давно, лет 7 назад, я являлся разработчиком модуля "Бюро Пропусков" в рамках большой охранной системы. Как раз с такими МарьИваннами приходилось дело иметь.
Так вот, я во всех справочных таблицах заводил поле SortOrdedr, которое делал настраиваемым. Как раз для того, чтобы МарьИванна имела возможность получать наиболее часто используемые справочные данные в начале НД, а не искать их.


 
antonn ©   (2011-12-07 21:31) [27]


> А вот нумерация "строк" в наборе данных - нет.

абсолютно никогда? никогда нет смысла нумеровать строки в отображаемом гриде на экране?


 
Медвежонок Пятачок ©   (2011-12-07 21:35) [28]

никогда нет смысла нумеровать строки в отображаемом гриде на экране?

если бы он был, то гриды были бы именно такими bydesign


 
Ega23 ©   (2011-12-07 21:37) [29]


> и не думаете применять нумерацию в своих личных целях (запример
> запомнив номер последней строки с которой работали)


Вообще-то хорошим тоном будет сохранение значения ключевого поля в НД при выходе из программы. И, соответственно, Locate на него при старте.


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


Вообще-то хорошим тоном считается вывод общего количества записей в НД в статус-бар.


> И уж тем более вы никогда не сможите общаясь друг с другом
> сказать "отсортируй столбцы по цене", ведь это недосягаемое
> кун фу для вас


Быстрый поиск по столбцу ещё никто не отменял. А для того, чтобы "отсортируй столбцы по цене" мне надо:
1. В точности повторить именно ту сортировку и те фильтры, которые у соседки.
2. После отсчитать нужное количество строк
3. Посмотреть, чё там и как.
4. Снова восстановить все сортировки и фильтры, которые были у меня выставлены изначально.
Плохая эргономика, плохая программа.


 
antonn ©   (2011-12-07 21:38) [30]


> если бы он был, то гриды были бы именно такими bydesign

тебе нарисовать? сейчас 2011 год, если что


 
Медвежонок Пятачок ©   (2011-12-07 21:39) [31]

тебе нарисовать?

Нарисуй. Только не мне.
Ембаркадере нарисуй.
И уломай их включить это недоразумение как 3rd party компонент в XE3


 
Ega23 ©   (2011-12-07 21:40) [32]


> абсолютно никогда? никогда нет смысла нумеровать строки
> в отображаемом гриде на экране?


Почему в TDBGrid нет нумерации строк? Ведь это "так естественно"!
Почему в стандартной поставке компонентов нет TDBTreeView? Ведь это так естественно!
Почему ParamSwitch распознаёт только один символ, а не несколько? Ведь это так естественно!


 
Ega23 ©   (2011-12-07 21:42) [33]


> тебе нарисовать? сейчас 2011 год, если что


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


 
antonn ©   (2011-12-07 21:46) [34]


> Вообще-то хорошим тоном будет сохранение значения ключевого
> поля в НД при выходе из программы.

Я не про выход. Вот сидит оператор, набивает строки, редактирует что то там. Остановилась на десятой строке, сделала передышку, сделала еще десять. "-На какйо строке МарьИванна? -На 37! -Медленно работаешь!"


>
> Вообще-то хорошим тоном считается вывод общего количества
> записей в НД в статус-бар.

вообще еще группировка бывает :)
например как тут http://www.ssw.com.au/SSW/Standards/DeveloperGeneral/Images/janus_gridex_v3.gif


> А для того, чтобы "отсортируй столбцы по цене" мне надо:
>
> 1. В точности повторить именно ту сортировку и те фильтры,
>  которые у соседки.
> 2. После отсчитать нужное количество строк
> 3. Посмотреть, чё там и как.
> 4. Снова восстановить все сортировки и фильтры, которые
> были у меня выставлены изначально.

вот я и говорю - зачем считать? щелкнул по столбцу и отмотал сразу ориентируясь на номера строк.
Я почему тему завел - каждый рабочий день общаюсь с операторами которые далеко не гуру, часто путают "диск Це" и "мои документы", но они умеют сортировать по столбцу, и даже умеют менять очередность столбцов перпетаскиванием (грид позволяет). Быстрый поиск - это как автокомплит в дельфи? А если там "ОООРогаИКопытаДомодедовскихАвиалиний" и различие в строках идет уже после этого заклинания? И строк штук 50-100?


 
Медвежонок Пятачок ©   (2011-12-07 21:53) [35]

-На какйо строке МарьИванна? -На 37!

Нет, он же просто невменяем.

мариванна набивает с листа.
и номер строки в вопросе - он на листе.
и на листе бумаги этот номер строки вполне логичен и понятен.


 
Inovet ©   (2011-12-07 21:57) [36]

> [12] antonn ©   (07.12.11 20:46)
> Понятия не имеющие какой софт у вопрошающего

Этот софт обсуждается уже с месяц, так что понятие о нём есть у тех, кто читал ветки. Про нумерацию уже все сказали однозначно, кроме тебя.


 
antonn ©   (2011-12-07 21:58) [37]


> мариванна набивает с листа.

нет никакого листа


> Про нумерацию уже все сказали однозначно, кроме тебя.

да, много дурости наговорили


 
Ega23 ©   (2011-12-07 22:04) [38]


> вообще еще группировка бывает :)
> например как тут


"Тут" я вижу ProductID. Который никто не мешает выводить и сортировать по нему. Это не имеет к "нумерации записей в наборе данных" никакого отношения.
Правда никто не мешает удалить из таблицы Products запись с id=66, которая Louisiana Hot Spiced Okra. И будет у тебя сначала 65, а потом 67.


>  А если там "ОООРогаИКопытаДомодедовскихАвиалиний" и различие
> в строках идет уже после этого заклинания? И строк штук
> 50-100?


А если у бабушки, то был бы дедушка. Всех хотелок предусмотреть просто НЕ-ВОЗ-МОЖ-НО. Один хочет вес мешков с бетоном видеть с точностью до килограмма. Другой - до микрограммов (это реальная претензия, без шуток). И если заказчик готов оплатить разработку такой вот нетривиальной дури - ради Б-га, везде строки будут нумероваться. Если же нет - тады ой.


 
Медвежонок Пятачок ©   (2011-12-07 22:04) [39]

Вот сидит оператор, набивает строки,

А!
я понял.
Мариванна набивает строки из головы.

К чему тогда относится вопрос: "мариванна, на какой строке остановилась?"

К какому источнику строк и номеру последней введенной строки вопрошает коллега мариванны?


 
antonn ©   (2011-12-07 22:12) [40]


> "Тут" я вижу ProductID.

я тебе привел пример группировки, а не ProductID
это когда щелкаешь плюсик и выкатывается подтаблица, кол-во строк в ней не такое как кол-во строк общее во всем гриде


> А если у бабушки, то был бы дедушка.

Вот теперь ты отлично понял к чему я клоню.
Я утвержадю что ситуации когда нумерация не будет лишней (что вовсе не обязательно что функции работы будут зависеть от нумерации), а Медвежонок упорно настаивает что нумерация не нужна. Вообще. Никогда.
Вот просто логически прикинуть - кто правее? Тот кто говорит что ситуация может быть, или кто говорит что она никогда не может быть?


> я понял.

ошибаешься


> К какому источнику строк и номеру последней введенной строки
> вопрошает коллега мариванны?

правильно звучит - "сколько?". Теперь вопрос для самых сообразительных - марьиванна их сосчитала (т.к. нумерации нет) или посмотрела на номер строки (если нумерация есть)?



Страницы: 1 2 3 4 5 6 вся ветка

Текущий архив: 2012.04.08;
Скачать: CL | DM;

Наверх




Память: 0.6 MB
Время: 0.012 c
15-1322944202
Юрий
2011-12-04 00:30
2012.04.08
С днем рождения ! 4 декабря 2011 воскресенье


2-1324037431
Alex_C
2011-12-16 16:10
2012.04.08
Динамическое создание Fields...


2-1324146298
SQLEX
2011-12-17 22:24
2012.04.08
Почему? Value assigned to ... never used


15-1323241735
Dennis I. Komarov
2011-12-07 11:08
2012.04.08
Routing OS


3-1274100955
Tima
2010-05-17 16:55
2012.04.08
Вопрос по FIBScripter и fbclient.dll