Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c