Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Бази";
Поточний архів: 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
ABCDEFGHIJKLMNOPQRSTU VWXYZ

Ниже перечислены все слова, зарезервированные ядром базы данных 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  

до нашої ери

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.59 MB
Час: 0.078 c
1-1101466977
Manfred8
2004-11-26 14:02
2004.12.12
Заборона вставки з буфера в Edit


14-1101241503
Help Me
2004-11-23 23:25
2004.12.12
Книга


1-1101683635
Хто --- то
2004-11-29 02:13
2004.12.12
Чи можна отримати лістинг своєї програми (екзешніка) в такому


9-1091894388
new developer
2004-08-07 19:59
2004.12.12
масив в масиві


3-1100604655
Stass
2004-11-16 14:30
2004.12.12
Композитний звіт (QR)





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська