![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос из запроса [D6, dBase, FoxPro]
dabadabiabo © (2003-06-05 11:10:00)Необходимо выполнить
(select A,B) из (select * from MyBD)
Подскажите как описать.
Пробовал кучу вариантов, но компилер их все посылает...
MsGuns (2003-06-06 15:56:00) [1]>Andrey V. (06.06.03 15:48)
А TBatchMove не лучше ? Тем более что не надо проверять на существование файла с указанным именем.
Andrey V. (2003-06-06 15:48:00) [2]Вот мой метод (он правда для db но думаю dbf тоже прокатит)
procedure TMainForm.MakePermanent(QueryHandle:HDBICur;ResultName:string);
var
PathExe: array[0..200] of Char;
begin
StrPCopy(PathExe,ResultName);
dbiMakePermanent(QueryHandle,PathExe,True);
end;
далее ...
QueryTemp.Close;
QueryTemp.SQL.Clear;
QueryTemp.SQL.Add("SELECT * FROM Workers.db");
QueryTemp.SQL.Add("ORDER BY WorkerName");
QueryTemp.Open;
TableWorkerTmp.Close;
MakePermanent(QueryTemp.Handle,"worktmp.db");
TableWorkerTmp.TableName:="worktmp.db";
TableWorkerTmp.DataBaseName:=StartDir;
TableWorkerTmp.Open;
QueryTemp.Close;
В итоге родится файл который можно использовать в дальнейших запросах.
Соловьев (2003-06-06 14:57:00) [3]
> Oleg_E (06.06.03 14:50)
раньше, когда юзал DBF, всегда использовал вышеприведенные конструкции. И у меня работало. Что Вы делаете, я не могу увидеть.
Приведи код, укажи где ошибку выдает?
Oleg_E (2003-06-06 14:50:00) [4]2 Соловьев © (06.06.03 14:33)
Не нужно быть столь категоричным. Попробуй, убедись САМ.
Соловьев (2003-06-06 14:33:00) [5]
> Ни чего не работает на DBF файлах:(((
не может такого быть!!!
Oleg_E (2003-06-06 14:26:00) [6]Я в таких случаях использую компонент XQuery.
Он позволяет построить запрос на любой DataSet.
TxQuery component is a TDataSet descendant component that can be used to query one or more TDataSet descendant components using SQL statements. It is implemented in Delphi 100% source code, no DLL required, because it implements its own SQL syntax parser and SQL engine.
It can be very useful for TDataSet descendants components (including TClientDataSet) that do not use the BDE and that do not implement the SQL language or to mix tables types (dbase, paradox, access).
gsv_ (2003-06-06 13:33:00) [7]Проще написать один запрос, который возвращает нужную информацию из MyBD
DmitryShch (2003-06-06 12:15:00) [8]Вопрос актуальный. Попробововал все из вышеперечисленного.
Ни чего не работает на DBF файлах:(((
Я в таких случаях работаю через временную таблицу
/*1)*/
CREATE TABLE ":Alias:_Temp.DBF"
(
FIELD1 DECIMAL(2,0),
FIELD2 DECIMAL(5,0)
);
/*2)*/
INSERT INTO ":Alias:_Temp.DBF"
(FIELD1, FIELD2)
SELECT FIELD1, FIELD1
FROM ":Alias:MyBD" MyBD;
/*3)*/
DROP TABLE ":Alias:_Temp.DBF";
Andrey V. (2003-06-06 12:04:00) [9]При помощи Permanent делаешь результат квери реальной таблицей и - вперед.
Соловьев (2003-06-06 10:11:00) [10]
> вохзможно ли такое ? (мне кажется, нет)
возможно :))) bde32.hlp
Levan Varshanidze (2003-06-06 10:10:00) [11]Мне кажется, корректнее было бы поставить вопрос так:
есть запрос query1:
query1.sql.add("select a,b from onetable");
query1.open();
query1 возвращает набор данных
как теперь выпольнить запрос
select * from query1 (или как-то по другому) where ......
вохзможно ли такое ? (мне кажется, нет)
Соловьев (2003-06-06 09:46:00) [12]
> needle © (06.06.03 08:13
тогда уж так:
select t1.A
from table1 t1
where exists (select t2.D from table2 t2 where t2.C=t1.B)
Mike1 Kouzmine1 (2003-06-06 08:59:00) [13]needle © (06.06.03 08:13)
LS не поддерживает
needle (2003-06-06 08:13:00) [14]select A,B from (select * from table where ...) t
where ...
и будет тебе щастье :-)
ЮЮ (2003-06-06 03:11:00) [15]А почему сразу не написать
select A,B from MyBD
Соловьев (2003-06-05 11:13:00) [16]LocalSQL.hlp
искать sql files
Наталия (2003-06-05 11:13:00) [17]поместить запрос select * from MyBD в файл с расширением sql.(например tmp.sql) Первый запрос будет выглядеть так: select A,B from tmp.sql