Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO -> Access 2000 ???? ; HEEEEEEEEELP ! [D5, Access]


koks ©   (2002-03-26 13:45:00) 

Господа знатоки ! Помогите - совсем голову сломал.

1. Есть запрос adoqPrices. У него в св-ве SQL записано:

SELECT COLOR, CLARITY, AVG(PRICE) AS AVGPRICE
FROM "Polished_prices"
WHERE SOURCE =:Source, SIZE =:Size, CUT=:Cut
GROUP BY COLOR, CLARITY
ORDER BY COLOR, CLARITY

2. В свойстве Parameters прописано 3 параметра: Source, Sise, Cut с типом данных integer;

3. В процедуре вызываю:

adoqPrices.Close;
adoqPrices.Parameters.ParamByName("Source").Value := SourceId;
adoqPrices.Parameters.ParamByName("Size").Value := SizeId;
adoqPrices.Parameters.ParamByName("Cut").Value := CutId;
adoqPrices.Open;

При этом предварительная проверка на неNull у всех трех значений.

На строке adoqPrice.Open выдается:
EOleException with Message "Неопознанная ошибка"....

Все пальцы уже отшиб, экспериментирую со всякими установками....без Вашей помощи - никак.

И еще вопрос в догонку - Если я работаю с Access через ADO, каким синтаксическим правилам должны отвечать мои SQL-инструкции (непосредственно как в Access, или к-л. другим.) Я имею в виду всякие мелочи - скобки, пробелы и пр.


koks   (2002-03-26 17:31:00) [1]

Ыгы-гы-гы....


Johnmen   (2002-03-26 17:02:00) [2]

Ну можно еще ко всем своим именам добавлять некий префикс, например : KoksSIZE, KoksFILE, ... :))))


koks   (2002-03-26 16:58:00) [3]

Спасибо большое, действительно - проблема была в слове Size.
У меня даже Pivot - запрос с параметрами заработал (вот уж не ожидал ;))

Но все равно - если SIZE зарезервированное слово для Access, почему сама Access на него не ругается...

2 Johnmen - как я понял, основная практически ценная рекомендация - это последняя... Только сколько надо копий сломать пока появиться эта "чисто интуиция"...


Johnmen   (2002-03-26 16:43:00) [4]

Смотреть документацию по зарезервированным словам для конкретной БД.
Не использовать слова, кот.чисто интуитивно м.б.зарезерв-ми,
напр.FILE, FIELD, SIZE, ACCESS и т.д. и т.п.


koks   (2002-03-26 16:27:00) [5]

2 DiggerAbstract. У меня запрос к тестовой базе, в которой всего 30 записей...

2 Johnmen. OK! Но не могу понять - сама Access такой запрос выполняет.... Что имеется в виду под "синтаксисом БД" и где его посмотреть чтобы избежать подобного в будущем...

2 Aus - уже пробовал....


Johnmen   (2002-03-26 15:51:00) [6]

>koks © (26.03.02 15:33)
>просто убираю слово SIZE - все OK....

Уж сколько раз твердили миру....
Не используй в качестве имен своих объектов слова, совпадающие с синтаксисом БД !



DiggerAbstract   (2002-03-26 15:38:00) [7]

так все-таки, сколько, может у тебя просто TimeOut срабатывает


aus   (2002-03-26 15:35:00) [8]

Присваивай значения параметрам так:
Parameters[0].Value := SourceID
И еще имя таблицы не заключай в кавычки, не нужно это.

ПС
Не обязательно закрывать запрос перед изменением параметров, можно менять на ходу, а потом использовать requery.


koks   (2002-03-26 15:34:00) [9]

2 Dpetrovich ! Абсолютно...


koks   (2002-03-26 15:33:00) [10]

Како-то бред. Пишу:
SELECT SOURCE, SIZE, CUT, COLOR, CLARITY, PRICE
FROM [Polished_prices]
--> опять та же ошибка

просто убираю слово SIZE - все OK....

Подскажите, почему она (оно) на Size так неровно дышит.


DiggerAbstract   (2002-03-26 15:30:00) [11]

а сколько времени у тебя выполняется этот запрос?


asafr   (2002-03-26 15:07:00) [12]

По правилам Access можно просто писать Роlished_prices - попробуй без [].


DPetrovich   (2002-03-26 14:46:00) [13]

а если в компоненте adoqPrices Active=true поставить тоже самое?


koks   (2002-03-26 14:32:00) [14]

Конечно же, в моем коде строка WHERE такая:
WHERE (SOURCE=:Source) AND (SIZE=:Size) AND (Cut=:Cut)

<< Это меня уже тупит от всяких перестановок >>.

2 asafr: а по правилам Access надо писать [Роlished_prices] - так тоже не получается.


asafr   (2002-03-26 13:58:00) [15]

Не знаю, наверное глупо, но может "Polished_prices"
заменить на "Polished_prices"?
Когда работал с Access через ADO использовал синтаксис Access


Наверх

Титульная страница Поиск, карта сайта Написать письмо