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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2014, 14:37   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В Filtered True кто ставить будет?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2014, 14:46   #12
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В Filtered True кто ставить будет?
Поставил на событии onFilterRecord у detail dataset:
Код:
procedure TFmSale.QCHEQTFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  QCHEQT.Filtered := False;
  QCHEQT.ParamByName('VIS').AsString := '0';
  QCHEQT.Filtered := True;
end;
Пробовал прямо у самого компонента сразу поставить Filtered := True;
и так
Код:
procedure TFmSale.QCHEQTFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  QCHEQT.ParamByName('VIS').AsString := '0';
end;
Изменений никаких
сам Sql-запрос такой
Код:
SELECT
  T.NAIM AS TNAIM,
  CHEQT.ID,
  CHEQT.CHEQID,
  CHEQT.TID,
  CHEQT.K,
  CHEQT.PRICE,
  CHEQT.S,
  CHEQT.VIS,
  CHEQT.OSTATOK,
  CHEQT.SALEID
FROM
  CHEQT
  LEFT OUTER JOIN T ON (CHEQT.TID = T.ID)
WHERE
  CHEQT.CHEQID = :ID AND
  CHEQT.VIS LIKE :VIS
tarakan1983 вне форума Ответить с цитированием
Старый 02.11.2014, 15:00   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Причем здесь Filtered и ParamByName? Filtered True для активизации этого события вне его. Нужно Accept-ту значение присваивать. True если запись удовлетворяет условиям фильтра. Обращение к OnFilterRecord идет для каждой записи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.11.2014 в 15:02.
Аватар вне форума Ответить с цитированием
Старый 02.11.2014, 15:03   #14
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Причем здесь Filtered и ParamByName? Filtered True для активизации этого события вне его. Нужно Accept-ту значение присваивать. True если запись удовлетворяет условиям фильтра. Обращение к OnFilterRecord идет для каждой записи
Не понял, можно на примере?
tarakan1983 вне форума Ответить с цитированием
Старый 02.11.2014, 15:32   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В инспекторе объектов выделить OnFilterRecord dataset-а и нажать F1. Или вбить в гугл OnFilterRecord пример или example примеров море
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2014, 16:10   #16
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В инспекторе объектов выделить OnFilterRecord dataset-а и нажать F1. Или вбить в гугл OnFilterRecord пример или example примеров море
Спасибо всем разобрался!
Это что касается видимости записи или нет, а если такая ситуация
Есть 3 таблицы
1. Группа товаров (G)
2. Товары (T)
3. Движение товара (SALE)

1. ID(INTEGER),
NAIM(STRING)
2. ID(INTEGER),
NAIM(STRING),
GID (INTEGER) {ID группы в таблице G}
3. ID(INTEGER),
TID (INTEGER) {ID товара в таблице T},
DOCID (INTEGER) {ID документа (продажа, возврат, приход. накладная и т.п.)},
D (TIMESTAMP) {Дата операции},
KE (DECIMAL 12,5) {количество товара в данной операции может быть или положительным, что означает приход или отрицательным, что означает расход}
в Dataset master пишу :
Код:
SELECT
    ID AS GID,
    NAIM,
    VIS
FROM
    G
ORDER BY
    G.NAIM
в Dataset detail пишу :
Код:
SELECT 
  T.ID,
  T.NAIM,
  s1.BEGIN_SUM,
  s2.PRIXOD_SUM
FROM
  T
  LEFT OUTER JOIN (SELECT 
  						SALE.TID,
  						SUM(SALE.KE) AS BEGIN_SUM
					FROM
						SALE
					WHERE
						CAST(SALE.D AS DATE) <  :D1  					                        
                    GROUP BY
 						 SALE.TID    
  					) s1 ON s1.TID = T.ID
  LEFT OUTER JOIN (SELECT 
                    	SALE.TID,
  						SUM(SALE.KE) AS PRIXOD_SUM
					FROM
						SALE
					WHERE
						CAST(SALE.D AS DATE) BETWEEN :D1 AND :D2 AND 
  						SALE.KE > 0                    
                    GROUP BY
 						 SALE.TID        
					) s2 ON s2.TID = T.ID  
WHERE
  T.G_ID = :GID
ORDER BY
  T.NAIM
где мне правильно указывать параметры для Detail Dataset, чтобы получить правильные данные.
Спасибо.

Последний раз редактировалось tarakan1983; 02.11.2014 в 17:20.
tarakan1983 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Combobox и Master-Detail Максим1818 БД в Delphi 4 13.02.2014 10:10
Master Detail. добавление редактирование t.baychorov БД в Delphi 1 10.12.2011 14:23
Master-detail DELPHI+FIREBIRD Liones БД в Delphi 1 30.11.2010 13:27
Сценарий Master-Detail в WPF Antonio_M Общие вопросы .NET 0 28.08.2009 10:33
Не работает master-detail для adostoredprocedure VAbramyak БД в Delphi 2 24.04.2007 16:48