Форум: "Начинающим";
Текущий архив: 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