Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2009, 03:41   #1
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию Поиск-?

В DBgrid есть столбец, которого нету в самой БД MSAccess, нужно найти ячейки в этом столбце со значением 1. Фильтр применить не удается, т.к. фильтрация осуществляется по базе (а столбца, напомню, там нет).
Подскажите, можно ли найти какой нибудь другой выход? Как осуществить поиск по гриду?
И еще, 1 вопрос: столбец с именем № содержит некоторое количество одинаковых значений: 555 например. Предельно допустимое содержание числа 555 в базе - 10. Пользователь не знает какое количество значения 555 на данный момент. Нажимает кнопку, и если больше 10, грид выдает все строки содержащие 555. Вот как бы это реализовать?
Буду очень благодарен за помощь!!
Evgenii вне форума Ответить с цитированием
Старый 31.07.2009, 07:25   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
И еще, 1 вопрос: столбец с именем № содержит некоторое количество одинаковых значений: 555 например. Предельно допустимое содержание числа 555 в базе - 10. Пользователь не знает какое количество значения 555 на данный момент. Нажимает кнопку, и если больше 10, грид выдает все строки содержащие 555. Вот как бы это реализовать?
а что, фильтр уже отменили ?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 31.07.2009, 09:16   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если речь идет о выичсляемом поле то например так:
Код:
begin
 Table1.First;
 while (not Table1.Eof)and(Table1.FieldByName('qq').AsInteger<>3) do Table1.Next;
end;
Где qq - то самое поле.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2009, 13:58   #4
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

Цитата:
а что, фильтр уже отменили ?
Фильтр ищет по определенным параметрам. Именно значение 555 нельзя задать, т.к. оно может никогда и не достичь 10. Я его привел для примера. Тут может быть какое угодно значение. Вполне возможно что это будет какоенибудь число 585431. Мы же не знаем сколько повторений его в базе. Но если его больше 10, при нажатии на кнопку, программа должна сообщить что вот число 585431 выходит за пределы допустимого значения. Вот о чем речь
Evgenii вне форума Ответить с цитированием
Старый 31.07.2009, 14:50   #5
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

Stilet, а что дает этот код? Программа находит первую запись в столбце qq со значением 3 и все. Или я что то не понял?
Evgenii вне форума Ответить с цитированием
Старый 31.07.2009, 15:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Программа находит первую запись
Ну. Тебе же поиск нужен? Вот я и предлагаю в цикле проходить по записям.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2009, 15:38   #7
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

Поиск конечно нужен, но необходимо чтобы, как при фильтрации, в таблице оставались все записи со значением 3, а не первая найденная.
Evgenii вне форума Ответить с цитированием
Старый 31.07.2009, 16:18   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Evgenii
ХМ... я бы тогда рыл в сторону запросов с подзапросом... Не пробовал но думаю нужно копать в эту сторону.
Или так: Получили набор с вычисляемыми полями, а от него уже запрос с фильтрацией.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2009, 16:27   #9
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

В общем намного проще было бы использовать фильтрацию, а столбец сделать в БД. Но вот в чем проблема:
Код:
 procedure TForm5.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
...
               begin
  if Column.FieldName = '#' then
    if (Column.Field.Asstring > '0') then
    if adotable1.FieldByName('*').value > 0 then
    begin
      DBGrid1.Canvas.Brush.Color := clyellow;
           adotable1.Edit;
   adotable1.FieldByName('№').value := 12121 ;
    end;
При определенных параметрах, ячейке столбца № присваевается значение 12121. Это вызывает при нажатии кнопки с кодом adotable1.insert вставку пустых строк в dbgrid. Можно ли это исправить какнибудь проще чем создавать поиск по гриду?

Последний раз редактировалось Evgenii; 31.07.2009 в 16:30.
Evgenii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск Азамат Microsoft Office Excel 7 18.06.2008 13:44
ПОИСК FIIR БД в Delphi 3 16.06.2008 16:06
Поиск В бД Старик_Романыч БД в Delphi 5 29.04.2008 21:12
Поиск Volkogriz Общие вопросы Delphi 5 22.04.2008 10:59
поиск Lonix Общие вопросы Delphi 2 04.04.2007 01:59