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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.009 c
3-45180
SR_
2002-09-20 18:25
2002.10.14
Поиск записи


1-45345
raiks
2002-10-05 17:29
2002.10.14
Как при компиляции изменить свойство компонента?


4-45612
m-Sergo
2002-08-29 00:42
2002.10.14
издевательство над чужими окнами


1-45460
GOD
2002-10-04 06:23
2002.10.14
реестр


1-45433
megadeth
2002-10-03 14:34
2002.10.14
Как перетаскивать форму за основание?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский