Конференция "Начинающим" » Пронумеровать записи [Access]
 
  • Alex_C (07.12.11 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
  • Медвежонок Пятачок © (07.12.11 16:08) [1]
    а смысл этих нумераций в чем?

    например пятая запись. это что значит?
  • Anatoly Podgoretsky © (07.12.11 16:15) [2]
    > Alex_C  (07.12.2011 16:06:00)  [0]

    Загадочная фраза "ADO+Access работало"
  • Inovet © (07.12.11 17:07) [3]
    Поряуовый номер бывает нужен в отчётах, средствами генератора отчётов и делается. В интерфейсе он не нужен и бессмыслен - новая выборка с новыми исловиями и сортировкой изменит и номер. Если номер имеет смысл, например это номер записи в журнале, то и хранить его надо в базе.
  • Inovet © (07.12.11 17:10) [4]
    Да, пронимеровать записи в выборке возможно в запросе, но сильно тормозно будет, поскольку специальных средств для этого нет, потому что это не нужно.
  • Alex_C (07.12.11 17:16) [5]

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


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


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


    Да я поле то уберу не проблема. Но я в шоке))) Вроде такая простая задача))
  • Alex_C (07.12.11 17:17) [6]
    Да кстати -благодаря форуму переделал практически свою программу))) Круто получилось))) Еще раз спасибо ВСЕМ!!!!
  • Медвежонок Пятачок © (07.12.11 17:27) [7]
    Но пользователи хотят идеть Цыферку.  

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

    А если они все же хотят ее видеть, то вероятно они смотрят на неправильное представление данных, которое ты им ошибочно дал.
    Ты им дал грид, а они хотят смотреть на таблицу в отчете.
  • Anatoly Podgoretsky © (07.12.11 17:36) [8]

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

    В генераторах отчетов это делается средствами генератора.
  • Anatoly Podgoretsky © (07.12.11 17:37) [9]
    > Alex_C  (07.12.2011 17:16:05)  [5]

    Которая не нужна в базах. Скажу страшное - ее нет даже в Эксель.
    Это очень вредная вещь.
  • Inovet © (07.12.11 17:37) [10]
    > [8] Anatoly Podgoretsky ©   (07.12.11 17:36)
    > > Inovet ©   (07.12.11 17:07) [3]
    >
    > В генераторах отчетов это делается средствами генератора.

    Это что за фраза?
  • Ega23 © (07.12.11 19:11) [11]

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

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

    Так вот. Колода - это таблица в СУБД, твои 10 карт - это записи, которые тебе вернул запрос. Сортировка по мастям и по возрастанию-убыванию, это то, что клиент в заголовках грида тыкает. Оставшиеся карты после сдачи - это тот фильтр, который клиент на выборку накладывает.
    Посему - задача не имеет никакого практического смысла.
    Только в одном случае: данные на клиенте никогда не сортируются и никак не фильтруются.
  • antonn © (07.12.11 20:46) [12]

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

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

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

    И типа других ключевых естественных ключей в гриде просто нету.
    Все документы рогов и копыт имеют одну дату, одну сумму, одно количество и вообще всё одно имеют.
    Но программист спешит на помощь и бабушкам и нумерует строки.
  • Медвежонок Пятачок © (07.12.11 21:00) [14]
    Понятия не имеющие какой софт у вопрошающего

    У вопрошающего дурной софт.
    Если теткам нужны номера строк, они должны получить не грид, а отчет.
  • Ega23 © (07.12.11 21:02) [15]

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


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

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

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


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

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


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

    Свободен. Крестик справа сверху
  • Медвежонок Пятачок © (07.12.11 21:05) [17]
    с чего бы это? одна база, один запрос, обе сделали обновление отображаемых данных в гриде. Так не может быть?

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

    Могу рассказать возможные варианты.
  • antonn © (07.12.11 21:05) [18]

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

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


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

    я без понятия кто подумал что я говорю про нумерацию в БД
  • antonn © (07.12.11 21:06) [19]

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

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

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

    быть не должно.
 
Конференция "Начинающим" » Пронумеровать записи [Access]
Есть новые Нет новых   [120436   +117][b:0.001][p:0.001]