Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Ошибка в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
14-1100853530
Sir John
2004-11-19 11:38
2004.12.12
Microsoft засудит пользователей Linux


1-1101414806
Mazer
2004-11-25 23:33
2004.12.12
Изменения свойства Enabled у разных компонентов одним махом?


1-1101718296
Oyster
2004-11-29 11:51
2004.12.12
Проблемы с кучей в BP


14-1100791925
Гарри Поттер
2004-11-18 18:32
2004.12.12
Помогите с составлением сметы на монтаж локальной сети


4-1098954862
Ivolg
2004-10-28 13:14
2004.12.12
Диски