Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Вниз

Не могу разобраться с фильтром в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
3-1173786756
salex
2007-03-13 14:52
2007.05.27
TClientDataSet и освобождение памяти


2-1178381914
Lobach
2007-05-05 20:18
2007.05.27
Как корректно отобразить символ &


15-1177698597
koha
2007-04-27 22:29
2007.05.27
Можно ли к форуму подключать какой нибудь другой программой?


15-1177314606
cj
2007-04-23 11:50
2007.05.27
NTFS-DOS


15-1176387794
Vlad Oshin
2007-04-12 18:23
2007.05.27
Excel неправильно хранит свой лист в другом формате. Почему?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский