![]() |
|
|
![]()
|
|
| Андрей |
|
|||
|
Unregistered |
Неужели в дельфийском BDE нельзя использовать вложенные запросы, т.е. конструкции вида SELECT ... FROM SELECT ... ? Что же это за изврат то? Или я не прав? Очень бы хотелось ошибаться... |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
BDE - это тебе не SQL-сервер. Ты еще погорюй, что там всяких дружеских функций нет для даты, конвертации и прочего
Увы, такое он не умеет. |
|||
|
||||
| Андрей |
|
|||
|
Unregistered |
Мда...
Дельфи отстой... BDE маздай... |
|||
|
||||
| Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Промашечка вышла, Дельфи тут не причём, он не выполняет никаких запросов, запрос передаётся драйверу и именно драйвер выполняет эти операции.
Тут можно отчасти согласится , хотя я не знаю ни одной локальной базы данных и ни одной системы драйверов для локальных баз данных, которые бы поддерживали вложенные запросы. Чтобы Вас успокоить - ODBC и DAO тоже не поддерживают их. Теперь разберёмся с самими вложенными запросами. Вложенные запросы не являются стандартом в SQL следовательно каждый производитель драйвера сам решает поддерживать их или нет. Кстати даже многие сервера баз данных не поддерживают такие запросы. Теперь как всё-таки выполнить такой запрос? Прежде всего хотелось бы услышать какую базу данных вы используете? Если это сервер баз данных (MS SQL Server, Oracle, IB и т.п.), то нечего пинять на BDE, надо просто использовать соответствуюшие системы доступа к базам данных - например ADO. Если базы данных локальные (например Paradox или MS Access) то это легко делается через View... Создаёте View, затем его кверите - другого способа с локальными базами данных я не знаю и очень подозреваю что его нет. И последнее: в 99% случаев вложенный запрос можно заменить на соответствующий Join. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
| Андрей |
|
||||||||||
|
Unregistered |
Ради интереса зашел в Access и написал SELECT * FROM (SELECT * FROM Table) - и все работает, дельфи же это и видеть не хочет.
Я использую Paradox. A View он кстати тоже не воспринимает! К тому же насколько я знаю при использовании view существует довольно много ограничений. |
||||||||||
|
|||||||||||
| Vit |
|
||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Ну не надо путать, конечно сама среда обычно более мощная, чем доступ извне. Многие опции могут быть даже не доступны извне совсем и дело тут не в Дельфи и даже не в BDE. Все драйвера для доступа к MS Access для BDE/ODBC написаны Микрософтом, а не Борландом - и они не предусмотрели такой возможности.
Опять же поправляю - дельфи вообще НИЧЕГО с кверёй не делает, всё что делает компонент TQuery это передаёт строку запроса драйверу и берёт от него результат, никаких запросов сам компонент не делает! Найдите драйвер который будет обеспечивать выполнения таких кверей и они будут работать.
Paradox довольно старая система, одна из самых старых и никогда вложенных запросов не поддерживала. View же поддерживаются очень хорошо. Например создайте в каталоге с таблицами текстовый файл с именем "MyQuery.sql", внутри файла напишите: Select * From MyTable Сохраните его. Теперь из Парадокса или из дельфи запустите кверю: Select * from MyQuery или Select * from "MyQuery.sql" и получите результат. На счёт ограничений view - в чём ограничения? Реально использование View абсолютно не отличается от вложенного запроса, так как вложенный запрос делается путём создания временной View и затем запуск квери на её результате. И на последок маленький совет - если это возможно, то перейдите на MS Access + ADO компоненты и там эти запросы будут идти на ура. Да и база данных более новая и возможностей у неё больше. Тем более что последние версии Дельфи очень хорошо поддерживают ADO и имеют мощные компоенты для работы с ним. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||
|
|||||||
| Юля |
|
|||
|
Unregistered |
Андрей!
Да все будет хорошо!!! Напишешь ты эту курсовую! зы:я ведь ничего не перепутала? |
|||
|
||||
| Medved |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 1 Всего: 154 |
Почему нельзя, можно! Вот пример: Я использовал стандартный компонент доступа к базам данных (TQurey) и работал через BDE с алиасом BDDEMOS, с таблицей animals.db вот мой запрос (с вложенным запросом)
у меня все работет и все получилось! -------------------- |
||||
|
|||||
| МММ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 18.6.2002 Репутация: нет Всего: 1 |
Хоть "убейте" меня, а разве View работает для локальных таблиц?
Насчет Oracle, он прекрасно понимает вложенные запросы.... |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 1 Всего: 154 |
Эта конструкиця, детище Майкрософтовских программистов..... такое же как и тип Variant. И то и другое использовать не рекомендуется...... это я ИМХО считаю плохим стилем... конструкиця SELECT * FROM (SELECT * FROM Table) не является уникальной, в том смысле, что эту же задачу можно решить другим способом, альтернативным, просто поменяв логику запроса. ( смотри выше, там я привел тебе альтернативу) Это так, же как и использование переходов к меткам (GO TO), лучше это не использовать, и доказано, что с помощью управляющих конструкций,можно обойтись в программировании и без них (переходов),а их использование как всем известно, является плохим стилем программирования -------------------- |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 1 Всего: 154 |
Да, с началом сесси в ВУЗах, чувствую, прибавиться у нас посетителей на форуме...... -------------------- |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Я же привёл пример как сделать View для парадокса. Или что-то непонятно? Я могу код выложить, но вроде должно и так быть всё ясно. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| МММ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 18.6.2002 Репутация: нет Всего: 1 |
я имел в виду CREATE VIEW MyTable AS select * from 'table.dbf' |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Конструкция "CREATE VIEW" действительно не доступна, но тем ни менее View можно очень легко создать и очень легко ими пользоваться, я пользовался даже многовложенными View для генерации очень сложный Crystal Report рапортов - в некоторых случаях это очень мощное средство. А если надо создать View, то можно это сделать в пару строк и без квери:
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| МММ |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 18.6.2002 Репутация: нет Всего: 1 |
Хорошо , делаю так:
есть файл 555.sql содержание
на форме Query1 с запросом
выдается ошибка |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |