Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.05.2011, 16:09
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию а как сделать фильтр дат?

а как фильтр дат так чтоб отображался только определенный месяц день или год?
Код:
begin
if combobox1.itemIndex=0 then
  begin
  убрать строки
  end;
end;

Последний раз редактировалось TotKtoNado, 25.05.2011 в 16:14.
Ответить с цитированием
  #2  
Старый 25.05.2011, 16:12
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

убрать строки откуда? из базы, Memo, Грида? конкретнее вопрос задавайте.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 25.05.2011, 16:12
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Assistant
убрать строки откуда?
в stringgride
Ответить с цитированием
  #4  
Старый 25.05.2011, 16:14
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

грид хоть покажите, а то не понятно какой там формат дат и вообще, какой вид грида.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #5  
Старый 25.05.2011, 16:18
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Assistant
грид хоть покажите, а то не понятно какой там формат дат и вообще, какой вид грида.
http://s53.radikal.ru/i142/1105/b1/b3656a6205e2.png
Ответить с цитированием
  #6  
Старый 25.05.2011, 16:36
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Код:
procedure FilteredStringGrid(Grid: TStringGrid; filter: string; num_col_for_find: integer);
var
  i,n: integer;
  cnt: integer;
begin
  cnt := 0;

  for i := 0 to Grid.RowCount-1 do
  begin
    if (Grid.Cells[num_col_for_find,i] = filter) then
    begin
      for n := 0 to Grid.ColCount-1 do
        Grid.Cells[n,cnt] := Grid.Cells[n,i];
        
      Inc(cnt);
    end;
  end;

  Grid.RowCount := cnt;
end;

использовать так (для вашего случая):
Код:
FilteredStringGrid(StringGrid1,ComboBox1.Text,0);

P.S. только второй раз фильтрации уже не будет, ибо в гриде уже не будет данных, я бы посоветовал использовать второй, невидимый грид, или перед каждой фильтрацией заного загружать данные.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя

Последний раз редактировалось Assistant, 25.05.2011 в 16:38.
Ответить с цитированием
  #7  
Старый 25.05.2011, 16:37
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

в рантайме добавлять в конец sql того, из чего выборка попадает в грид

Код:
  and (CAST(T_Date AS DATE) >= :Date1)
  and (CAST(T_DATE AS DATE) <= :Date2)


переменная номер раз-Date1 начало выбранного месяца в формате дд:мм:гггг
переменная номер два-Date2 конец выбранного месяца в нем же)
Ответить с цитированием
  #8  
Старый 25.05.2011, 16:41
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от anonymous
в рантайме добавлять в конец sql того, из чего выборка попадает в грид
угу, ещё есть прекрасная штука как BETWEEN на SQL, но кто сказал что он использует SQL? )))

P.S.: попросили грид отфильтровать, я отфильтровал, никто не говорил про SQL. Надо сразу вопрос нормально ставить. Мне как-то влом вытягивать всё из человека.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #9  
Старый 25.05.2011, 16:49
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Assistant
Код:
procedure FilteredStringGrid(Grid: TStringGrid; filter: string; num_col_for_find: integer);
var
  i,n: integer;
  cnt: integer;
begin
  cnt := 0;

  for i := 0 to Grid.RowCount-1 do
  begin
    if (Grid.Cells[num_col_for_find,i] = filter) then
    begin
      for n := 0 to Grid.ColCount-1 do
        Grid.Cells[n,cnt] := Grid.Cells[n,i];
        
      Inc(cnt);
    end;
  end;

  Grid.RowCount := cnt;
end;

использовать так (для вашего случая):
Код:
FilteredStringGrid(StringGrid1,ComboBox1.Text,0);

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

тогда нужно скопировать ячейки из одного грида в другой грид и потом все равно убирать ненужные
Ответить с цитированием
  #10  
Старый 25.05.2011, 16:50
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

Это да.
Никогда не пробовал прямо в гриде менять.
Интересно сохранится ли после таких приколов возможность правильно выбирать запи сь по клику на грид.


Цитата:
Сообщение от TotKtoNado
тогда нужно скопировать ячейки из одного грида в другой грид и потом все равно убирать ненужные

а почему бы просто перед каждой фильтрацией не делать гриду вкл\выкл? Датасет же такой фильтр не трогает.

Последний раз редактировалось anonymous, 25.05.2011 в 16:54.
Ответить с цитированием
  #11  
Старый 25.05.2011, 17:03
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от anonymous
Интересно сохранится ли после таких приколов возможность правильно выбирать запи сь по клику на грид.
а почему нет? ты не путай TDBGrid и TStringGrid. в данном случае у нас TStringGrid.

моя функция все найденное переносит в начало грида, второй грид не нужен, и убирает внизу оставшиеся строки, что бы отображалось только то, что нашлось.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #12  
Старый 25.05.2011, 17:08
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Assistant
а почему нет? ты не путай TDBGrid и TStringGrid. в данном случае у нас TStringGrid.

моя функция все найденное переносит в начало грида, второй грид не нужен, и убирает внизу оставшиеся строки, что бы отображалось только то, что нашлось.
но ты же сам сказал
Цитата:
P.S. только второй раз фильтрации уже не будет, ибо в гриде уже не будет данных, я бы посоветовал использовать второй, невидимый грид, или перед каждой фильтрацией заного загружать данные.
Ответить с цитированием
  #13  
Старый 25.05.2011, 17:13
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

ну да, просто перед следующей фильтрацией нужно будет загрузить заново данные в StringGrid и отфильтровать, в чем проблема-то? а откуда данные вообще берешь?
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #14  
Старый 25.05.2011, 17:15
Аватар для anonymous
anonymous anonymous вне форума
Новичок
 
Регистрация: 19.01.2011
Сообщения: 61
Версия Delphi: Delphi2009 v.12
Репутация: 12
По умолчанию

Действительно стринггрид^^Это все проясняет)

Тогда да, перед каждой фильтрацией полностью его чистить и заполнять с начала.
Ответить с цитированием
  #15  
Старый 25.05.2011, 17:20
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Assistant
ну да, просто перед следующей фильтрацией нужно будет загрузить заново данные в StringGrid и отфильтровать, в чем проблема-то? а откуда данные вообще берешь?
но тогда зачем вобще тогда делать эти невидимые стринггриды?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter