Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка в EhLib, глючит 
:(
    Опции темы
Akella
  Дата 12.9.2005, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



вот снимок экрана, обратите внимание на "Сумка Варшава", наименование "влезло" не туды, этот глюк проявляется при использовании в рус. и англ. символов в полях. И с названием "Сумка 3310" тоже нелады.
Использую ADO+MSSQL, локалную сортировку средствами EhLib,

может проблемы из-за того, что набор данных локально отвильтрован, т.е. через событие OnFilterRecord. smile
Добавлено @ 11:18
а в начале буквы "Ш" и "Ю" "влезли" раньше "м", как в досовской кодировке, по идее должно быть так:
М
м
Н
н
а получается так:
М
Н
О
...
м
н
о
...


Это сообщение отредактировал(а) dsergey - 12.9.2005, 11:16

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  Sorting.JPG 39,27 Kb
PM MAIL   Вверх
Alex
Дата 12.9.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Если у тебя действительна включена локальная сортировка, то EhLib здесь совершенно ни при чем, т.к., он просто присваивает значение свойству Sort твоего дата сета

Код

procedure SortDataInADODataSet(Grid: TCustomDBGridEh; DataSet: TCustomADODataSet);
var
  s: String;
  i: Integer;
begin
  s := '';
  for i := 0 to Grid.SortMarkedColumns.Count - 1 do
  begin
    s := s + Grid.SortMarkedColumns[i].FieldName;
    if Grid.SortMarkedColumns[i].Title.SortMarker = smUpEh
      then s := s + ' DESC, '
      else s := s + ', ';
  end;
  DataSet.Sort := Copy(s, 1, Length(s) - 2);
end;

....

procedure TADOCommandTextDatasetFeaturesEh.ApplySorting(Sender: TObject;
  DataSet: TDataSet; IsReopen: Boolean);
begin
  if Sender is TCustomDBGridEh then
    if TCustomDBGridEh(Sender).SortLocal then
      SortDataInADODataSet(TCustomDBGridEh(Sender), TCustomADODataSet(DataSet))
    else
      inherited ApplySorting(Sender, DataSet, IsReopen);
end;




--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Alex
Дата 12.9.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Akella
Дата 13.9.2005, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



относительно ссылки:
- да, поле отсортировано средствами MSSQL (OrderBy).
PM MAIL   Вверх
Петрович
Дата 13.9.2005, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



А какой collation у этого поля?
Есть - ли на сервере индекс по этому полю?


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Akella
Дата 13.9.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



это хранимка
Добавлено @ 09:59
Код

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO



ALTER     procedure pr_orders_detail_search_cash
    @goods_name        varchar(1000)    = Null
  , @goods_marking    varchar(300)    = Null
  , @producer_name    varchar(300)    = Null
  , @material_name    varchar(300)    = Null
  , @TradeMark_Name    varchar(300)    = Null
  , @BarCode        varchar(50)    = Null
  , @ClassID        int        = Null
  , @TypeID        int        = Null
  , @Trade_Mark_id    int        = Null
  , @Specified_id    int        = Null
  , @Series_id        int        = Null
  , @producer_id    int        = Null
  , @material_id    int        = Null
  , @size_id        int        = Null
  , @color_mark_id    int        = Null
  , @color_id        int        = Null
  , @good_id        int        = Null
  , @goods_detail_id    int        = Null

as
/*
  Производит поиск товара на складе для добавления в заказ розницы
  Автор:         Церковный А.А.
  Дата создания: 13/07/2005
*/
declare
    @store_id        int

select @store_id = ActiveStore
from vwCurrentStore (nolock)

SELECT DISTINCT
    GD.goods_detail_id
  , GD.goods_id
  ,  G.ID_CLASS
  ,  G.ID_TYPE
  ,  G.NAME_GOODS
  ,  IsNull(G.Series_id, 0) as Series_id
  ,  IsNull(G.Specified_id, 0) as Specified_id
  , GD.goods_marking
  , GD.gd_producer_id
  , TM.TradeMark_Name
  , GD.producer_id
  , GD.producer_name
  , GD.gd_material_id
  , GD.material_id
  , GD.material_name
  , GD.gd_size_id
  , GD.size_id
  , GD.size_name
  , GD.group_id
  , GD.group_name
  , GD.gd_color_mark_id
  , GD.color_mark_id 
  , GD.color_mark_name
  , SH.color_id
  , gcol.color_name
  , GM.BAR_CODE
  , GM.BAR_CODE_EXTERNAL
  , IsNull(Round(GP.PriceBase*(1+GP.TAX_NDS), 2), 0) as PriceBase

FROM dbo.storehouse AS SH (nolock)
LEFT JOIN dbo.vw_goods_colors gcol (nolock)
  ON (SH.color_id = gcol.color_id)
LEFT JOIN dbo.vw_goods_detail_full_balu AS GD (nolock)
  ON (SH.goods_detail_id = GD.goods_detail_id)
LEFT JOIN dbo.vw_goods_measure_full_bs AS GM (nolock)
  ON (SH.goods_detail_id = GM.ID_GOODS_DETAIL)
LEFT JOIN dbo.vw_goods AS G (nolock)
  ON (GD.goods_id = G.ID_GOODS)
LEFT JOIN dbo.goods_Trade_Mark AS TM (nolock)
  ON (G.Trade_Mark_id = TM.TradeMark_ID)
LEFT JOIN dbo.vw_goods_params AS GP (nolock)
  ON (SH.goods_detail_id = GP.ID_GOODS_DETAIL)

WHERE SH.amount > 0 AND SH.store_id = @store_id
  AND (@ClassID         IS NULL OR (@ClassID         IS NOT NULL AND @ClassID         =  G.ID_CLASS        ))
  AND (@TypeID          IS NULL OR (@TypeID          IS NOT NULL AND @TypeID          =  G.ID_TYPE         ))
  AND (@good_id         IS NULL OR (@good_id         IS NOT NULL AND @good_id         = GD.goods_id        ))
  AND (@goods_detail_id IS NULL OR (@goods_detail_id IS NOT NULL AND @goods_detail_id = GD.goods_detail_id ))
  AND (@Trade_Mark_id   IS NULL OR (@Trade_Mark_id   IS NOT NULL AND @Trade_Mark_id   =  G.Trade_Mark_id   ))
  AND (@Specified_id    IS NULL OR (@Specified_id    IS NOT NULL AND @Specified_id    =  G.Specified_id    ))
  AND (@Series_id       IS NULL OR (@Series_id       IS NOT NULL AND @Series_id       =  G.Series_id       ))
  AND (@producer_id     IS NULL OR (@producer_id     IS NOT NULL AND @producer_id     = GD.producer_id     ))
  AND (@material_id     IS NULL OR (@material_id     IS NOT NULL AND @material_id     = GD.material_id     ))
  AND (@size_id         IS NULL OR (@size_id         IS NOT NULL AND @size_id         = GD.size_id         ))
  AND (@color_mark_id   IS NULL OR (@color_mark_id   IS NOT NULL AND @color_mark_id   = GD.gd_color_mark_id))
  AND (@color_id        IS NULL OR (@color_id        IS NOT NULL AND @color_id        = SH.color_id        ))

  AND (@goods_name      IS NULL OR (@goods_name      IS NOT NULL AND G.NAME_GOODS      LIKE @goods_name    ))
  AND (@TradeMark_Name  IS NULL OR (@TradeMark_Name  IS NOT NULL AND TM.TradeMark_Name LIKE @TradeMark_Name))
  AND (@goods_marking   IS NULL OR (@goods_marking   IS NOT NULL AND GD.goods_marking  LIKE @goods_marking ))
  AND (@producer_name   IS NULL OR (@producer_name   IS NOT NULL AND GD.producer_name  LIKE @producer_name ))
  AND (@material_name   IS NULL OR (@material_name   IS NOT NULL AND GD.material_name  LIKE @material_name ))

  AND (@BarCode         IS NULL OR (@BarCode         IS NOT NULL AND (GM.BAR_CODE = @BarCode OR GM.BAR_CODE_EXTERNAL = @BarCode)))


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO



Добавлено @ 10:06
поле NAME_GOODS
PM MAIL   Вверх
Akella
Дата 13.9.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



vw_Goods
Код

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

ALTER           view vw_goods
as

select 
    g.ID_KEY        as ID_KEY
  , g.ID_GOODS        as ID_GOODS
  , g.ID_CLASS        as ID_CLASS
  , g.ID_TYPE        as ID_TYPE
  , g.NAME_GOODS    as NAME_GOODS
  , g.CREATION_DATE    as CREATION_DATE
  , g.AMOUNT_RATE    as AMOUNT_RATE
  , g.Trade_Mark_id    as Trade_Mark_id
  , g.Series_id        as Series_id
  , gSp.Specified_id    as Specified_id
  , g.Sort_Values    as Sort_Values
  from dbo.goods g (nolock)
    left join dbo.goods_Series gSe (nolock)
      on gSe.Series_ID = g.Series_ID
    left join dbo.goods_Specified gSp (nolock)
      on gSe.Specified_id = gSp.Specified_id
  where g.DELETED = 0

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO



Добавлено @ 10:10
Goods

Код

CREATE TABLE [goods] (
    [ID_KEY] [int] IDENTITY (1, 1) NOT NULL ,
    [ID_GOODS] [int] NOT NULL ,
    [ID_CLASS] [int] NULL ,
    [ID_TYPE] [int] NULL ,
    [NAME_GOODS] [varchar] (255) COLLATE Compatibility_106_422_30001 NULL ,
    [DELETED] [int] NULL CONSTRAINT [DF_goods_DELETED] DEFAULT (0),
    [CREATION_DATE] [datetime] NULL CONSTRAINT [DF_goods_CREATION_DATE] DEFAULT (getdate()),
    [AMOUNT_RATE] [int] NOT NULL CONSTRAINT [DF_goods_AMOUNT_RATE] DEFAULT (1),
    [Trade_Mark_id] [int] NULL ,
    [Series_id] [int] NULL ,
    [Sort_Values] [varchar] (300) COLLATE Compatibility_106_422_30001 NULL ,
    CONSTRAINT [PK_GOODS] PRIMARY KEY  CLUSTERED 
    (
        [ID_GOODS]
    ) WITH  FILLFACTOR = 90  ON [PRIMARY] ,
    CONSTRAINT [fk_goods_goods_classes] FOREIGN KEY 
    (
        [ID_CLASS]
    ) REFERENCES [goods_classes] (
        [class_id]
    )
) ON [PRIMARY]
GO

Добавлено @ 10:13
странный collate

Compatibility_106_422_30001
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.