Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.04.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.01 c
15-1323111525
C++?
2011-12-05 22:58
2012.04.08
Разница компиляторов С++


11-1243600824
Noob
2009-05-29 16:40
2012.04.08
При копировании из 8 битного BMP в 24битный искажаются цвета


15-1323234832
Генсек
2011-12-07 09:13
2012.04.08
Законность. Программа использует другую программу.


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


4-1253393188
Stepan Darchuk
2009-09-20 00:46
2012.04.08
Запуск приложения не из файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский