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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TcxDBCheckComboBox, определить индекс значения, TcxDBCheckComboBox, определить индекс 
V
    Опции темы
lotax
  Дата 24.11.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

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



Приветствую

Подскажите пожалуйста...

Использую TcxDBCheckComboBox (DevExpress) при этом свойство компонента Properties.EditValueFormat = cvfInteger

при отметке данных формируется сумма выделенных значений

Test1 - 1
Test2 - 2
Test3 - 4
Test4 - 8

то есть,  если выделены строки Test2 и Test4 значение поля будет 10

Вопрос
  Как извлечь в SQL из значения поля индекс выделенной записи..в запросе не могу сгруппировать...

Это сообщение отредактировал(а) lotax - 24.11.2009, 12:36
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Akella
  Дата 24.11.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(lotax @  24.11.2009,  10:03 Найти цитируемый пост)
Properties.EditValueFormat = cvfInteger

тип смени на другой, не используй cvfInteger


Цитата(lotax @  24.11.2009,  10:03 Найти цитируемый пост)
то есть,  если выделены строки Test1 и Test4 значение поля будет 10

может 9?


Цитата(lotax @  24.11.2009,  10:03 Найти цитируемый пост)
 Как извлечь в SQL из значения поля индекс выделенной записи..в запросе не могу сгруппировать...

Я не понял вопроса :(
PM MAIL   Вверх
lotax
Дата 24.11.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

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



Цитата(Akella @  24.11.2009,  11:03 Найти цитируемый пост)
тип смени на другой, не используй cvfInteger


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



Цитата(Akella @  24.11.2009,  11:03 Найти цитируемый пост)
может 9?


исправил  smile 



Цитата(Akella @  24.11.2009,  11:03 Найти цитируемый пост)
Я не понял вопроса :( 


На данный момент в базе, данное поле хранится в выше описанном варианте, потребовалось узнать 
общее количество каждого  значения.. группировка этого поля..но с этих чисел я не могу вытащить 
каждое значение индекс в списке, чтоб сгруппировать данные...
Если бы в свойстве было cvfCaptions, в запросе  хотя бы через Like в строке можно было найти..

...или в данном случае только, подсчитывать в коде, например через GetItemState

Это сообщение отредактировал(а) lotax - 24.11.2009, 12:52
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Akella
  Дата 24.11.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(lotax @  24.11.2009,  12:49 Найти цитируемый пост)
Да, но на данный момент в базе хранится в числовом варианте...

ну и что, при ftInteger нельзя использовать более 256 элементов. Или не более 64.

Добавлено через 6 минут и 33 секунды
Дельфи нет под рукой, как поставлю, дам пример, если никто не опередит. Или на сайте девок смотри примеры/справку пока что.
PM MAIL   Вверх
lotax
Дата 24.11.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

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



Цитата(Akella @  24.11.2009,  12:55 Найти цитируемый пост)
ну и что, при ftInteger нельзя использовать более 256 элементов. Или не более 64. 


Согласен
..но список у меня не превышает 64 строк, но в самих Item хранятся длинные значения, и при выборе всех значений
длина будет больше 256..при строковых значений

бд использую MySQL наверное придется ставить varchar 500

так же хотел услышать совет, если можно, какое значение лучше всего использовать в Properties.EditValueFormat

Это сообщение отредактировал(а) lotax - 24.11.2009, 13:13
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Akella
  Дата 24.11.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Посмотри этот пример.
http://community.devexpress.com/forums/p/62220/210741.aspx
PM MAIL   Вверх
lotax
Дата 24.11.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

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



Цитата(Akella @  24.11.2009,  13:37 Найти цитируемый пост)
Посмотри этот пример.
http://community.devexpress.com/forums/p/62220/210741.aspx 


Большое спасибо, буду разбираться

--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Akella
  Дата 24.11.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Я работаю, не с DB, а с обычным списком переключателей.

Заполняем
Код

procedure TfmMain.FeelCxCheckListBox(clb:TcxCheckListBox;fibds:TpFibDataSet);
begin
  clb.EditValueFormat := cvfCaptions;

  if not fibds.Active then
    fibds.Open
  else
    fibds.First;

  fibds.DisableControls;
  clb.Items.BeginUpdate;
  try
    While not fibds.Eof do begin
        with TcxCheckListBoxItem.Create(clb.Items) do begin
          Text    := fibds.FBN('NAME').AsString;
          Tag     := fibds.FBN('ID').AsInteger;
        end;

        fibds.Next;
    end;
  finally
    clb.Items.EndUpdate;
    fibds.EnableControls;
  end;
end;



Считываем:
Код

Function cxCheckStr(CLB:TcxCheckListBox):String;
Var
 i:integer;
begin
  result:='';
  if clb.Count <= 0 then exit;


  For i := 0 to clb.Count-1  do
    if CLB.Items[i].Checked then
      result := IntToStr(CLB.Items[i].Tag)+','+Result;

  if result <> '' then begin
    Delete(result, Length(result),1);
    result := '('+result+')';
  end;
end;

возвращается строка для запроса вида
where id_spav in (10,15,20,21,22,41) (курсиов то, что возвращает функция cxCheckStr)

В частности для FibPlus conditions
Код

//clbStreets - TcxCheckListBox
Conditions.AddCondition('Streets', 'ID_STREET in '+ cxCheckStr(clbStreets), True);


Добавлено через 1 минуту и 3 секунды
Код
EditValueFormat := cvfCaptions


Добавлено через 9 минут и 36 секунд
получается примерно такой запрос
Код
select t1.id, t1.name from teble1 t1 where t1.id_spav in (10,15,20,21,22,41)


можно на соединения (join) переделать
PM MAIL   Вверх
lotax
Дата 25.11.2009, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

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



Akella, большое Вам спасибо
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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