Вниз
Скачать: CL | DM;

Select from Query   Найти похожие ветки 

← →
RDen   (2003-10-02 12:40) [0]

Здравствуйте. Ситуация такая: из таблицы выбираю записи удовлетворяющие условию:
Query1.Close;
Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Diag = 200");
Query1.Open;

далее требуется из этой выборки сделать ещё выборку с другим условием....
Подскажите пожалуйста как сделать


← →
Vlad ©   (2003-10-02 12:45) [1]

А что мешает сделать второй query, где написать тот же селект, но с доп. условиями отбора ?
А иначе - только фильтром.


← →
RDen   (2003-10-02 13:00) [2]

1. Дело в том, что цепочка из запросов может быть длинной и разной, т.е. например пользователь сначала выбрал фамилии начинающиеся на букву А , затем из этой выборки выбрал ещё с каким-то условием и т.д. В следующий раз пользователь может построить свою цепочку запросов подругому.
2. Фильтр применить не получается, потому что он каждый раз отфильтровывает из полного набора данных, а не из уже отфильтрованных данных (может я не прав?)


← →
Vlad ©   (2003-10-02 13:07) [3]

Фильтром конечно такое не получится.
Но давай по порядку.
1) ты получаешь некий набор данных
2) из него тебе надо сделать еще одну выборку. Вопрос - первый набор данных обязательно должен при этом остаться активным ?
Если нет, то просто динамически формируй SQL строку с нужными критериями в WHERE. Затем переоткрывай DataSet.


← →
RDen   (2003-10-02 13:20) [4]

Чё-то не получаетя :(
Может коротенький примерчик приведёшь?


← →
Vlad ©   (2003-10-02 13:41) [5]

begin
Query.Close;
Query.Sql.Text:="select * from table where 1=1";
if <условие> then Query.Sql.Add(" and Поле1=значение1") ;
if <другое_условие> then Query.Sql.Add(" and поле2=значение2") ;
Query.Sql.Add("order by поле3");
Query.Open;

end;


← →
RDen   (2003-10-02 14:12) [6]

Ваще застопорился - пишу уже:

Query1.SQL.Clear;
Query1.Close;
Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Поле1 = True and Поле2 = 200");
Query1.Open;

выдаётся - Type mismatch expression


← →
mfender ©   (2003-10-02 14:35) [7]

Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Поле1 = True and Поле2 = 200");

С кавычками что-то непонятно...
И, возможно, значения для отбора (200) в кавычки "" заключить надо... Попробуй.


← →
RDen   (2003-10-02 14:47) [8]

действительно кавычки, спасибо

Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Поле1 = True and Поле2 = "200"");


← →
Наталия ©   (2003-10-02 14:54) [9]

Но если всё-таки действительно нужно сделать "запрос из запроса", то возможно сохранение текста первого запроса в файле, а затем во втором запросе делать выбор уже из этого файла. Подробности смотри в help по LocalSQL


← →
RDen   (2003-10-02 15:12) [10]

вроде победил эту прблему, если кому интересно - могу завтра сообщить. To Наталия: примерно так и пришлось сделать, только не в файле, а в переменной. Всем спасибо за участие.


← →
Наталия ©   (2003-10-02 15:26) [11]

RDen (02.10.03 15:12) [10]
Сдаётся мне, что ты не понял, как сделать "запрос из запроса" :))


← →
Vlad ©   (2003-10-02 15:31) [12]

>Наталия © (02.10.03 15:26) [11]
А ведь решение грамотное :)


← →
NAlexey ©   (2003-10-02 16:04) [13]

>А ведь решение грамотное :)
Где?


← →
Vlad ©   (2003-10-02 16:10) [14]

>NAlexey © (02.10.03 16:04) [13]
В [9]


← →
Mike Kouzmine ©   (2003-10-02 19:24) [15]

Vlad © (02.10.03 15:31) [12] А разве нет? Я так делал. Вроде работает.


← →
Vlad ©   (2003-10-03 10:52) [16]

>Mike Kouzmine © (02.10.03 19:24) [15]
Где я сказал "нет" ?
Я сказал - "Да" ! :)))



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.017 c
14-74469
cher_gvf
2003-10-03 12:41
2003.10.23
Запуск с помощью CreateProcess


1-74218
Сергей Б.
2003-10-09 17:37
2003.10.23
Label1.caption - переменная вместо 1


7-74493
Andr
2003-08-09 10:09
2003.10.23
Загруженость процессора!


7-74508
Nosik_alex
2003-08-06 10:17
2003.10.23
как создать виртуальный принтер


9-73963
Shatalka_o
2003-04-18 11:51
2003.10.23
У кого есть исходники трехмерной графики?




   Наверх