Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Не могу разобраться с фильтром в delphi   Найти похожие ветки 

 
delphino   (2007-05-07 12:09) [0]

Мне нужна создать сложный фильтр. У меня есть база данных, пользоваться ей будут 2 группы пользователей (для каждой из групп заведена своя таблица), у каждого есть свой логин и пароль. при старте появляется окно ввода логина и пароля. Как сделать так чтобы  система проверяла логин по таблице и открывала окно базы данных с  набором данных, отсортированным по полю, в котором имеется этот логин???
То есть выбирала бы записи только конкретного пользователя...


 
Desdechado ©   (2007-05-07 12:16) [1]

> 2 группы пользователей (для каждой из групп заведена своя таблица)
Странная идея, если данные одного вида.

> система проверяла логин по таблице
Это вообще забота СУБД, а не твоя.

> открывала окно базы данных с  набором данных, отсортированным
> по полю, в котором имеется этот логин?
Сортировка - это упорядочивание. Причем тут фильтр?

> выбирала бы записи только конкретного пользователя...
Какая СУБД? У некоторых есть встроенные средства для этого.


 
delphino   (2007-05-08 03:09) [2]

Извини я неправильно сформировала вопрос. Объясню по другому. Есть таблица клиентов, у этой таблицы имеются два поля C_Manager и C_Inzhener. Есть также две таблице которые содержат фамилии и логины менеджеров и инженеров. Менеджеров всего 4, а инженеров 40 и каждый клиент принадлежит одному инженеру и одному менеджеру. Мне нужно чтобы при входе система определяла кто из менеджеров или инженеров вошел и отбирала в таблицу только его клиентов, вот для этого нужен фильтр.


 
ЮЮ ©   (2007-05-08 03:29) [3]

Для этого есть WHERE в SQL, ибо незачем тянуь в НД записи, которые в этом клиенте никогда не будут показаны


 
Германн ©   (2007-05-08 03:34) [4]


> вот для этого нужен фильтр.
>

А что в твоём понимании есть "фильтр"?


 
delphino   (2007-05-08 04:40) [5]

не хочу использовать SQL. Нашла одну функцию OnFilterRecord для задания сложного фильтра, но не знаю как ее использовать...


 
Wind ©   (2007-05-08 04:49) [6]

Под словом "фильтр", Вы скорее всего подразумевали запрос.
Как мне кажется, подобные запросы удобней делать при помощи языка SQL (для этого он и был создан).

К примеру у вас  таблица с названием "Clients" в которой присутствуют поля :

C_Manager , C_Inzhener и ClientName

SQL запрос может выглядеть примерно так :

SELECT ClientName
FROM Clients
Where (C_Manager = "Иванов") and (C_Inzhener = "Петров")
ORDER BY ClientName


После обработки такого запроса Будут выбраны только те записи клиентов, в которых поля C_Manager и C_Inzhener будут соответствовать значениям Иванов и Петров.
Есть много способов в Delphi, реализации подобных SQL запросов.
Удобнее всего для начинающего программера использовать компоненты
TQuery или TADOQuery  про них написано много умных страниц в хелпе.


 
Wind ©   (2007-05-08 05:29) [7]

Прошу прощения не вовремя обновил страничку.
Вот данные по вашему вопросу.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1


 
Wind ©   (2007-05-08 05:49) [8]

Примерно так:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Grids, DBGrids, DB,  DBTables;

type
 TForm1 = class(TForm)
   DataSource1: TDataSource;
   f: TDBGrid;
   Button1: TButton;
   Table1: TTable;
   procedure Button1Click(Sender: TObject);
   procedure Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var B :boolean;
begin
Table1.Filtered:=True; //отфильтровать
end;

procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
 var Accept: Boolean);
begin
Accept := (DataSet["C_Manager"] = "Иванов") and  (DataSet["C_Inzhener"] = Петров");       //условие фильтрации
end;

end.


 
delphino   (2007-05-08 05:56) [9]

Но для запроса SQL мне придется использовать элемент Query, а не Table? А хотелось бы все таки фильтровать записи в Table. Может я туплю, но я с этим вопросом вожусь уже неделю:-(


 
Wind ©   (2007-05-08 05:58) [10]

Смотрите выше на сообщение [8] :)


 
delphino   (2007-05-08 07:56) [11]

Не фильтрует...Вообще не реагирует на нажатие кнопки.:-(


 
delphino   (2007-05-08 07:57) [12]

procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := (DataSet["C_Manager"] = "Иванов") and  (DataSet["C_Inzhener"] = Петров");       //условие фильтрации
end;

Эту процедуру надо вручную прописывать или есть невизуальный компонент который за нее отвечает?


 
ЮЮ ©   (2007-05-08 08:06) [13]

> Table1FilterRecord

Этот метод должен быть назначен в качестве обработчика OnFilterRecord у компонента Table1.

с procedure TForm1.Button1Click(Sender: TObject); следует поступить аналогично


 
delphino   (2007-05-08 08:24) [14]

Огромное спасибо ЮЮ!!! Ты меня спас!!!


 
Правильный Вася   (2007-05-08 11:06) [15]


> Ты меня спас!!!

блажен, кто верует

ЗЫ легкий путь - большие грабли



Страницы: 1 вся ветка

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
15-1177570916
Kerk
2007-04-26 11:01
2007.05.27
Приключения главного скаута Челси в России


4-1166780935
Grademax
2006-12-22 12:48
2007.05.27
Как узнать сколько времени отработал HDD?


8-1158154178
Lockdog
2006-09-13 17:29
2007.05.27
Определение цвета и преобразование палитры


15-1177471515
SerJaNT
2007-04-25 07:25
2007.05.27
Еще один вопрос по PHP :)


15-1177662274
vajo
2007-04-27 12:24
2007.05.27
Как распечатать pdf?