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

Вниз

Фильтрация   Найти похожие ветки 

 
RDA ©   (2002-09-20 08:16) [0]

Проблемы с фильтрацией в Accsess через ADO. При попытке установить фильтр в дочерней таблице - ошибка "Нельзя фильтровать в дочерней таблице" - так ли это? И проблема фильтрации запроса по дате. Пишу так
Filter:="DATA>="""+Дата1+""""+" AND DATA<="""+Дата2+"""";


 
ЮЮ ©   (2002-09-20 09:15) [1]

"Нельзя фильтровать в дочерней таблице",т.к.,вероятно, установлена фильтрация, обеспечивающая связь Master-Detail


 
RDA ©   (2002-09-20 09:39) [2]

procedure TfmFilter.SetFilter; //формирование строки фильтра
var
Str:String;
begin
with DM do //ДатаМодуль
begin
QueryFilter.Filtered:=False;
//Первый параметр - Название плательщика
if ENazv_P.Text<>"" then Str:="NAZV_P="""+ENazv_P.Text+"""";
//Второй параметр - Счет плательщика
if ERRax_P.Text<>"" then
begin
if Str<>"" then Str:=Str+" AND RRAX_P="""+ERRax_P.Text+""""
else Str:="RRax_P="""+ERRax_P.Text+"""";
end;
//Третий параметр - Название получателя
if ENazv_O.Text<>"" then
begin
if Str<>"" then Str:=Str+" AND NAZV_O="""+ENazv_O.Text+""""
else Str:="NAZV_O="""+ENazv_O.Text+"""";
end;
//Четвертый параметр - Счет получателя
if ERRax_O.Text<>"" then
begin
if Str<>"" then Str:=Str+" AND RRAX_P="""+ERRax_O.Text+""""
else Str:="RRax_O="""+ERRax_P.Text+"""";
end;
// До этих пор все работает нормально а дальше ошибка
//"Приложение использует аргументы, которые имеют неверный тип, выходят за пределы допустимого диапазона или вызывают конфликт друг с другом."
//Две даты - от и до
if (Start_Date.Text<>"") and (Stop_Date.Text<>"") then
begin
if Str<>"" then Str:=Str+" DATA >="""+Start_Date.Text+""""+" AND DATA <="""+Stop_Date.Text+""""
else Str:="DATA >="""+Start_Date.Text+""""+" AND DATA <="""+Stop_Date.Text+"""";
end;
if (Start_Date.Text<>"") and (Stop_Date.Text="") then
begin
if Str<>"" then Str:=Str+" DATA >="""+Start_Date.Text+""""
else Str:="DATA >="""+Start_Date.Text+"""";
end;
if (Start_Date.Text="") and (Stop_Date.Text<>"") then
begin
if Str<>"" then Str:=" DATA <="""+Stop_Date.Text+""""
else Str:="DATA <="""+Stop_Date.Text+"""";
end;
QueryFilter.Filter:=Str;
QueryFilter.Filtered:=True;
end;
end;


 
Johnmen ©   (2002-09-20 09:41) [3]

>ЮЮ © (20.09.02 09:15)

Именно так ! Внутренняя реализация Master-Detail построена, естественно, на фильтрах.

>RDA ©
>Filter:="DATA>=""""+Дата1+"""+" AND DATA<="""+Дата2+"""";

Каковы значения Дата1 и Дата2 ?




 
RDA ©   (2002-09-20 09:50) [4]

Текстовое представление даты.


 
ЮЮ ©   (2002-09-20 09:54) [5]

В Accese формат даты несколько специфичен
#mm/dd/yyyy#, а не привычный "dd.mm.yyyy".
и спокойно пропускает #dd/mm/yyyy#. Так что в случае #11/12/2002#
не поймешь, то ли это 11 дек., толи 12 ноя.


 
Johnmen ©   (2002-09-20 09:57) [6]

>RDA © (20.09.02 09:50)
>Текстовое представление даты.

Ты глумишься ? Или считаешь меня совсем дебилом ?

Я спрашивал про формат !!!




 
RDA ©   (2002-09-20 10:15) [7]

>>Johnmen
Че ты нервничаешь, не понял я вопроса.
И если быть точным ты спрашивал про значения. Написал бы я тебе 18.09.02 (Это значение) - и что. Судя по ответу ЮЮ формат должен выглядеть #18.09.02#.


 
Johnmen ©   (2002-09-20 10:46) [8]

>RDA ©

Да не нервничаю...
Если бы сразу привел значение (типа "18.09.02 "), то стало бы все ясно...
Впрочем, ответ уже дан ЮЮ © (20.09.02 09:54) :)))


 
ЮЮ ©   (2002-09-20 10:48) [9]

Cудя по моему ответу, он должен быть #9/18/2002# :-)


 
RDA ©   (2002-09-20 10:55) [10]

>>Johnmen, ЮЮ - Черт с ней с фильтрацией перешел на запрос и снова трабл. Помогите разобраться что не так.
Пишу
SELECT N_PLAT, NOMER, DATA, NAZV_P, RRAX_P, NAZV_O, RRAX_O, SUMA, PRIZN FROM PLAT WHERE (P_PRED="+PREDN_PRED.AsString+")"+" AND (NAZV_P="+ENazv_P.Text+")"
Пишет - Пропущен оператор в секции
(P_PRED="+PREDN_PRED.AsString+")"+" AND (NAZV_P="+ENazv_P.Text+")"


 
Johnmen ©   (2002-09-20 11:06) [11]

(P_PRED="""+PREDN_PRED.AsString+""")"+" AND (NAZV_P="""+ENazv_P.Text+""")"


 
RDA ©   (2002-09-20 12:02) [12]

>>Johnmen - Спасибо.
Все, задолбался.
Теперь ошибка "Несоответствие типов данных в условии отбора данных".
Какое несоответствие не пойму все String в запросе.


 
ЮЮ ©   (2002-09-20 12:11) [13]

P_PRED и NAZV_P какого типа?


 
sniknik ©   (2002-09-20 12:14) [14]

RDA ©
хочеш пришлю програмку для тестов запросов? приблизительный аналог Query Analizer-а из MSSQL только для разных баз. изначально именно под Access. архив 400кб. глядиш поможет.


 
RDA ©   (2002-09-20 12:24) [15]

>> ЮЮ
P_PRED и NAZV_P оба длинное целое.
Ну да ладно. Переделал через параметр - работает но проблема снова с датой. Вот код:

procedure TfmFilter.SetFilter;
const
Text="SELECT N_PLAT, NOMER, DATA, NAZV_P, RRAX_P, NAZV_O, RRAX_O, SUMA, PRIZN FROM PLAT WHERE (P_PRED=:PRED)";
var
Str:String;
begin
with DM do
begin
QueryFilter.Active:=False;
QueryFilter.SQL.Clear;
if ENazv_P.Text<>"" then Str:=Str+" AND (NAZV_P="""+ENazv_P.Text+""")";
if ERRax_P.Text<>"" then Str:=Str+" AND (RRAX_P="""+ERRax_P.Text+""")";
if ENazv_O.Text<>"" then Str:=Str+" AND (NAZV_O="""+ENazv_O.Text+""")";
if ERRax_O.Text<>"" then Str:=Str+" AND (RRAX_O="""+ERRax_O.Text+""")";
//Все работает нормально
//Дата трабл.
if Start_Date.Text<>"" then Str:=Str+" AND (DATA>="""+Start_Date.Text+""")";
if Stopt_Date.Text<>"" then Str:=Str+" AND (DATA<="""+Stopt_Date.Text+""")";
QueryFilter.SQL.Add(Text);
QueryFilter.Parameters.ParamByName("PRED").Value:=PREDN_PRED.AsInteger;
QueryFilter.SQL.Append(Str);
QueryFilter.Active:=True;
end;
end;

Пробовал менять сроки с датой на

if Start_Date.Text<>"" then Str:=Str+" AND (DATA>="""+"#"+Start_Date.Text+"#"+""")";
if Stopt_Date.Text<>"" then Str:=Str+" AND (DATA<="""+"#"+Stopt_Date.Text+"#"+""")";
Не помогает. В базе установлен краткий формат даты "dd.mm.yy" - и именно так, в значении "19.09.02".

Всем большое спасибо за участие в решении проблемы.


 
Anatoly Podgoretsky ©   (2002-09-20 12:28) [16]

Не стоит в запрос напрямую передавать дату, используй параметры


 
ЮЮ ©   (2002-09-20 12:31) [17]

>P_PRED и NAZV_P оба длинное целое
Тогда не нужны "обрамляющие" кавычки для числа, как не нужны они и для даты


 
RDA ©   (2002-09-20 18:03) [18]

procedure TfmFilter.SetFilter;
const
Text="SELECT N_PLAT, NOMER, DATA, NAZV_P, RRAX_P, NAZV_O, RRAX_O, SUMA, PRIZN FROM PLAT WHERE (P_PRED=";
var
Str:String;
begin
with DM do
begin
QueryFilter.Active:=False;
QueryFilter.SQL.Clear;
if ENazv_P.Text<>"" then Str:=Str+" AND (NAZV_P="""+ENazv_P.Text+""")";
if ERRax_P.Text<>"" then Str:=Str+" AND (RRAX_P="""+ERRax_P.Text+""")";
if ENazv_O.Text<>"" then Str:=Str+" AND (NAZV_O="""+ENazv_O.Text+""")";
if ERRax_O.Text<>"" then Str:=Str+" AND (RRAX_O="""+ERRax_O.Text+""")";
//Сдесь ошибка у меня
if Start_D.Text<>"" then Str:=Str+" AND (DATA>="+Start_D.Date+")";
if Stopt_D.Text<>"" then Str:=Str+" AND (DATA<="+Stopt_D.Date+")";
//
QueryFilter.SQL.Add(Text+PREDN_PRED.AsString+")"+Str);
QueryFilter.Active:=True;
end;
end;

Пробовал по разному - не получаеться. Подскажите если знаете.



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

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

Наверх




Память: 0.52 MB
Время: 0.018 c
1-45308
Th
2002-10-04 19:12
2002.10.14
Help!!! как реализовать один хитрый С-макрос на паскале!


1-45360
Shrek
2002-09-29 00:23
2002.10.14
IsDebuggerPresent


1-45280
hair
2002-10-04 14:35
2002.10.14
EOutOfMemory


1-45382
ksan
2002-10-02 19:57
2002.10.14
фокусировка компонента


1-45381
AL2002
2002-10-01 19:46
2002.10.14
Ну ладно, а как удалить шрифт?..