Головна сторінка
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.58 MB
Час: 0.068 c
1-1101882072
VAV
2004-12-01 09:21
2004.12.12
Завантаження даних і инета


3-1099924459
Denisiy
2004-11-08 17:34
2004.12.12
Передати запит на сервер в строкової змінної .. або як краще?


1-1101509172
Артем Володимирович
2004-11-27 01:46
2004.12.12
Як запобігти копіювання з WebBrowser?


14-1100857607
dr Tr0jan
2004-11-19 12:46
2004.12.12
Біллі отримує 4 мільйона листів спаму щодня.


3-1099996664
sergeii
2004-11-09 13:37
2004.12.12
Філтрація





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