Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с TTable... [D5, Paradox]


Страницы:   1 2

Nick ©   (2003-07-15 09:46:00) 

Добрый день.

У меня такой вопрос.
Существует две таблицы (TTable), позиционирую на запись в DBGrid-е (Table1), нажимаю на кнопку и открывается другая форма на ней DBGrid (Table2).
Хочу сделать фильтрацию, чтоб при нажатии на кнопку, в DBGrid-е (Table2) отображались записи, принадлежащие той записи, на которую я позиционировался в DBGrid-е (Table1).
Как это сделать?

Спасибо.


Anatoly Podgoretsky   (2003-07-15 12:59:00) [1]

" and Name_Org<>nul" это уже точно не покажет, правда и без этого тоже не показывает, но может это особенность Парадокса или ты что нибудь не так делаешь.


Nick   (2003-07-15 12:57:00) [2]

Не ужели заработало!!!
Огромно спасибо всем кто принимал участие в обсуждении, особенно
Zacho, Anatoly Podgoretsky!!!!!!!!
Спасибо.
Если еще будут вопросы буду знать к кому обращаться.


myor   (2003-07-15 12:55:00) [3]

Zacho © (15.07.03 12:36)

к мастер-детал, конечно, никакого. но, см. замечание Anatoly Podgoretsky © (15.07.03 10:42) по поводу экономичности фильтра для двух форм. если есть опасение, что nick заблудится в двух формах- пусть использует дата-модуль (по его прямому назначению).


Zacho   (2003-07-15 12:50:00) [4]


> Nick (15.07.03 12:47)

Kopi.Filtered:=true ?

И, уже точно не помню, но возможно надо так:
procedure TDataModule2.GlavAfterScroll(DataSet: TDataSet);
begin
Kopi.Filtered:=false;
Kopi.Filter := "Name_Org="+AnsiQuotedStr(DataSet.FieldByName("Name_Org").AsString,"""");
Kopi.Filtered:=true;
end;


Nick   (2003-07-15 12:47:00) [5]


> Zacho

Да работает без ошибок, но ошибка в том, что если Name_Org отсутстует в Kopi, все равно выдаетт одно и тоже!
Например: Name_Org=WWW в Glav, а в Kopi Name_Org такого значения нет, тогда мне надо пустой DBGrid, а он все равно выдает записи не зависимо от этого!


Zacho   (2003-07-15 12:36:00) [6]


> myor © (15.07.03 12:33)

???
Какое отношение к этому имеет DataModule ?


Zacho   (2003-07-15 12:34:00) [7]


> Nick (15.07.03 12:25)

Тогда так:
procedure TDataModule2.GlavAfterScroll(DataSet: TDataSet);
begin
Kopi.Filter := "Name_Org="+AnsiQuotedStr(DataSet.FieldByName("Name_Org").AsString,"""");
end;

Обрати внимание: это обработчик AfterScroll "главного" набора данных, а фильтр устанавливается в "подчиненном".


myor   (2003-07-15 12:33:00) [8]

попробуй мастер-детал через дата-модуль.


Nick   (2003-07-15 12:25:00) [9]


> Если это строковые то это работать не будет, отсутствуют
> кавычки, если это числовые то правильно. Он молчит от типе
> полей

У меня строковые данные!!!!!!!!!!!!


Nick   (2003-07-15 12:23:00) [10]


> Слушай, используй onFilterRecord и не парься со строками.

Да но,он выводит весь Table. Мне надо чтоб при отсутствии такой "Name_Org" был пустой DBGrid, в противном отображал записи.


Anatoly Podgoretsky   (2003-07-15 12:23:00) [11]

Zacho © (15.07.03 12:18)
Если это строковые то это работать не будет, отсутствуют кавычки, если это числовые то правильно. Он молчит от типе полей.

VAleksey © (15.07.03 12:15)
Лишнее, у него одназначное соответствиее, фильтр самое то, быстрее может быть только SetRange, но с ним иногда бывают ошибки, не знаю как в Парадоксе и требует наличие и активацию индекса, а фильтру ничего этого не требуется.


Zacho   (2003-07-15 12:18:00) [12]


> Nick (15.07.03 12:01)

Насколько позволяют мои телепатические способности, я понял что тебе нужно так:
procedure TDataModule2.GlavAfterScroll(DataSet: TDataSet);
begin
Kopi.Filter := "Name_Org="+DataSet.FieldByName("Name_Org").AsString;
end;

Естественно, должно быть Kopi.Filtered:=true;


VAleksey   (2003-07-15 12:15:00) [13]

Слушай, используй onFilterRecord и не парься со строками.

ЗЫ
Эту строку помести в событие.

Accept := Kopi.FieldByName("Name_Org").AsString = DataModule2.Glav.FieldByName("Name_Org").AsString


Nick   (2003-07-15 12:11:00) [14]


> Рассуждаешь верно и именно так и работает. Значение должно
> соответствовать рпавилам для конкретным типам, используемому
> движку.

В том-то и дело, что не работает!
На счет идексов:
У Table2 установлен в качестве индекса Name, а есть еще индексы: Programm, Postav_Programm.
Я их свяжу и что, в листинге прописать? Или ничего не надо?


Anatoly Podgoretsky   (2003-07-15 12:07:00) [15]

Невнимательно прочитал вот это Значение должно соответствовать рпавилам для конкретным типам, используемому движку.
У тебя по всей видимости это строковые данные, так вот для BDE их положено брать в кавычки!


Nick   (2003-07-15 12:01:00) [16]


> полный код в студию!

Пожалуйста!
procedure TDataModule2.KopiAfterScroll(DataSet: TDataSet);
begin
Kopi.Filter := "Name_Org="+DataModule2.Glav.FieldByName("Name_Org").AsString;
Kopi.Filtered:=true;
end;


Anatoly Podgoretsky   (2003-07-15 12:00:00) [17]

Nick (15.07.03 11:28)
Рассуждаешь верно и именно так и работает. Значение должно соответствовать рпавилам для конкретным типам, используемому движку.

Для этого никакие, дополнительные данные нужны если организовывать с помощью связи мастер-детайл, а именно информация об имеющихся индексах и какой установлен текущим для Table2.
Table2 должна быть связана по текущему индексу с Table1, в соответствии с требуемой тебе связью.


Соловьев   (2003-07-15 11:47:00) [18]


> Не работает, пишет, что поле не найдено(Table2: Field "А"
> no found). "А"- это первая буква в записи Table1. Вот так!

полный код в студию!


Nick   (2003-07-15 11:28:00) [19]


> filter="www=" + Значение из Table1;

Так вот это WWW я должен выбрать в DBgrid-e (Table1), и приравнять к значению table2, если в этом Table2 есть WWW, если нет тогда должен быть пустой DBGrid (Table2).


> Для ответа по поводу мастер-детайл данных недостаточно.

Напишите какие надо еще данные!


Anatoly Podgoretsky   (2003-07-15 11:20:00) [20]

filter="www=" + Значение из Table1;
Для ответа по поводу мастер-детайл данных недостаточно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо