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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 15:34   #1
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию Фильтрация числовых значений в DBgrid

Имеем базу данных в delphi подключенную через ado
используется компоненты ado conection, ado table, datasource, Dbgrid
Компоненты через которые осуществляется фильтрация,
combobox-выбор поля для фильтраций, edit - значение фильтраций.
Фильтрация поиска по словам работает, код:
procedure TForm2.Edit1Change(Sender: TObject);
begin
if ((Length(Edit1.Text) > 0)and(Length(ComboBox1.Text) > 0)) then
begin
ADOTable1.Filtered:=false;
if RadioButton1.Checked then
ADOTable1.Filter:=Combobox1.Text + ' LIKE '+ #39 + Edit1.Text + '%' + #39
else
ADOTable1.Filter:=Combobox1.Text + ' LIKE '+ #39+ '%' + Edit1.Text + '%' + #39;
ADOTable1.Filtered:=true;
end
else ADOTable1.Filtered:=false;
end;

Нужно сделать поиск по числовым значениям, так как при вводе числа выдается ошибка или поиск не работает.
girz вне форума Ответить с цитированием
Старый 12.05.2009, 15:37   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

может быть так, как сказал Stilet пониже:
Код:
procedure TForm2.Edit1Change(Sender: TObject);
begin
if ((Length(Edit1.Text) > 0)and(Length(ComboBox1.Text) > 0)) then
begin
ADOTable1.Filtered:=false;
if RadioButton1.Checked then
ADOTable1.Filter:=Combobox1.Text + ' = '+ #39 + Edit1.Text + '%' + #39
else
ADOTable1.Filter:=Combobox1.Text + ' = '+ #39+ '%' + Edit1.Text + '%' + #39;
ADOTable1.Filtered:=true;
end
else ADOTable1.Filtered:=false;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 12.05.2009 в 15:51.
Neeter вне форума Ответить с цитированием
Старый 12.05.2009, 15:42   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
IntToStr(Edit1.Text)
Сам то понял что написал? Edit.text имеет тип строки а не числа
Цитата:
так как при вводе числа выдается ошибка или поиск не работае
LIKE нужен только при строковых поисках. при числовой фильтрации если у тебя поле числовое пиши знак равенства.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2009, 15:44   #4
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

Выдает такую ошибку
There is no overloaded version of 'IntToStr' that can be called with these arguments
girz вне форума Ответить с цитированием
Старый 12.05.2009, 15:46   #5
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Оплошал чуть-чуть) бывает...
Вверху свое сообщение отредактировал.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 12.05.2009 в 15:57.
Neeter вне форума Ответить с цитированием
Старый 12.05.2009, 15:57   #6
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

После замены like на равно =
Пишет не совподение типов.
girz вне форума Ответить с цитированием
Старый 12.05.2009, 15:59   #7
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Код покажите
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 12.05.2009, 16:02   #8
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, ComCtrls, StdCtrls, ExtCtrls, DBCtrls,
ImgList, ToolWin, Buttons;

type
TForm2 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
DBGrid2: TDBGrid;
Panel1: TPanel;
DBGrid1: TDBGrid;
Panel2: TPanel;
ImageList1: TImageList;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
GroupBox1: TGroupBox;
Edit1: TEdit;
ComboBox1: TComboBox;
RadioButton2: TRadioButton;
RadioButton1: TRadioButton;
GroupBox2: TGroupBox;
ComboBox2: TComboBox;
Edit2: TEdit;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.ToolButton1Click(Sender: TObject);
begin
ADOTable1.First;
end;

procedure TForm2.ToolButton3Click(Sender: TObject);
begin
ADOTable1.Prior;
end;

procedure TForm2.ToolButton5Click(Sender: TObject);
begin
ADOTable1.Next;
end;

procedure TForm2.ToolButton7Click(Sender: TObject);
begin
ADOTable1.Last;
end;

procedure TForm2.ToolButton9Click(Sender: TObject);
begin
ADOTable1.Delete;
end;

procedure TForm2.ToolButton11Click(Sender: TObject);
begin
ADOTable1.Insert;
end;

procedure TForm2.ToolButton13Click(Sender: TObject);
begin
ADOTable1.Edit
end;

procedure TForm2.Edit1Change(Sender: TObject);
begin
if ((Length(Edit1.Text) > 0)and(Length(ComboBox1.Text) > 0)) then
begin
ADOTable1.Filtered:=false;
if RadioButton1.Checked then
ADOTable1.Filter:=Combobox1.Text + ' = '+ #39 + Edit1.Text + '%' + #39
else
ADOTable1.Filter:=Combobox1.Text + ' = '+ #39+ '%' + Edit1.Text + '%' + #39;
ADOTable1.Filtered:=true;
end
else ADOTable1.Filtered:=false;
end;

end;



end.
girz вне форума Ответить с цитированием
Старый 12.05.2009, 16:15   #9
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Может вот так:
Код:
procedure TForm2.Edit1Change(Sender: TObject);
begin
if ((Length(Edit1.Text) > 0)and(Length(ComboBox1.Text) > 0)) then
begin
 ADOTable1.Filtered:=false;
 if RadioButton1.Checked then
  ADOTable1.Filter:=Combobox1.Text + ' = ' + Edit1.Text + '%'
 else
  ADOTable1.Filter:=Combobox1.Text + ' = '+ '%' + Edit1.Text + '%';
 ADOTable1.Filtered:=true;
 end
 else ADOTable1.Filtered:=false;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 12.05.2009, 16:17   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Знак процента зачем?
Поиск в числовом поле поперхнется им...
Код:
  ADOTable1.Filter:=Combobox1.Text + ' = ' + Edit1.Text;
И обязательно проверь правильность данных в твоем комбобоксе и эдите, когда вводить будешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы и обработка числовых и символьных последовательностей Xeon332 Общие вопросы C/C++ 5 23.11.2008 17:38
Edit с разделением числовых разрядов XPAiN Компоненты Delphi 7 16.04.2008 12:51
Выборка значений ячеек DBGrid Македонский БД в Delphi 3 05.12.2007 07:10
фильтрация в DBGrid ГОСЕАН БД в Delphi 4 17.07.2007 17:05
Фильтрация по месяцу DBgrid .... khaz БД в Delphi 5 28.04.2007 14:03