![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Select from Query [D6, dBase, FoxPro, Paradox]
RDen © (2003-10-02 12:40:00)
Здравствуйте. Ситуация такая: из таблицы выбираю записи удовлетворяющие условию:
Query1.Close;
Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Diag = 200");
Query1.Open;
далее требуется из этой выборки сделать ещё выборку с другим условием....
Подскажите пожалуйста как сделать
Vlad (2003-10-03 10:52:00) [1]
>Mike Kouzmine © (02.10.03 19:24) [15]
Где я сказал "нет" ?
Я сказал - "Да" ! :)))
Mike Kouzmine (2003-10-02 19:24:00) [2]
Vlad © (02.10.03 15:31) [12] А разве нет? Я так делал. Вроде работает.
Vlad (2003-10-02 16:10:00) [3]
>NAlexey © (02.10.03 16:04) [13]
В [9]
NAlexey (2003-10-02 16:04:00) [4]
>А ведь решение грамотное :)
Где?
Vlad (2003-10-02 15:31:00) [5]
>Наталия © (02.10.03 15:26) [11]
А ведь решение грамотное :)
Наталия (2003-10-02 15:26:00) [6]
RDen (02.10.03 15:12) [10]
Сдаётся мне, что ты не понял, как сделать "запрос из запроса" :))
RDen (2003-10-02 15:12:00) [7]
вроде победил эту прблему, если кому интересно - могу завтра сообщить. To Наталия: примерно так и пришлось сделать, только не в файле, а в переменной. Всем спасибо за участие.
Наталия (2003-10-02 14:54:00) [8]
Но если всё-таки действительно нужно сделать "запрос из запроса", то возможно сохранение текста первого запроса в файле, а затем во втором запросе делать выбор уже из этого файла. Подробности смотри в help по LocalSQL
RDen (2003-10-02 14:47:00) [9]
действительно кавычки, спасибо
Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Поле1 = True and Поле2 = "200"");
mfender (2003-10-02 14:35:00) [10]
Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Поле1 = True and Поле2 = 200");
С кавычками что-то непонятно...
И, возможно, значения для отбора (200) в кавычки""заключить надо... Попробуй.
RDen (2003-10-02 14:12:00) [11]
Ваще застопорился - пишу уже:
Query1.SQL.Clear;
Query1.Close;
Query1.SQL.Add("Select * from ""+ "Base\1.DBF" +"" where Поле1 = True and Поле2 = 200");
Query1.Open;
выдаётся - Type mismatch expression
Vlad (2003-10-02 13:41:00) [12]
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 13:20:00) [13]
Чё-то не получаетя :(
Может коротенький примерчик приведёшь?
Vlad (2003-10-02 13:07:00) [14]
Фильтром конечно такое не получится.
Но давай по порядку.
1) ты получаешь некий набор данных
2) из него тебе надо сделать еще одну выборку. Вопрос - первый набор данных обязательно должен при этом остаться активным ?
Если нет, то просто динамически формируй SQL строку с нужными критериями в WHERE. Затем переоткрывай DataSet.
RDen (2003-10-02 13:00:00) [15]
1. Дело в том, что цепочка из запросов может быть длинной и разной, т.е. например пользователь сначала выбрал фамилии начинающиеся на букву А , затем из этой выборки выбрал ещё с каким-то условием и т.д. В следующий раз пользователь может построить свою цепочку запросов подругому.
2. Фильтр применить не получается, потому что он каждый раз отфильтровывает из полного набора данных, а не из уже отфильтрованных данных (может я не прав?)
Vlad (2003-10-02 12:45:00) [16]
А что мешает сделать второй query, где написать тот же селект, но с доп. условиями отбора ?
А иначе - только фильтром.