-
Так правильнопронумеровать записи в таблице при выводе пользователю? Делал на 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
-
а смысл этих нумераций в чем?
например пятая запись. это что значит?
-
> Alex_C (07.12.2011 16:06:00) [0]
Загадочная фраза "ADO+Access работало"
-
Поряуовый номер бывает нужен в отчётах, средствами генератора отчётов и делается. В интерфейсе он не нужен и бессмыслен - новая выборка с новыми исловиями и сортировкой изменит и номер. Если номер имеет смысл, например это номер записи в журнале, то и хранить его надо в базе.
-
Да, пронимеровать записи в выборке возможно в запросе, но сильно тормозно будет, поскольку специальных средств для этого нет, потому что это не нужно.
-
> например пятая запись. это что значит?
Нет смысла. Но пользователи хотят идеть Цыферку.
Что реально нельзя как то просто?
> Да, пронимеровать записи в выборке возможно в запросе, но
> сильно тормозно будет
Да я поле то уберу не проблема. Но я в шоке))) Вроде такая простая задача))
-
Да кстати -благодаря форуму переделал практически свою программу))) Круто получилось))) Еще раз спасибо ВСЕМ!!!!
-
Но пользователи хотят идеть Цыферку.
Им надо объяснить, что они не хотят видеть эту цифирьку, а им просто это кажется, что они хотят ее видеть.
А если они все же хотят ее видеть, то вероятно они смотрят на неправильное представление данных, которое ты им ошибочно дал.
Ты им дал грид, а они хотят смотреть на таблицу в отчете.
-
> Inovet © (07.12.11 17:07) [3]
В генераторах отчетов это делается средствами генератора.
-
> Alex_C (07.12.2011 17:16:05) [5]
Которая не нужна в базах. Скажу страшное - ее нет даже в Эксель.
Это очень вредная вещь.
-
> [8] Anatoly Podgoretsky © (07.12.11 17:36)
> > Inovet © (07.12.11 17:07) [3]
>
> В генераторах отчетов это делается средствами генератора.
Это что за фраза?
-
> Да я поле то уберу не проблема. Но я в шоке))) Вроде такая
> простая задача))
Вот представь себе.
Ты играешь в преферанс. Тебе пришло 10 карт. Ты говоришь: "Хочу, штоб были циферки, с 1 по 10". ОК, расставили циферки. Ты взял карты в руки и расположил снаяала пики по старшинству, потом трефы, бубну и черви.
Что станет с твоими циферками? Они перемешаются.
Потом ты подумал, и расположил масти по старшинству, но сначала пики, потом бубны, потом трефы, потом черви. Ну чтобы чёрное-красное чередовалось.
Что опять станет с твоими циферками? Они опять перемешаются.
Ты сделал три захода с каких-то карт У тебя на руках осталось семь. Твои циферки мало того что перемешаются, в них ещё и "дырки" появятся.
Так вот. Колода - это таблица в СУБД, твои 10 карт - это записи, которые тебе вернул запрос. Сортировка по мастям и по возрастанию-убыванию, это то, что клиент в заголовках грида тыкает. Оставшиеся карты после сдачи - это тот фильтр, который клиент на выборку накладывает.
Посему - задача не имеет никакого практического смысла.
Только в одном случае: данные на клиенте никогда не сортируются и никак не фильтруются.
-
> Им надо объяснить, что они не хотят видеть эту цифирьку,
> а им просто это кажется, что они хотят ее видеть.
Нет, они правильно хотят.
Есть общая БД, есть сетевой софт, который через запрос выбирает записи и отображает их в гриде. Номер строки в гриде - это совершенно элементарное желание. Когда этих строк на экране штук 30, и текст почти не различается, то удобно иметь номер строки. Чтобы Марь Иванна могла Елене Николаевне просто сказать - посмотри пятую строку у поставщика РогаИКопыта. Это удобно, быстро, наглядно. Такая информация совсем лишней не бывает, занимает относительно мало места на экране. Запрос один, данные одни и те же, ситуация когда данные изменятся и один из клиентов не обновит список - бывает, но не смертальная в большинстве случаев. И как ее исправить очень просто донести даже до дубого пользователя, сделав кнопочку "обновить список".
Меня удивляет насколько умными считают отвечающие и выдающие такие бредовые и недальновидные ответы. Понятия не имеющие какой софт у вопрошающего, но дающие однозначные ответы с высоты узкого кругозора.
-
Чтобы Марь Иванна могла Елене Николаевне просто сказать - посмотри пятую строку у поставщика РогаИКопыта.
Аха аха.
Она пятая у мариванны. А у Елены Николаевны в это же самое время она вторая.
И типа других ключевых естественных ключей в гриде просто нету.
Все документы рогов и копыт имеют одну дату, одну сумму, одно количество и вообще всё одно имеют.
Но программист спешит на помощь и бабушкам и нумерует строки.
-
Понятия не имеющие какой софт у вопрошающего
У вопрошающего дурной софт.
Если теткам нужны номера строк, они должны получить не грид, а отчет.
-
> Меня удивляет насколько умными считают отвечающие и выдающие
> такие бредовые и недальновидные ответы.
Знаешь... Это твоё посмотри пятую строку у поставщика РогаИКопыта выглядит бредовым. Такое впечатление, что ты никогда БД не проектировал. Если тебе нужно нумеровать сроки у поставщика - заведи в таблице "Строки поставщиков" поле StringNr, поставь уникальный индекс на сочетание (ID_Поставщика, StringNr), Order by ID_Поставщика, StringNr и смело выводи его в грид отдельной колонкой. Опять таки с возможностью сортировки на клиенте.
Но нумеровать строки в НД это просто бессмысленно.
-
> Она пятая у мариванны. А у Елены Николаевны в это же самое
> время она вторая.
с чего бы это? одна база, один запрос, обе сделали обновление отображаемых данных в гриде. Так не может быть?
> И типа других ключевых естественных ключей в гриде просто
> нету.
Я уже говорил про узкий кругозор. Это исправляется, но исключительно при собственном желании и действии, сидя за компьютером дома и отвечая глупыми советами на ДМ кругозор не сильно расширяется.
> У вопрошающего дурной софт.
Свободен. Крестик справа сверху
-
с чего бы это? одна база, один запрос, обе сделали обновление отображаемых данных в гриде. Так не может быть?
Так может быть.
А еще так может и не быть.
Могу рассказать возможные варианты.
-
> Это твоё посмотри пятую строку у поставщика РогаИКопыта
> выглядит бредовым
ты хоть глупости не говори, пожалуйста.
я отвечал медвежонку на конкретную фразу, глянь что я отквотил
> Но нумеровать строки в НД это просто бессмысленно.
я без понятия кто подумал что я говорю про нумерацию в БД
-
> Так может быть.
> А еще так может и не быть.
Вот тебе и ответ. Значит однозначного твоего:
> Им надо объяснить, что они не хотят видеть эту цифирьку,
>
> > а им просто это кажется, что они хотят ее видеть.
быть не должно.
-
Маривана видит пять строк рогов и копыт.
Нинапетровна тоже видит пять строк рогов и копыт.
Но мариванна кликнула по заголовку цены и во второй строке у нее документ на сто рублей.
А нинапетровна никуда не кликала, и второй документ у нее на десять рублей.
мариванна вставила строку номер шесть, а нина петровна не обновила свой датасет и видит пять строк.
и так далее.
в общем дурь программирует дурь.
-
> Но мариванна кликнула по заголовку цены
ситуации когда кликать нельзя - не бывает?
будешь дальше спорить?
-
В общем как я вижу ситуацию глазами Пятачка:
- Данные на клиенте нельзя нумеровать. Потому что вы, тупые курицы (операторы), будите сортировать их и тогда нумерация не будет одинаковой и тогда вы не сможите друг другу сказать номер строки и однозначно идентифицировать объект. Разумеется вы, старые калоши, и не думаете применять нумерацию в своих личных целях (запример запомнив номер последней строки с которой работали), а не при общении друг с другом, используйте маркеры. И уж тем более вы никогда не сможите общаясь друг с другом сказать "отсортируй столбцы по цене", ведь это недосягаемое кун фу для вас. Вам никогда не понадобится одним взглядом окинув грид увидеть общее количество строк, а если понадобится, то я где нибудь отдельно прикручу эту цифру. Исходя из этого я констатирую - вам не нужна нумерация, абсолютно.
И вообще отстаньте, у меня из-за вас шоры виски натирают.
-
ситуации когда кликать нельзя - не бывает?
ну я же говорил, что тот софт дурной.
еще и кликать для сортировки нельзя.
-
> ну я же говорил, что тот софт дурной.
а я говорил про шоры.
на том и порешим
-
и тогда вы не сможите друг другу сказать номер строки и однозначно идентифицировать объект.
разумеется не смогут.
объекты идентифицируются их атрибутами, а не тем кто в каком порядке выстроился.
-
> я без понятия кто подумал что я говорю про нумерацию в БД
Так как нумерация в БД имеет вполне конкретный смысл.
А вот нумерация "строк" в наборе данных - нет.
> быть не должно.
Наоборот. Ты просто обязан объяснить заказчику, что он хочет получить и каковы будут последствия этого. если он настаивает и готов оплатить данную работу - ну тут да, любой каприз за ваши деньги. Но если ты сам, без его желания туда такое прикрутишь - это дурь.
Такое имеет смысл только в неизменяющихся (ну либо крайне редко изменяющихся) справочных таблицах. Но для этого есть масса других вариантов решения.
Пример из жизни: когда-то давно, лет 7 назад, я являлся разработчиком модуля "Бюро Пропусков" в рамках большой охранной системы. Как раз с такими МарьИваннами приходилось дело иметь.
Так вот, я во всех справочных таблицах заводил поле SortOrdedr, которое делал настраиваемым. Как раз для того, чтобы МарьИванна имела возможность получать наиболее часто используемые справочные данные в начале НД, а не искать их.
-
> А вот нумерация "строк" в наборе данных - нет.
абсолютно никогда? никогда нет смысла нумеровать строки в отображаемом гриде на экране?
-
никогда нет смысла нумеровать строки в отображаемом гриде на экране?
если бы он был, то гриды были бы именно такими bydesign
-
> и не думаете применять нумерацию в своих личных целях (запример
> запомнив номер последней строки с которой работали)
Вообще-то хорошим тоном будет сохранение значения ключевого поля в НД при выходе из программы. И, соответственно, Locate на него при старте.
> Вам никогда не понадобится одним взглядом окинув грид увидеть
> общее количество строк
Вообще-то хорошим тоном считается вывод общего количества записей в НД в статус-бар.
> И уж тем более вы никогда не сможите общаясь друг с другом
> сказать "отсортируй столбцы по цене", ведь это недосягаемое
> кун фу для вас
Быстрый поиск по столбцу ещё никто не отменял. А для того, чтобы "отсортируй столбцы по цене" мне надо:
1. В точности повторить именно ту сортировку и те фильтры, которые у соседки.
2. После отсчитать нужное количество строк
3. Посмотреть, чё там и как.
4. Снова восстановить все сортировки и фильтры, которые были у меня выставлены изначально.
Плохая эргономика, плохая программа.
-
> если бы он был, то гриды были бы именно такими bydesign
тебе нарисовать? сейчас 2011 год, если что
-
тебе нарисовать?
Нарисуй. Только не мне.
Ембаркадере нарисуй.
И уломай их включить это недоразумение как 3rd party компонент в XE3
-
> абсолютно никогда? никогда нет смысла нумеровать строки
> в отображаемом гриде на экране?
Почему в TDBGrid нет нумерации строк? Ведь это "так естественно"!
Почему в стандартной поставке компонентов нет TDBTreeView? Ведь это так естественно!
Почему ParamSwitch распознаёт только один символ, а не несколько? Ведь это так естественно!
-
> тебе нарисовать? сейчас 2011 год, если что
Никто не говорит, что этого сделать невозможно. Вполне возможно. Только будет это работать только в случае соблюдения массы нюансов. А во всех остальных - фиг.
-
> Вообще-то хорошим тоном будет сохранение значения ключевого
> поля в НД при выходе из программы.
Я не про выход. Вот сидит оператор, набивает строки, редактирует что то там. Остановилась на десятой строке, сделала передышку, сделала еще десять. "-На какйо строке МарьИванна? -На 37! -Медленно работаешь!"
>
> Вообще-то хорошим тоном считается вывод общего количества
> записей в НД в статус-бар.
вообще еще группировка бывает :)
например как тут
http://www.ssw.com.au/SSW/Standards/DeveloperGeneral/Images/janus_gridex_v3.gif
> А для того, чтобы "отсортируй столбцы по цене" мне надо:
>
> 1. В точности повторить именно ту сортировку и те фильтры,
> которые у соседки.
> 2. После отсчитать нужное количество строк
> 3. Посмотреть, чё там и как.
> 4. Снова восстановить все сортировки и фильтры, которые
> были у меня выставлены изначально.
вот я и говорю - зачем считать? щелкнул по столбцу и отмотал сразу ориентируясь на номера строк.
Я почему тему завел - каждый рабочий день общаюсь с операторами которые далеко не гуру, часто путают "диск Це" и "мои документы", но они умеют сортировать по столбцу, и даже умеют менять очередность столбцов перпетаскиванием (грид позволяет). Быстрый поиск - это как автокомплит в дельфи? А если там "ОООРогаИКопытаДомодедовскихАвиалиний" и различие в строках идет уже после этого заклинания? И строк штук 50-100?
-
-На какйо строке МарьИванна? -На 37!
Нет, он же просто невменяем.
мариванна набивает с листа.
и номер строки в вопросе - он на листе.
и на листе бумаги этот номер строки вполне логичен и понятен.
-
> [12] antonn © (07.12.11 20:46)
> Понятия не имеющие какой софт у вопрошающего
Этот софт обсуждается уже с месяц, так что понятие о нём есть у тех, кто читал ветки. Про нумерацию уже все сказали однозначно, кроме тебя.
-
> мариванна набивает с листа.
нет никакого листа
> Про нумерацию уже все сказали однозначно, кроме тебя.
да, много дурости наговорили
-
> вообще еще группировка бывает :)
> например как тут
"Тут" я вижу ProductID. Который никто не мешает выводить и сортировать по нему. Это не имеет к "нумерации записей в наборе данных" никакого отношения.
Правда никто не мешает удалить из таблицы Products запись с id=66, которая Louisiana Hot Spiced Okra. И будет у тебя сначала 65, а потом 67.
> А если там "ОООРогаИКопытаДомодедовскихАвиалиний" и различие
> в строках идет уже после этого заклинания? И строк штук
> 50-100?
А если у бабушки, то был бы дедушка. Всех хотелок предусмотреть просто НЕ-ВОЗ-МОЖ-НО. Один хочет вес мешков с бетоном видеть с точностью до килограмма. Другой - до микрограммов (это реальная претензия, без шуток). И если заказчик готов оплатить разработку такой вот нетривиальной дури - ради Б-га, везде строки будут нумероваться. Если же нет - тады ой.
-
Вот сидит оператор, набивает строки,
А!
я понял.
Мариванна набивает строки из головы.
К чему тогда относится вопрос: "мариванна, на какой строке остановилась?"
К какому источнику строк и номеру последней введенной строки вопрошает коллега мариванны?
-
> "Тут" я вижу ProductID.
я тебе привел пример группировки, а не ProductID
это когда щелкаешь плюсик и выкатывается подтаблица, кол-во строк в ней не такое как кол-во строк общее во всем гриде
> А если у бабушки, то был бы дедушка.
Вот теперь ты отлично понял к чему я клоню.
Я утвержадю что ситуации когда нумерация не будет лишней (что вовсе не обязательно что функции работы будут зависеть от нумерации), а Медвежонок упорно настаивает что нумерация не нужна. Вообще. Никогда.
Вот просто логически прикинуть - кто правее? Тот кто говорит что ситуация может быть, или кто говорит что она никогда не может быть?
> я понял.
ошибаешься
> К какому источнику строк и номеру последней введенной строки
> вопрошает коллега мариванны?
правильно звучит - "сколько?". Теперь вопрос для самых сообразительных - марьиванна их сосчитала (т.к. нумерации нет) или посмотрела на номер строки (если нумерация есть)?
-
правильно звучит - "сколько?".
стоп стоп стоп.
совсем недавно мариванна "набивала строки" и ей кричали: "мариванна, ты на какой строке остановилась?"
итак, еще раз:
что это за источник, с которого мариванна набивала строки?
я предположил, что она набивает с листа.
однако меня тут же одернули, и сказали, что "нет никакого листа"
-
> я предположил, что она набивает с листа.
о, уже прогресс, ты начинаешь учиться предполагать! это путь к исправлению, значит скоро ты научишься "предполагать" и другие ситуации в которых нумерация может быть полезна. А не видеть только то, что удобно видеть тебе.
Продолжим лечение: таки допустим что есть лист (если уж он тебе понравился, почему бы и нет?). Но без номеров строк, просто список. если ты предположил что есть лист, то я предположил что список на листе без нумерации. "Под линеечку" "набивает", вычеркивая карандашиком.
-
или посмотрела на номер строки (если нумерация есть)?
если нумерации (в гриде) нет, а мариванну спросили на какой строке она остановилась/сколько строк она ввела, то мариванна переводит взгляд с грида на источник строк, с которого она делала ввод.
на источнике у нее лежит линейка.
а слева в строке стоит порядковый номер последней введенной строки.
и вот таким незамысловатым способом мариванна оповещает внешний мир о номере последней введенной ею строки или о количестве введенных ею строк.
причем даже не глядя на грид, в котором может быть и есть нумерация строк, хотя ее там быть и не должно.
-
Продолжим лечение:
Ты лечилку для начала свою отрости.
-
допустим что есть лист (если уж он тебе понравился, почему бы и нет?). Но без номеров строк,
Чувствуется мозг настоящего мастера.
На бумаге у него нет номеров строк, зато в гриде у него нумерация.
-
antonn(C)у уже намекали про дыртаньяна и яйца однажды.. оно не понял...
-
> а слева в строке стоит порядковый номер последней введенной
> строки.
ага, утверждаешь там всегда есть нумерация...
лечение осложняется
> Ты лечилку для начала свою отрости.
а ты что думал - в сказку попал? Нет, это ДМ. Тут быстро добуквоедствуются, чем промышлял - то и получил.
-
до сих пор жмет
-
> На бумаге у него нет номеров строк, зато в гриде у него
> нумерация.
так сложно представить? что, еще и с фантазией проблема? :))
> antonn(C)у уже намекали про дыртаньяна и яйца однажды..
не помню, не затруднит найти тему?
-
ага, утверждаешь там всегда есть нумерация...
Я утверждаю, что на бумаге нумерация строк логична, понятна и должна присутствовать.
-
> Я утверждаю, что на бумаге нумерация строк логична, понятна
> и должна присутствовать.
все понятно
-
Ну если понятно, то действуй.
Забудь про нумерацию в гриде.
-
> Я утвержадю что ситуации когда нумерация не будет лишней
> (что вовсе не обязательно что функции работы будут зависеть
> от нумерации),
А, уже надоело.
Нумерация возможно не будет лишней только в полностью сформированных и не изменяемых данных.
Например - в отчёте (кстати, далеко не всегда. Часто нужны отчёты, где нет нумерации, а идёт время события).
Например - в никогда не изменяемой, не сортируемой и не фильтруемой справочной таблице.
Всё остальное - фигня какая-то. Не могу придумать ни одного реального примера, где это могло бы потребоваться и где это решалось бы действительно нумерацией записей в наборе данных.
-
> Нумерация возможно не будет лишней только в полностью сформированных
> и не изменяемых данных.
это я и пытаюсь ему донести.
-
это я и пытаюсь ему донести.
попытайся донести это пользователям, не используя грид.
донести отчетом с пронумерованными строками.
-
> это я и пытаюсь ему донести.
Это и без твоих донесений всем понятно.
-
Если не нравится отчет - используй другое средство визуализации строк (не грид).
-
Нумерация может быть полезна для восприятия табличных данных, так же как раскраска строк по условию.
Удивительно что медвежонок этого не понимает и упорно твердит что нумерация строк на клиенте не нужна никогда. Еще удивительней что с ним согласны вполне нормальные люди. Может просто писатели...
-
> Нумерация может быть полезна для восприятия табличных данных,
> так же как раскраска строк по условию.
Давай проще - реальный пример в студию.
-
Нумерация может быть полезна для восприятия табличных данных, так же как раскраска строк по условию.
Верно.
Но табличные данные не всегда обязаны жить в гридах.
И когда они живут в гидах, нумерация там нонсенс, если только это не сами физические поля.
-
и упорно твердит что нумерация строк на клиенте не нужна никогда.
Не тормози, приятель.
Не на клиенте, а в гриде, приятель, в гриде!
-
Хотя я кажется понимаю в чем дело: колхозный олдскул. Т.е. грид отдельно, а репорт отдельно. Сложно перестроится на юзерфрендли интерфейсы, трудно понять что хороший интерфейс может предоставлять информацию в таком виде, что не потребует от пользователя лишних действий (формирование отчета, например).
> Не тормози, приятель.
> Не на клиенте, а в гриде, приятель, в гриде!
будь проще; в гриде, в гриде. Это когда информация оторбажается в гриде. А гриды бывают разные, и, о боже", иногда они хранят информацию. А нумерацию можно выводить через аналог OnDrawItem(). Ну ты понял к чему я веду
> Давай проще - реальный пример в студию.
[12]
нумерация "на лету" позволяет оценить объем, кол-во строк (как вообще в целом, так и во время работы (строк 100, а остановился на 37-й)). Если строк много и есть скролл, а другие данные затруднительны для быстрой ориентации в массиве данных (название как в [34]), то маленький столбец с автонумерацией строк во вложенной таблице позволит быстрее ориентироваться.
-
трудно понять что хороший интерфейс может предоставлять информацию в таком виде, что не потребует от пользователя лишних действий (формирование отчета, например).
я склоняюсь к тому, что некий мозг впитал стереотип:
"если бд и запрос то значит и грид".
и этот моск просто не представляет как показать юзеру табличные данные не в гриде. тем более, что вроде бы эти юзера взалкали видеть номера строк.
а не представляет потому что не умеет.
-
> > Давай проще - реальный пример в студию.
Собственно дальше. Небольшая программка, в которой опять же вложенные таблицы, в них толи остатки на складе по поставкам конкретного поставщика (т.к. три вложенных получается), кол-во запрошенного, и прочее. Дали двоим задание пройтись по поставщику и сменить статусы поставок в некоторых условиях (открыть подтаблицу плюсиком, посмотреть остаток и объем поставки, закрыть если удовлетворено условие, ничего сложного, много кликать и иногда звонить по телефону). Один делает четные, второй нечетные.
-
> Медвежонок Пятачок © (07.12.11 22:53) [63]
не утруждай себя, отмотай в начало и посмотри на что я отвечал. А потом уже говори про "негриды"
-
Нумерация строк будет понятна и непротиворечива в мемо, в стринггриде.
В общем там, где к элементам коллекции можно обращаться по индексу.
дбгрид же - это визуальное воплощение датасета.
для датасетов порядковые номера строк - понятие абстрактное и негарантируемое.
именно поэтому там (в гриде) специально убрано понятие "номер строки на которой я строю"
и убрано неспроста.
но некоторые упорно жуют кактус и причмокивают.
-
Один делает четные, второй нечетные.
Ты вот так слишком-то откровенно не выдавай все тайны своего дизайна.
Лошарой же назовут, потом неоттереться будет.
-
датасет - это заклинание такое? одно на все случаи жизни?
-
> Ты вот так слишком-то откровенно не выдавай все тайны своего
> дизайна.
> Лошарой же назовут, потом неоттереться будет.
это не мой софт, столбцы не сортируются/фильтруются (нет необходимости), строки в пределах поставки не удаляются (закрывается весь протокол разом). В принципе номер строки в пределах поставки может служить идентификатором в общении операторов. Но речь про полезность нумерации
Но Медвежонок все еще пытается коряво телепатировать...
-
конечно нет.
но если нет датасета, то нет и дбгрида.
и нет необходимости нумеровать его.
-
В принципе номер строки в пределах поставки может служить идентификатором в общении операторов.
Может.
Если это физический номер документа.
Если не физический, то не может.
-
> конечно нет.
> но если нет датасета, то нет и дбгрида.
> и нет необходимости нумеровать его.
>
Еще раз для полного понимания: [12]. Если что - пользователю пофиг что там рисует табличку, хоть дбгрид, хоть стринггрид, хоть пейнтбокс с canvas.rectangle(). Посмотри что я отквотил, речь про возможную полезность нумерации строк в таблице для пользователя. Ему все равно что ты не умеешь достать данные из БД ничем кроме датасета. И речь не об этом.
-
речь про возможную полезность нумерации строк в таблице для пользователя. Ему все равно что ты не умеешь достать данные из БД ничем кроме датасета. И речь не об этом.
Ну если об этом, то сам перечитывай ветку.
Тебе раз сто уже сказали, что забудь про грид, если твои юзера общаются меж собой оперируя номерами документов в котором они выстроились в таблице.
-
> Может.
> Если это физический номер документа.
> Если не физический, то не может.
Может, если в любых представлениях данных номера остаются постоянными. Здесь в пределах поставщика операторы могут использовать нумерацию для определения конкретной поставки. А могут называть шестизначный номер документа описывающий поставку. А могут сказать 1-3 значный номер поставки который соответсвует номеру в подтаблице и до которого не сложно добраться ориентируясь на столбец нумерации.
-
если в любых представлениях данных номера остаются постоянными.
тогда у тебя просто не хватает одного целочисленного поля в таблице.
-
> тогда у тебя просто не хватает одного целочисленного поля
> в таблице.
оно там не нужно
-
оно там не нужно
Тогда тебе нужен новый мозг.
-
> [62] antonn © (07.12.11 22:50)
> Т.е. грид отдельно, а репорт отдельно.
Конечно отдельно. Репорт распечатали и он храниться в таком виде, может ещё и подписи с печатью поставили, вот в нём будет нумерация полезна, а иногда обязательна по нормативам. В гриде с этими же данными можно что угодно сделать.
-
> Тогда тебе нужен новый мозг.
Слишком откровенно, толсто
-
> оно там не нужно
Оно там нужно. Если я получил выборку на клиент, потом Вася удалил 10 записей в БД, а потом Петя также получил выборку на клиент, то у Пети "10-я строка" совершенно необязательно совпадает с моей "10-й строкой".
Именно для этого и вводится целочисленное поле. "ID", "№ документа", "какая-то" - неважно. Важно, что она, эта хрень, уникальна для каждой записи в таблице.
А твоё [11] - это очень маленький частный случай. Который у меня по прежнему вызывает сильные сомнения в юзабилити.
Засим - закончу, реально надоело.
-
> Оно там нужно. Если я получил выборку на клиент, потом Вася
> удалил 10 записей в БД,
Слушай, если уж обсуждаем конкретно мою ситуацию, то почему не читать все сообщение внимательно?
-
Слишком откровенно, толсто
А ты думал ты тут в сказку попадешь?
Это ДМ, здесь .... как там у тебя выше было сказано?
-
Конкретно для твоей ситуации:
либо не нужен грид.
либо не нужна нумерация.
-
> как там у тебя выше было сказано?
Здесь троллей быстро затролливают в ответ, в результате они начинают всем советовать сменить мозг. Как-то так
-
так смени пока не поздно.
а то уже вон полночь скоро по москве.
-
ну не плакай, иди убеждай пользователей что им нумерация ни в жисть не нужна
-
Так их нет уже. Убеждать некого.
Один ты остался.
нетакойкаквсе.
-
ок
-
> antonn © (07.12.11 23:25) [81]
> Слушай, если уж обсуждаем конкретно мою ситуацию, то почему не читать все сообщение внимательно?
Слушай, если уж обсуждаем конкретно твою ситуацию, то как ты гарантируешь порядок строк в выборке? У тебя что за СУБД?
-
> antonn © (07.12.11 23:27) [84]
Хм, я непонял, ты когда вопрошающему помогать начнёшь?
Хватит превращать ветку в потрепаться.
-
> Плохиш © (08.12.11 01:40) [90]
>
>
> > antonn © (07.12.11 23:27) [84]
>
> Хм, я непонял, ты когда вопрошающему помогать начнёшь?
> Хватит превращать ветку в потрепаться.
>
На ДМ antonn не любит помогать. На ДМ он любит "возражать". Имхо это его личная идиосинкразия на наш форум.
-
> Alex_C (07.12.11 16:06)
> Так правильнопронумеровать записи в таблице при выводе пользователю?
> Делал на 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
Только что кинул на форму ADOTable, открыл в ней таблицу "Товары" из базы данных "Борей", создал вычисляемое поле:
procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
begin
ADOTable1RCNO.AsInteger := ADOTable1.RecNo;
end;
Всё нормально нумеруется.
У вас какой-то непраильный ADO+Access.
-
>
> Слушай, если уж обсуждаем конкретно твою ситуацию, то как
> ты гарантируешь порядок строк в выборке?
в запросе order by, по полю id записи. сейчас оно уже шестизначное
-
-
А вот в тойже sql server management studio и нумерация набора есть и в статусе кол-во присутствует, и никто еще не умер. :)
-
> и никто еще не умер. :)
вообще, есть множество бесполезных вещей от которых никто еще не умер... смысла им это не добавило.
-
> antonn © (07.12.11 23:25) [81]
> Слушай, если уж обсуждаем конкретно мою ситуацию, то почему
> не читать все сообщение внимательно?
Вообще то мы обсуждает не твое, а Alex_C
-
> знайка (08.12.11 03:09) [95]
У тебя пользатели работают через SSMS и вручную делают запросы?
Это между прочим отладочное средство, а не инструмент для работы
-
Кроме того я проверил, цифры при разном where и order by, так что пользы нет, только вред. Иногда до мордобоя, когда баба Валя ругается с бабой Машей, мол нет в 10 записи никаких 100 рублей.
Даже Эксель не дает гарантии одинаковости показаний, если сделать нумерацию руками.
-
> sniknik (08.12.2011 08:10:36) [96]
В отладчике еще и состояние стека показывает, а что скажут пользователи,
если это сделать в рабочей программы.
-
Номер записи сама по себе вещь бессмысленная. Согласен.
Номер записи любят юзеры. Согласен.
DS правильно говорит,
ADOTable1RCNO.AsInteger := ADOTable1.RecNo;
что стоит такое сделать?
ничего,
если тольео НД не вернулся недофетченным.
Но ADO фетчит все, если не извратится специально. (кстати, если кто знает как - прошу. тот же DS и АП сказал о сильной сложности. Склонен верить. Сам тоже не нашел сколь либо ясного способа.)
MS вообще ввел для MSSQL
ROW_NUMBER()OVER(order by Column)
нумерацию в запросе прямо сделать можно
-
> нумерацию в запросе прямо сделать можно
Дык никто не говорит, что способов нет. Их дофига.
-
> OW (08.12.2011 10:13:41) [101]
А ничего, что это будет не номер строки, а номер записи.
-
> а что скажут пользователи, если это сделать в рабочей программы.
знаю не по наслышке... вставлял как-то по настоянию начальства/менеджеров с подачи клиента...
они просто на словах не понимают... не развито абстрактное мышление?
а говорят - "нет нам нужно по порядку, но чтобы у всех совпадало, независимо от фильтров, сортировок, и того, что у Марь Иванны вообще другая база открыта. и нет нам не пойдет ваш "автокримент"/"ключь" там "дырки" и сортировка порядок сбивает. .... ну вы же программист, придумайте что нибудь.".
ну мы и "придумали"... убрать нафиг. после ~10го клиента за день, давшего этому порядку какой то свой собственный смысл, а после звонившего в цто, т.к. не соответствует, и "исправьте ошибку"...
p.s. как сделать человеку приятно? - сделать плохо, а после вернуть как было. :)
-
> вставлял как-то
номер, а не стек... :)
-
> У тебя пользатели работают через SSMS и вручную делают запросы?
> Это между прочим отладочное средство, а не инструмент для
> работы
Это мы пользователи, и работаем с этим, и надо сказать очень полезная штука. Если вам не полезно то нам наоборот. Например просматривая логи, быстро могу сказать сколько за последнее времы прошло таких а сколько сяких апдейтов или тому подобное. Собственно каждому своё, ктото запросы специальные напишет, а мы вот и одним справляемся.
-
Где вы там нумерацию нашли???
rows affected - есть, но в этом ничего сверхъестественного нет. А нумерация? Где?
-
> Anatoly Podgoretsky © (08.12.11 10:48) [103]
ничего
в PL/sql тоже возвращает пронумеровано.
сортируешь по-другому - все вразноброд становится. Нормально.
На клиенте сортировка.
А хочешь опять пронумеровано - запрос новый делай.
-
> Anatoly Podgoretsky © (08.12.11 09:47) [97]
>
>
> > antonn © (07.12.11 23:25) [81]
>
> > Слушай, если уж обсуждаем конкретно мою ситуацию, то почему
> > не читать все сообщение внимательно?
>
> Вообще то мы обсуждает не твое, а Alex_C
мы начали обсуждать именно мое в том что ты отквотил, а ты опоздал к обсуждению :)
-
> Ega23 (08.12.2011 11:40:47) [107]
Это в open нет, а в своих запросах есть, но это для отладки, как и само
средство.
-
> Это в open нет, а в своих запросах есть, но это для отладки,
> как и само средство.
Я про SSMS
-
А, я кажется понял. Это если Results in grid выставить, да?
Я просто ещё с QA по привычке Results in text использую, оно там по-умолчанию было.
-
-
> Это если Results in grid выставить, да?
ну да,
in text копировать плохо по столбцам
-
> Ega23 (08.12.2011 14:12:51) [111]
Так и я про SSMS.
Встань на таблице и в котексном меню выбери Open (SQL 2005)
Затем запрос Select * from ...
-
-
> Затем запрос Select * from ...
ДА у меня по-умолчанию в текст идёт. Не могу я на этот грид смотреть, не привык.
Ещё от Query Analyzer для 7.1. ноги растут
-
-
> МС так же "балуется" "совершенно бесполезной" нумерацией
Скажи, только честно, ты хоть раз этим пользовался?
-
> antonn (08.12.2011 14:46:56) [116]
Это тоже отладочный инструмент, только старый
-
> OW (08.12.2011 14:55:58) [118]
Так и мы про тоже, что номер изменится, вот и конфликт с коллегой, на другом
конце провода.
-
> Скажи, только честно, ........ хоть раз этим пользовался?
Уже нет :)
А раньше да, удобно было, когда оценивал, влезет ли в Excel сразу все это
или запрос переписывать с группировкой.
с 2007 проблема 65536 строк отпала. (а надо, чтобы потом не объяснять откуда сложились цифры, выгружаешь ВСЕ и делаешь pivot/ Юзеры тыкают в нем на число, оно "расшифровывается". Они тащатся от этого :) )
-
> Скажи, только честно, ты хоть раз этим пользовался?
да. мне как-то нагляднее такие цифры идущие подряд видеть, чем personid
-
> с 2007 проблема 65536 строк отпала. (а надо, чтобы потом
> не объяснять откуда сложились цифры, выгружаешь ВСЕ и делаешь
> pivot/ Юзеры тыкают в нем на число, оно "расшифровывается".
> Они тащатся от этого :) )
Много ли пользователем нравится.
-
> А раньше да, удобно было, когда оценивал, влезет ли в Excel
> сразу все это
тебе сейчас скажут что для этого тебе не нужна нумерация, а хватит числа в статусбаре. И хоть убейся, но никак не объяснишь им что лично тебе удобнее так, не убедишь
-
> antonn (08.12.2011 15:04:05) [125]
Если одну/другую тетку уволят за неправильно поданые числа, так они тебе
будут умолять, чтобы убрал.
-
> тебе сейчас скажут что для этого тебе не нужна нумерация,
> а хватит числа в статусбаре. И хоть убейся, но никак не
> объяснишь им что лично тебе удобнее так, не убедишь
Тебе уже 50 раз сказали, что если заказчик готов это дело оплатить - пуркуа бы и не па? Сильно сложного в этом ничего нет.
Может хватит уже говноспорить?
-
> Не могу я на этот грид смотреть, не привык.
А по мне так наоборот, особенно, когда надо скопировать, он позволяет в хаотичном порядке это делать (типа из 1 строки 1 колонку из 2 вторую из 3 пятую и т.д.), очень удобно.
Ну и нумерация тут очень кстати. :)
А вот когда текстом, типа отчета, то нет нумерации, ну все как не у людей.
-
> Если одну/другую тетку уволят за неправильно поданые числа,
> так они тебе
> будут умолять, чтобы убрал.
Анатолий, я очень рекомендую прочитать тему с начала.
И в особенности выделенные курсивом слова в моих сообщениях, там где сказано про то, что нумерация не обязана быть в основе выполняемых работ. А то я смотрю мы вчера поговорили, а ты сегодня опять начинаешь развивать тему о чем-то своем, выдавая это "свое" за "мое". Вредит в конкретном месте нумерация - ну не ставь, в чем проблема?
-
> Ega23 © (08.12.11 15:08) [127]
>
>
> > тебе сейчас скажут что для этого тебе не нужна нумерация,
>
> > а хватит числа в статусбаре. И хоть убейся, но никак
> не
> > объяснишь им что лично тебе удобнее так, не убедишь
>
>
> Тебе уже 50 раз сказали, что если заказчик готов это дело оплатить
Мне вчера 50 раз пытались убедить что нумерация не нужна, никогда, т.к. видите ли в ней нет толку. это ты говоришь "почему бы и нет", а я спорил вчера с тем кто говорил "никогда нет". Вот и Анатолий завел ту же шарманку
-
А можно тему в "прочее" перенести? :)
-
> antonn © (08.12.11 15:04) [125]
Ну, да удобнее
а мне вполне бы и хватило общего числа.
Но так еще видно на чем остановится выборка если откинуть XX незначащих.
Например по суммам сортируем, примерно на 20% вниз опускаемся, там суммы по 10 руб. Значащие.
C десяток pgup - там уже 1-2 руб. Пойдет.
делаем having sum(summ) > 2 - и все влезает. А маленькие суммы особой роли на годовой отчет и так не дают.
Вот тогда и нужна была нумерация. Мне.
А сейчас все влезает :)
>> Anatoly Podgoretsky © (08.12.11 15:04) [124]
я юзеров люблю. Иначе они будут любить меня :)
Позвонят и будут по каждому числу спрашивать. А откуда у нас 14 продаж за день по 1000 руб в деревне Ивановка, где денег ни у кого?! И ищи, разъясняй..
А так - ткнут в число, там вывалится, что во столько то люди с московскими паспортами взяли услугу безлимит на месяц, номера чеков такие-то, оператор такая то..
-
> Вот тогда и нужна была нумерация. Мне.
Ну вот примерно по таким моментам и мне она бывает полезна, о чем я и пытался донести до Медвежонка.
И юзерам, опять же, бывает полезна, даже если разработчику это не очевидно.
-
Какой же он непроходимо тупой.
Медвежонок никогда и нигде не говорил, что нумерация бесполезна сама по себе и не нужна.
Медвежонок всегда говорил, что нумерация не нужна в дбгриде.
-
-
> дбгрид
> думай
>
Это не DBGrid.
Думай.
-
И чего?
Во дворе на соседской ржавой шестерке стоит спойлер-скамейка.
Что дальше?
-
> Это не DBGrid.
А речи про TDBGrid небыло, был некий "дбгрид". Это первое.
Второе - ты не сможешь сделать такой же GUI с TDBGrid?
Побуквоедствуем?
-
> Медвежонок Пятачок © (08.12.11 15:34) [137]
перечитай две последних страницы этой темы, за номерами 6 и 7. Там люди говорят что им бывает полезна нумерация, в табличных представлениях которые могут быть представлены и дбгридом в частности.
-
В табличном вообще - да.
В дбгриде- нет
-
бухам своим будешь объяснять что это не таблица, это дбгрид, поэтому нумерации они не дождутся.
-
Я с юзерами не разговариваю языком программиста.
Я с юзерами разговариваю на их языке.
И если выясняется что им нужна нумерация я не использую дбгрид.
-
> [141] antonn © (08.12.11 15:40)
> бухам своим будешь объяснять что это не таблица, это дбгрид,
> поэтому нумерации они не дождутся.
Разницу они сами увидят, здесь объясняли в чём она, и я объяснял раза 2 уже.
-
Пациент патологически не хочет понимать, что неспроста из дбгрида убрана нумерация. Не хочет понять почему в датасете нельзя переместиться на строку по ее "номеру".
-
> неспроста из дбгрида убрана нумерация
По той же самой причине ползунок скроллбара в стандартном дбгриде при прокрутке не елозит так же ожидаемо для Мариванны, как он елозит, скажем, в листвью или в стрингриде.
-
> дбгрид
> думай
к примеру
в "моем" есть сортировка при тычке в заголовок, тут есть? в "моем" есть фильтры накладываемые на результат, с откатом на исходную отмене, без пере - запросов, тут есть? с "моим" работают пулу грамотные операторы с идеологией "что вижу то пою, и ни о чем не думаю", тут ... впрочем тут погорячился.
думай
-
> По той же самой причине ползунок скроллбара в стандартном дбгриде при прокрутке не елозит так же ожидаемо для Мариванны, как он елозит, скажем, в листвью или в стрингриде.
кстати, а вот это я правил... чтобы клик на стрелку внизу скрола дбгрида передвигал на 1 позицию как везде, а не листал странично...
-
> sniknik © (08.12.11 16:21) [147]
> вот это я правил
Ну так это же ты правил)
А бестолковые пацаны из Борланда до этого ж не дотумкали))
-
> кстати, а вот это я правил...
ну зачем же ты это правил, пускай все было бы "как есть". Ну чтобы потом сказать - я не программист, я компонентокидатель. Что-то править и дорабатывать? Да ну зачем это делать, лучше потом говорить "а в стандартном нету". И тыкать в компонет пальчиком, а вторым тыкать в сторонний софт и говрить - а тут не дбгрид. Вносить изменения? Это для программистов же, а мы просто юзаем то что нам даст борланд.
-
> antonn (08.12.2011 15:09:09) [129]
Ты что, ведь более 130 сообщений, легче только удалить. А я на это не пойду
пока.
-
Так а чем мешает дбгрид нумерации?
Есть к примеру xml, загрузили его в клиентдатасет, подключили дбгрид, почему нумерация сразу же не пройдет?
-
> antonn (08.12.2011 15:12:11) [131]
Я могу предложить только тебе перебраться в "Прочее", остальные могут
остаться здесь и продолжать обсуждать.
-
> OW (08.12.2011 15:18:12) [132]
Я только за, я за тебя
-
> Второе - ты не сможешь сделать такой же GUI с TDBGrid?
Конкретно в случае MSSQL QA - да. В общем - нет.
-
> Медвежонок Пятачок (08.12.2011 15:41:22) [142]
Эксель наше все
-
> Так а чем мешает дбгрид нумерации?
> Есть к примеру xml, загрузили его в клиентдатасет, подключили
> дбгрид, почему нумерация сразу же не пройдет?
Тем, что далеко не всегда данные зафетчены до конца.
По этой же причине нету стандартного TDBTreeView, хотя казалось бы...
-
> Ну так это же ты правил)
> А бестолковые пацаны из Борланда до этого ж не дотумкали))
ну, я бы тоже не стал, если бы "Мариванны" это как-то по своему понимали, и из-за разночтений появлялись бы проблемы...
т.е. нет знака равенства между "интефейсное поведение" и "непонятные данные, в которых для каждого свой смысл". для меня во всяком случае. хотя, если хотят, могут выгрузить в excel там нумерация есть.
-
> > неспроста из дбгрида убрана нумерация
> По той же самой причине ползунок скроллбара в стандартном дбгриде при прокрутке
> не елозит так же ожидаемо для Мариванны, как он елозит, скажем, в листвью или в стрингриде.
А вот это уже техношовинизм и инженерный кретинизм.
Спископодобные структуры ДОЛЖНЫ вести себя одинаково и предсказуемо для пользователя.
А то что там в дельфях с прошлого века шизофреничные компоненты -- так это половые трудности исключительно упоротых дельфистов.
-
> [158] DiamondShark © (08.12.11 20:56)
> в стандартном дбгриде при прокрутке
> > не елозит так же ожидаемо для Мариванны, как он елозит,
> скажем, в листвью или в стрингриде.
>
> А вот это уже техношовинизм и инженерный кретинизм.
В EhLib будет как везде - менять размер, положение и прочее стандартное поведение, если Dataset может показать количество записей и номер текущей.
-
> Ega23 © (08.12.11 16:48) [156]
> Тем, что далеко не всегда данные зафетчены до конца.
А с какой стати это проблема?
Что мешает их зафетчить?
Что мешает пронумеровать только то, что зафетчено?
По этой же причине нету стандартного TDBTreeView, хотя казалось бы...
По какой "этой же"? По причине недофетча? Почему эта причина помешала только борланду, а, например, девэкспресу не помешала?
TDBTreeView нет по другой причине -- борланды не смогли сформулировать простой и ясный юз-кейс для подобного компонента.
И правильно сделали, все XXXDBTreeView, которые я видел -- абсолютно не юзабельны без хорошего такого рашпиля и такой матери.
-
> Inovet © (08.12.11 21:07) [159]
> В EhLib будет как везде - менять размер, положение и прочее
> стандартное поведение, если Dataset может показать количество
> записей и номер текущей.
Да я какбэ в курсе. В девэкспрессе так будет даже без последнего условия (ценой внутреннего кэша).
Сама вот эта отсылка: "А у нас Dataset такой" -- это кошмар-кошмар-кошмар.
-
> Спископодобные структуры ДОЛЖНЫ вести себя одинаково и предсказуемо
> для пользователя.
Тогда нужно вводить 2 абстрактных датасета. Один, фетчайший (или фетчеший?) записи до конца, и "какой-то другой", получающий записи по частям. Тогда проблемы никакой нет.
Если взять TClientDataSet в связке с DBGrid, то скролл будет ровно на том месте, где должен быть. Вроде. Или это TRxDBGrid? Проверять лень.
-
> По какой "этой же"? По причине недофетча? Почему эта причина
> помешала только борланду, а, например, девэкспресу не помешала?
потому что нет никакой гарантии, что НД будет отсортирован по ParentID.
Если такая гарантия есть, либо мы используем DataSet, который фетчит записи до конца - TDBGrid вполне возможен и даже православен.
Но на том уровне абстракции, который принят за основу в Борланд, это нереально.
-
ТС уже на попкорн смотреть не может.
-
> ТС уже на попкорн смотреть не может.
1. antonn' а забанить, ибо он вносит смуту.
2. Никакая нумерация в визуальном компоненте показывающем набор данных не нужна, ибо она неестественна и ведёт к путанице.
3. DiamondShark'а тоже забанить.
:)
-
> Ega23 © (08.12.11 23:48) [162]
> Тогда нужно вводить 2 абстрактных датасета.
Бинго!
Только не датасета. Первая вещь -- это курсор, причём, от него не требуется функциональности больше, чем FORWARD_ONLY READ_ONLY, вторая -- локальный кэш с произвольным доступом.
Локальный кэш, разумеется, получается независимым от источника данных. Так же, у него отсутствует вся эта навигационная лабуда, вроде "текущей записи", MoveNext, MoveFirst, MoveLast, MoveToGlanulaPerRectum и т.п.
Навигация выносится в третий компонент, который имеет смысл только при биндинге с навигационным юзер-интерфейсом.
Особую пикантность ситуации придаёт тот факт, что конкретные датасеты таки выфетчивают и кэшируют данные.
БДЕ -- кэширует. По крайней мере, при работе через SQL Links, как оно там с ДБФ работет -- не знаю, может шаромыжится по файлу.
АДО -- кэширует.
Кто там у нас ещё есть?
Борландовские компоненты доступа к данным -- шиза полная.
> Ega23 © (08.12.11 23:52) [163]
> потому что нет никакой гарантии, что НД будет отсортирован по ParentID.
Нет никакой необходимости сортировать НД по ParentID.
> Если такая гарантия есть, либо мы используем DataSet, который
> фетчит записи до конца - TDBGrid вполне возможен и даже
> православен.
Хоспиддя...
Ну какая разница, до чего фетчит DataSet? Это, вообще-то, деталь реализации, которая от пользователя абстрактного датасета скрыта.
Есть гарантия, что датасет вернёт запись, если она существует (это сродни утверждению, что вода -- мокрая). Этого достаточно.
> Но на том уровне абстракции, который принят за основу в
> Борланд, это нереально.
У борланда принята не абстракция, а шиза.
В одном компоненте густо замешаны разные вещи:
1. Общение с источником данных, которому, если по абстракции, должно быть плевать на способ дальнейшего использования данных
2. Локальный кэш, которому должно быть плевать на детали реализации источника данных
3. Навигация, на которую плевать первым двум, и которой плевать на детали реализации первых двух.
Вся эта мутотень затеяна с единственной сомнительной целью: упихать в одну "абстракцию" работу с локально-файловыми и клиент-серверными БД.
-
> Борландовские компоненты доступа к данным -- шиза полная.
Предложи лучшие компоненты.
-
> Германн © (09.12.11 01:22) [167
ADO.NET
-
> Нет никакой необходимости сортировать НД по ParentID.
Нет никакой гарантии, что ParentNode придёт раньше, чем его Child.
> У борланда принята не абстракция, а шиза.
С альтернативами как-то не айс.
Я что-то вообще разочаровался во всех этих датасетах. Особенно, пристально поизучав DB.pas
-
> Предложи лучшие компоненты.
ORM
-
> Ega23 (08.12.2011 23:48:42) [162]
Для того что бы курсор был там где надо, требуется клиентский курсор и
полная загрузка
С TClientDataSet это гарантировано, поскольку in memory
С АДО по вышеуказаным правилам, с БДЕ не возможно, поскольку клиентского
курсора нет, поэтому только три положения.
-
> DiamondShark (09.12.2011 01:37:48) [168]
Меня там смущает их терминология, то что называется датасет, на самом деле
схема данных и запросы
То что называется datasource у нас датасет
-
> Меня там смущает их терминология
а меня еще смущает "урезаность" этого эталона, вроде позже делали на основе ADO, а ничего не добавили, только убрали все схемы работы кроме одного. (оставленная ближе всего, в ADO/Delphi похожа на "спарку" TClientDataSet + TADODataSet через провайдер данных, т.е. серверный курсор у ADODanaSet-а чтобы быстро открывалось, и докачка в локальный клиентский чтобы "обеспечить номера записей"(в данном случае, в общем конечно объяснение будет другое))
ситуация похожа, ИМХО, на внедрение коробок автоматов в авто... насильно, то что профи с ним не смогут добиться того, что им нужно, выжать всех возможностей, не выиграют гонку... пофигу. и вообще все знающие "идут лесом", пользуйтесь как все, и не выделывайтесь.
-
Все это конечно ребят я прочитал. И конечно вроде как нашел как нумерацию в самом запросе делать - тормозит ужасно если делать так, как в инете пишут. Теперь конкретно - есть условие. ОБЯЗАТЕЛЬНОЕ. Установлено правилами - нумерация должна быть. Долго советовался с народом - все сказали - нам плевать на правила "программирования" - МЫ пользуем твою программу. Нам нумерация нужна. Согласен с ними на 100% - если пишешь программу для пользователей подход типа "я тут накодил, а вы тупые, не понимаете что так правильно" - не катит.
> Только что кинул на форму ADOTable, открыл в ней таблицу
> "Товары" из базы данных "Борей", создал вычисляемое поле:
>
>
> procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
>
> begin
> ADOTable1RCNO.AsInteger := ADOTable1.RecNo;
> end;
>
> Всё нормально нумеруется.
>
> У вас какой-то непраильный ADO+Access.
Без обид - давай все же друг друга не будем считать идиотами. И если моей программой пользуются во многих странах мира - то значит я знаю, что пишу.
Сделай пару сотен записей в базу, а потом по PageUp/PageDown по ним поперемещайся.
-
> [174] Alex_C (11.12.11 22:43)
> есть условие. ОБЯЗАТЕЛЬНОЕ. Установлено правилами - нумерация должна быть.
По правилам в логе должна быть, я думаю так, а это значит добавить поле Integer в таблицу лог и всё - и это правильное решение. О чём тут и дискутировали. Иначе я не понимаю зачем.
-
> И если моей программой пользуются во многих странах мира
> - то значит я знаю, что пишу.
Пока что в "Начинающих" спрашиваешь ты.
Если ты такой крутой, то не ходи в "Начинающие", а иди лесом. По слогам: "ле-сом", первая буква "Х".
-
> Alex_C
в DbGridEh есть нумерация. И работает.
Только она не нужна как уже правильно сказали.
-
> [174] Alex_C (11.12.11 22:43)
> Долго советовался с народом - все сказали - нам плевать
> на правила "программирования" - МЫ пользуем твою программу.
> Нам нумерация нужна.
Они явно о другой нумерации говорили. Это не по "правилам программирования", а из простой логики не нужна такая нумерация, другая нужна.
-
> есть условие. ОБЯЗАТЕЛЬНОЕ. Установлено правилами - нумерация должна быть.
это не объяснение для "технической интеллигенции"... это скорее "красная тряпка", чтобы "по бодаться". ты мне так менеджеров этим напоминаешь. не доходит что ли? никаких "так надо", "юзер так хочет" , "установлено правилами" и т.д. не принимается в логическом споре... только логические аргументы.
особенно когда у народа ОПЫТ, и он часто плачевный, т.как стоит сделать "именно так" так сразу "что за фигня? мы имели в виду не это". или это, но тогда до первой проблемы, и "а ты что не мог настоять? мы то не местные, мы не понимаем...", а то что сделать чуть ли не с пистолетом "уговаривали", сразу "забывается".
давай так, понятнее наверное будет. - ты мне разумную причину "нужности", я тебе решение. пойдет?
p.s. разговоры между тетей Клавой и Марь Иванновной где они радостно друг другу кричат номера "не канают", без документа, с его внутренней нумерацией, а просто в гриде, 0 целых хрен десятых, что номер совпадет, т.что звиняйте, не разумно.
p.p.s. для международного уровня слабоват... простейшая задача, в одну строку, и так долго "решаешь".
-
> Пока что в "Начинающих" спрашиваешь ты.
Тут отвечают лучше и меньше хамят.
> в DbGridEh есть нумерация. И работает.
Использую версию 3... какую-то еще бесплатную. Там есть, не в курсе? Но если что - и в новых посмотрю.
> "установлено правилами" и т.д. не принимается в логическом
> споре...
Установлено правилами любительской радиосвязи о ведении аппаратного журнала. Установлено еще для бумажного образца. Но от сюда и все ноги растут.
Теперь реально: наверное у нас радиолюбителей из тех, давних времен пошла привычка, что у связи длжен быть номер. И ОСНОВНАЯ сортировка - по времени.
> p.p.s. для международного уровня слабоват... простейшая
> задача, в одну строку, и так долго "решаешь".
А я не боюсь показаться новичком и спросить совета - для души ведь делаю, не для денег - вот по этому моя програ и лучше других))
-
> [180] Alex_C (17.12.11 00:35)
> давних времен пошла привычка, что у связи длжен быть номер
Повторяю в непоню какой раз - для номера, как неотъемлемово атрибута связи надо завести поле в таблице, кроме того оно может бфть первичным индексом, а не извращяться с нумерацией на клиенте.
-
> Повторяю в непоню какой раз
Напишу еще раз - неужели в OnCalcField - данную проблему нельзя решить? Ведь значения в ней только для первой и последней записи неверно выводятся.
-
> как неотъемлемово атрибута связи
а если не неотъемлемого? навроде того как иногда раскрашивают строки в зависимости от данных в них хранящихся :)
-
> [183] Андреевич (17.12.11 09:42)
> > как неотъемлемово атрибута связи
>
> а если не неотъемлемого?
Автор сказал - неотемлемый, только другими словами. Оно так и есть - в аппаратном журнале каждый сеанс связи должна быть под своим порядковым номером. Как там насчёт пропусков номеров - не знаю, вообще-то не должно быть.
-
Ну это id сеанса, вполне допускаю (со своей колокольни) что достаточно автоинкрементного поля и возможность удаления записей. А если там будет вывод с группировкой (по дню, например), то сделать в каждом дне свою нумерацию порядковую для наглядности - почему нет? Мне кажется он это имел ввиду
-
> [185] Андреевич (17.12.11 10:27)
> Мне кажется он это имел ввиду
Нет, речь о номере в журнале.
> [180] Alex_C (17.12.11 00:35)
> что у связи длжен быть номер. И ОСНОВНАЯ сортировка - по времени.
Вчера уже не стал спрашивать. Номер вообще-то логически лишний, раз есть время, но это номер документа, значит надо его хранить в базе. А вопрос такой: из отцитированоого можно заключить, что порядок по номеру может не совпадать с порядком по времени?
-
> из отцитированоого можно заключить, что порядок по номеру
> может не совпадать с порядком по времени?
Это очень обсуждаемая тема у радиолюбителей. Раньше каждая проведенная радиосвязь в журнале на бумаге должна была иметь номер. Как правильно было сказано - как номер документа. Конечно, раньше же нельзя было на бумаге пересортировывать связи)))
Теперь есть 2 варианта:
1. Динамимеский номер - зависит от сортировки. Пересортируем - номер уже другой. Но он есть
2. Статический номер - типа id связи - но тут есть много проблем, допустим как быть при слиянии нескольких логов, если человек из разных мест работает.
В результате вроде как пришли к мнению пусть будет 1.
Ну да ладно. Я вчера вообще эту котонку убрал и номер связи вывожу на статусбаре. Но даже в этом случае проблема то осталась: при вводе новой связи ее номер высвечивается как -1. Чтоб номер стал правильным, ножно скроллинг сделать.
-
> [187] Alex_C (17.12.11 11:35)
> 1. Динамимеский номер - зависит от сортировки. Пересортируем
> - номер уже другой. Но он есть
> 2. Статический номер - типа id связи - но тут есть много
> проблем, допустим как быть при слиянии нескольких логов,
> если человек из разных мест работает.
> В результате вроде как пришли к мнению пусть будет 1.
Значит чётких требований нет, есть только привычка юзеров видеть такую колонку с номером, а то что в ней цена на дрова, так лишь бы что было. Убрал - и правильно, они поймут, что им это не надо.
-
> есть только привычка юзеров видеть такую колонку с номером,
> а то что в ней цена на дрова
вот я и говорю - лишь для наглядности
-
> Теперь реально: наверное у нас радиолюбителей из тех, давних
> времен пошла привычка, что у связи длжен быть номер.
Не прошло и недели, как ты сподобился поделиться деталями предметной области.
Реально твой номер -- это атрибут данных. Он должен быть реальным полем.
-
> Но даже в этом случае проблема то осталась: при вводе новой
> связи ее номер высвечивается как -1.
Как высвечиваешь -- так и высвечивается.
Не нравится "-1" высвечивай "Новая запись".
> Чтоб номер стал правильным, ножно скроллинг сделать.
Врёшь. Чтоб номер стал правильным, нужно Post сделать, что, вообще говоря, логично: невведённая запись ещё не существует.
-
> в журнале на бумаге должна была иметь номер.
в бумажном журнале номер имеет смысл, дам нумерация от затирания записей в начале не меняется...
если делается аналог бумажного журнала, то и действия должны быть аналогичными, ну типа удаление не удаляет и ставит признак, номер ставится при создании записи и не меняется, дополнения "задним числом", не допускаются, номер это часть данных - документа, а не считаемая "на лету" фикция.
> Как правильно было сказано - как номер документа.
номер документа <> номер записи.
> и номер связи вывожу на статусбаре.
фигню ты выводишь, а не номер связи.
p.s. почему спрашивая про одно имеют ввиду совсем другое? а на попытки выяснить, что, начинается всякая хрень, но не раскрытие темы.
-
> 2. Статический номер - типа id связи - но тут есть много
> проблем, допустим как быть при слиянии нескольких логов,
> если человек из разных мест работает.
может тогда уникальным полем сделать guid? разумеется нет смысла его отображать, но и в разных базах его не будет (теоретически), выборка по дате и все такое..
-
> Inovet (17.12.2011 10:20:04) [184]
Именно поле НомерСвязи, а не нумерация в гриде. Может быть автоинкриментное
поле. Пропусков в принципе быть не может - записи не удаляются никогда, а
заносятся только по окончанию связи, то есть только завершенные связи, а
завершенной связь считается после обменая информацией о сигнале (RST).
-
> Андреевич (17.12.2011 10:27:05) [185]
Возможности удаления записи не должно быть!
-
> Inovet (17.12.2011 10:44:06) [186]
Да можен не совпадать, но обычно совпадает если номер и время вводятся
автоматически.
-
> Alex_C (17.12.2011 11:35:07) [187]
Никакой проблемы, поскольку это даже не номер связи, а номер документа, при
вставке данных из другого лога, получает новый номер, на единицу больший чем
ранее присвоеный.
-
> Inovet (17.12.2011 11:58:08) [188]
А ее эту колонку не требуется видеть, это идентификационный номер, первичный
ключ IDENTITY, поскольку будучи выведеным, он никакой полезной информации не
несет.
-
> sniknik (17.12.2011 18:52:12) [192]
Удаление равносильно подделке журнала.
-
> Возможности удаления записи не должно быть!
это ТС сказал?
-
> [194] Anatoly Podgoretsky © (17.12.11 19:27)
> записи не удаляются никогда, а
> заносятся только по окончанию связи, то есть только завершенные
> связи, а
> завершенной связь считается после обменая информацией о
> сигнале (RST).
Мы на бумажках писали быстро-быстро, иногда много связей подряд получается по минуте или меньше каждая, потом уже в журнал аккуратно переписываешь.
-
> Inovet (17.12.2011 20:05:21) [201]
Это на бумаге, а с компьтером не так, сообственно и грид особно не нужен. Но
может использоваться в статистических функциях.
Нужна карточка корреспондета. Вводишь позывной вываливается карточка, где
один из контролов это грид, что бы видеть все записи с данным
корреспондентом.
-
> Врёшь. Чтоб номер стал правильным, нужно Post сделать
Вру. Не спорю - вчера ночью когда правил - не туда вписал определение номера связи - нужно было конечно на афтерпост вставлять)))
> Не прошло и недели, как ты сподобился поделиться деталями
> предметной области.
Да не, я предметную область уже недели как 3 обрисовал))))
Ладно, пока вопрос о номере оставлю открытым - сделаю чтоб в статус баре высвечивался номер. В принципе вопрос для меня сейчас не столь принципиальный.
Меня сейчас больше интересует вопрос поднятый мной в теме
ADO+DataSet+DBGrid - быстро обновить данные.
Сейчас еще раз просмотрел аналогичную моей программу - там какая то просто финаминальная скорость обновления данных в табличном виде. По ходу применен какой то не стандартный компонент. Пока не пойму какой.
-
есть предложение забить на Аксесс, провайдеры данных, и взяв sqlite через api-шный интерфейс самому рисовать табличные данные, где надо и когда надо, и на чем надо :)
-
> [204] antonn © (17.12.11 22:59)
> sqlite
для полноты и на sqlite забить. Всё самому написать.
-
зря стебешься
-
> Пока не пойму какой.
мозг?
> есть предложение забить на Аксесс, провайдеры данных, и взяв sqlite
есть предложение начать учится хоть чему нибудь. а не перебирать компоненты, бросая все с чем что-то не получается. все в итоге бросишь, ничего не останется.
-
> есть предложение начать учится хоть чему нибудь.
ой, а "безкомпонентные методы доступа" вообще так много новых перспектив для изучения открывают :)
-
> есть предложение начать учится хоть чему нибудь.
зря ты так. у меня в программе кроме БД и DBGridEh никаких сторонних компонентов нет - все свое, включая работу с инет, ком-порт и т.п. Я вообще ПРИНЦИПИАЛЬНО против сторонних компонентов. Только то, что действительно необходимо - БД самому все же так вот не напишешь. Хотя и было желание)))
-
есть, нет сторонних компонент, какая разница? если у тебя прямо таки уверенность. что скорости добиваются не знанием работы/методов/особенностей технологии/алгоритмов/т.д. а сторонними компонентами
> там какая то просто финаминальная скорость обновления данных в табличном виде. По ходу применен какой то не стандартный компонент. Пока не пойму какой.
а у второго "ученого" прям сразу "рецепт", а взять и поменять, типа не получилось как надо "пройдясь по верхушкам", без углубленного изучения, а пофигу, возьми другой. а не получится с ним (а точно не получится с таким подходом), тогда третий. и нормально нечего знать не будешь.
-
капетан?
-
я за цыфирки.
-
> там какая то просто финаминальная скорость обновления данных
> в табличном виде. По ходу применен какой то не стандартный
> компонент. Пока не пойму какой.
Ты уверен, что там TDBGrid? :)
-
> Ты уверен, что там TDBGrid?
Проанализировав екхешник, пришел к выводу что там DBGridEH - но не уверен.
> как надо "пройдясь по верхушкам", без углубленного изучения
Ну вообще то я здесь как раз и занимаюсь: углубленным изучением предметной области.
И вообще - злой ты какой то)))
-
мое мнение - порядковый номер вещь полезная.
я думаю, что большая часть пользователей сморит на данные в каком-то одном порядке. например, в хронологическом.
в этом случае - номер, как ориентир вещь полезная.