Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизОшибка в SQL запросе (ADODataset) к нескольким таблицам... (+) Найти похожие ветки
← →
Existas (2004-11-09 19:51) [0]В модуле данных создаю ADODataset.
На основе ADOConnection к базе данных Access2000
База Access содержит несколько таблиц.
В свойстве CommandText - задаю текст запроса - SELECT * FROM Tbl1 - где Tbl1 - имя таблицы...
В данном случае - никаких проблем. Всё работает нормально.
Но если SQL запрос обращается к нескольким таблицам - например - SELECT * FROM Tbl1 LEFT JOIN Tbl2 ON Tbl1.Column1=Tbl2.Column2 - при попытке сделать Dataset - ACTIVE = True - возникает ошибка "Неопознаная ошибка".
Если не использовать выбор в запрос всех полей (*), а перечислять их поимённо с префиксом таблицы - ошибка возникает всё равно.
Текст запроса и просто писал, и создавал в ACCESS - в конструкторе запросов - ошибка одна и та же.
Причём - если использовать BDE - и делать всё совершенно аналогично (создавать BDEQuery) - ошибки не возникает и всё работает нормально с точно таким же текстом запроса.
Что я делаю не так ???
Как создавать ADODataset на основе выборки из нескольких связанных таблиц ???
Спасибо.
← →
Polevi © (2004-11-09 19:55) [1]mdac попробуй переустановить
← →
sniknik © (2004-11-09 22:45) [2]mdac + jet (jet-а в новых мдаках нет)
можно проверить действительно ли база 2000я (в аксессе на преобразование баз в другой формат посмотри, что открыто?)
т.к. если в BDE работает то это максимум 97 (если конечно не через ODBC коннект, но в нем тот же jet должен работать та же ошибка должна вылести)
и как база открыта, если на чтение(или не незапысываемом носителе находится), то в старом jet-е вполне возможно глюк вылезет, могли обьеденение в самой базе во временной таблице делать (в новом нет, пробовал), или временный индекс не может сформировать (при отсутствии).
а вот BDE обьеденение в своей директории во временных файлах формирует, вот и нет ошибки.
....
вариантов много, на самом деле, описывай все подробно, что как где лежит, как подключаешся и т.д. все что можеш.
т.к. вылезет скорее всего то что никто не вспомнил. ;о)
← →
Existas (2004-11-10 15:56) [3]Блин - разобрался - путём нучного ТЫКА...
Перепробовал всё что мог.
Заработало нормально - когда в описании связи взял имена в квадратные скобки.
Может быть проблема была из-за того что в имя поля в одной таблице было - "Catalog" ???
Выглядело это так: SELECT * FROM TblPrice LEFT JOIN TblCatalogs ON (TblPrice.Catalog=TblCatalogs.CatName)
И не хотело работать...
Но когда сделал так: SELECT * FROM TblPrice LEFT JOIN TblCatalogs ON ([TblPrice].[Catalog]=[TblCatalogs].[CatName]);
ВСЁ ЗАРАБОТАЛО :-)))
И ещё - судя по отсутствию проблем - BDE 5.2 замечательно работает и с Access2000.
Всем спасибо за посильную помощь.
← →
sniknik © (2004-11-10 19:32) [4]ну вот, почти как и ожидал, то чего никому в голови не пришло... и прийти не могло, в виду умалчивания основной инфы
и не говори что это не так, в основном вопросе в показаном запросе
> например - SELECT * FROM Tbl1 LEFT JOIN Tbl2 ON Tbl1.Column1=Tbl2.Column2
зарезервированых слов не используется. а оказывается они подразумевались... а телепаты однако в бессрочном отпуске. ;о))
← →
MORA (2004-11-10 19:41) [5]А для чего используется это зарезервированное слово?
← →
sniknik © (2004-11-10 20:02) [6]кто ж его знает, для чего именно это конкретное слово? наверное разработчика jet-а нужно спрашивать, а с нас достаточно - открыть хелп, зайти в раздел "Зарезервированные слова SQL" и прочитать чего нам без предосторожностей использовать нельзя
Зарезервированные слова SQL
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Ниже перечислены все слова, зарезервированные ядром базы данных Microsoft Jet для использования в инструкциях SQL. Слова, включающие строчные буквы, также зарезервированы другими приложениями. Поэтому разделы справочной системы, посвященные этим словам, содержат общие сведения, а не только описание их использования в языке SQL.
--------------------------------------------------------------------------------
Примечание. Слова, отмеченные знаком звездочки (*) (например, Level и TableID), также являются зарезервированными, однако в данный момент не имеют определенного значения в контексте инструкций SQL ядра Microsoft® Jet. Неподчеркнутые слова приводятся без объяснений.
--------------------------------------------------------------------------------
A
ABSOLUTE ANY
ADD ARE
ADMINDB AS
ALL ASC
Alphanumeric — см. TEXT ASSERTION
ALTER AUTHORIZATION
ALTER TABLE AUTOINCREMENT — см. COUNTER
And Avg
AS
B-C
BEGIN COLLATION
Between COLUMN
BINARY COMMIT
BIT COMP, COMPRESSION
BIT_LENGTH CONNECT
BOOLEAN — см. BIT CONNECTION
BOTH CONSTRAINT, CONSTRAINTS
BY CONTAINER
BYTE CONTAINS
CASCADE CONVERT
CATALOG Count
CHAR, CHARACTER — см. TEXT COUNTER
CHAR_LENGTH CREATE
CHARACTER_LENGTH CURRENCY
CHECK CURRENT_DATE
CLOSE CURRENT_TIME
CLUSTERED CURRENT_TIMESTAMP
COALESCE CURRENT_USER
COLLATE CURSOR
(CATALOG неподчеркнуто. и это далеко не все, как можно по списку букв в начале определить)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.047 c