Конференция "Базы" » Сортировка [D7, ADO]
 
  • Odil (25.01.15 17:48) [0]
    Всем привет. Такая вот проблемка вышла:
    База на ACCESS. Есть основная таблица со всякими полями, одно из них поле "ФИО" - числовое, т.к. данные (сами фамилии) берутся с другой таблицы, например (Фамилии), где связуется по ключевому полю "key1". Программа работает нормально, всё сортируется, но сортируется не по алфавиту, хотя фамилии с первыми одинаковыми буквами стоят рядом. Сам вопрос таков - как сортировать по алфавиту такие поля, т.е. связанные по ключевым полям с другой таблицы?
    Буду благодарен за подробный ответ.
  • junglecat © (25.01.15 18:07) [1]
    > всё сортируется, но сортируется не по алфавиту

    по какому полю сортируется?
  • sniknik © (25.01.15 18:36) [2]
    > берутся с другой таблицы
    как берутся? присоединение в запросе, на клиенте, подстановочное поле...
    в запросе без ORDER BY порядок записей не определен.

    > Буду благодарен за подробный ответ.
    требуется подробный вопрос.
  • Odil (25.01.15 19:53) [3]
    Есть две таблицы BaseTable и FIOTable.
    В таблице BaseTable поле "FIO"-числовое.
    В таблице FIOTable поля "key1"-счётчик, "Фамилия"-текстовый.
    Сортировка сейчас прописана так:
     DataModule1.BaseTable.IndexFieldNames:='FIO';  (где поле 'FIO' - числовое).
    В Dbgrid1 дополнительное поле 'FIO1' через
    LookUpDataset=FIOTable
    LookUpKeyFields=key1
    LookUpResultFields=Фамилия
    При сортировке фамилии отображаются не по алфавиту, например:
    Иванов А.
    Иванов Б.
    Алёшин К.
    Петров И.
    Петров И.
    Если фамилия одинаковое, то они стоят вместе, но необходимо сделать и по алфавиту от "А" до "Я".
    Естественно, если бы поле 'FIO' было текстовое и там прописывались бы непосредственно фамилии, то сортировка бы работала как полагается, но данные берутся с другой таблицы. Вот тут-то и загвоздка как мне отсортировать по алфавиту?
  • Smile © (25.01.15 20:17) [4]
    Куда (похоже что какой то грид) и чем (если запрос, то приведи его) выводишь результат?
  • Smile © (25.01.15 20:17) [5]
    Куда (похоже что какой то грид) и чем (если запрос, то приведи его) выводишь результат?
  • Smile © (25.01.15 20:17) [6]
    Куда (похоже что какой то грид) и чем (если запрос, то приведи его) выводишь результат?
  • junglecat © (25.01.15 20:39) [7]
    select b.*, f.*
    from BaseTable as b join FIOTable as f on b.FIO = f.key1
    order by f.Фамилия
  • sniknik © (26.01.15 00:44) [8]
    > но данные берутся с другой таблицы. Вот тут-то и загвоздка как мне отсортировать по алфавиту?
    нет никакой загвоздки... сортировка делается с помощью order by... в запросе, в ADODataSet, или после запроса в Sort, или в IndexFieldNames в той таблице для которой нужна сортировка. а так если делать в одной, а ждать что вторая отсотритуется то конечно не получится.
 
Конференция "Базы" » Сортировка [D7, ADO]
Есть новые Нет новых   [118621   +7][b:0][p:0]