Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

ADO + агрегирование (access)   Найти похожие ветки 

 
lexander   (2006-08-06 02:08) [0]

Ребята подскажите - почему когда я в параметр SQL компоненты  ADOQuery заношу запрос с присутствием любой функции агрегирования вылетает ошибка "Access violation at adress 1B041766 in module msjet40.dll". Приэтом запрос при нажатии RUN  все таки выполняется и продалжает работать. (Использую БД Access)

_______________________________________________________
DataModStudent.Table_sql_plat_sum.close;
DataModStudent.Table_sql_plat_sum.SQL.Clear;
DataModStudent.Table_sql_plat_sum.sql.Add("SELECT SUM(t_plat.suma) AS s");
--------------------------------------------------------------
Самое интересное я даже убрал процедуру OPEN - дает ошибку
Если убрать SUM - работает без исключительной ситуации...

Подскажите че делать!!!


 
Johnmen ©   (2006-08-06 02:26) [1]

Приводи строку подключения. sniknik тебе завтра расскажет...:)


 
lexander   (2006-08-06 02:35) [2]

Все мужики - отбой!
НАШЕЛ!

Это глюк в движке (ядке) компонент Jet... Access

Если запрос передать сразу целой строкой в параметр text то все работает!

Говорят там какой-то глюк что запрос начинает парсить еще построчно
не дожидаясь команды OPEN

я ж его через add передавал
____________________________________________________
Все равно спасибо за участие...!


 
sniknik ©   (2006-08-06 12:20) [3]

> Это глюк в движке (ядке) компонент Jet... Access
> ...
> я ж его через add передавал
это не глюк движка jet, это вообще не глюк ADO, это глюк компанента ADOQuery  который впрочем уже исправлен, в какомто из апдейтов дельфи (идет сборка запроса перед передачей).
у "родных" ADO-шных компанент запрос задается только одним куском, частичный способ перенесен из BDE (видать "as is" изначально) где он был нужен изза использования только коротких строк ( < 256 ), запрос в такой не напишеш.

вообще эти "компаненты для облегчения перехода" большая ошибка борланда... с ними одни проблемы, + неокрепшее сознание начинающих коверкают ;), а пользы ни какой.
чтобы знать что в них и как, надо понимать как работают основные, чего как раз пытаются сделать не нужным!? а если понимаеш основные то само собой ими уже пользоваться удобнее... нонсенс!
не, можно конечно и не понимая "тупо" пользоваться... а потом жаловаться на глюки, медленную их работу, ets. ладно, это так "крик души", не относяшийся к посту. просто столько раз говорилось и все одно упорно начинающие (да и не очень) их используют.

еще по "глюку", вы знаете что винда сама "глюк на глюке"? вот берем например любую функцию из ядра (kernel32.dll) которая на вход предполалагает указатель на какуюнибудь структуру/выделенную память, да и не дадим ее, т.е. без инициализации переменную туда передадим... будет AV. а  уж чего тогда говорить о других мелкосовтских продуктах на ней в основе написанных? не даем то что ожидается, а но в ответ возвращает ошибку возмутительно! должно бы догадаться что это мы примеривались/тренировались, в следующий раз дадим больше... ;о))))

p.s. только не рассматривайте последний абзац серьезно, это сарказм. ;о)


 
lexander   (2006-08-06 13:17) [4]

Спасибо за ответ!  :)
Поучительно... я больше работаю в связке PHP+MySql+ActiveX
А это вот пришлось написать клиент к однопользовательской базе данных Access... так что можно сказать это моя первая программа на Делфи с БД

Может будут какие-то практические советы как начинающему использовать БД в Делфи... меня впринципе интересует правильно  ли я выбрал компоненты (ядро) - ADO (Jet)?

Еще раз спасибо...!


 
sniknik ©   (2006-08-06 13:45) [5]

> Может будут какие-то практические советы как начинающему использовать БД в Делфи... меня впринципе интересует правильно  ли я
> выбрал компоненты (ядро) - ADO (Jet)?
убери с палитры ADO ADOTable, ADOQuery, ADOStoredProc... пользуйся тем что осталось.
никогда не прописывай строку конекта у компанента! всегда используй ADOConnecton.
несмотря на то что access локальная база, работай с ней как с клиент серверной, не ошибешся... (есть режим и локального/прямого доступа но пока не разберешся... избежиш "тормозов" и переделок)
поставь апдейты на дельфи.
читай хелп по jet (в поставке мс офиса JETSQL40.CHM)
если база предопределена (access) то правильно, это практически единственный "родной" вариант, остальные работают "через... э... него же" фактически, тем или иным образом. если рассматривается другая база то конкретно ничего сказать нельзя не узнав, что за база.


 
lexander   (2006-08-06 16:22) [6]

из этого списка япользуюсь только ADOQuer... и вот столкнулся опять с проблемой...

Edit_sql.SQL.text:="UPDATE t_stud SET otch = true WHERE t_stud.id_stud IN
(SELECT t_stud.id_stud FROM t_stud INNER JOIN t_plat ON t_stud.id_stud = t_plat.id_stud GROUP BY t_stud.id_stud HAVING (((Sum(t_plat.suma))<(Avg(t_stud.platm)*10))));";

Пишет что обнаруженны символы за пределлами инструкции SQL

Хотя оператор SELECT из этой конструкции я копировал в Access - он правильно возвращает список нужных мне id_stud


 
lexander   (2006-08-06 18:13) [7]

Все заработало... нашел ошибку...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
5-1140419056
DimaBr
2006-02-20 10:04
2006.10.08
Закрытие узла.


15-1158522329
Yegorchic
2006-09-17 23:45
2006.10.08
Что-то странное случилось с флэшкой...


3-1154353448
zdm
2006-07-31 17:44
2006.10.08
Импорт из ACCESS


15-1158235336
Still Swamp
2006-09-14 16:02
2006.10.08
Что можно использовать в качестве архиватора


10-1124092462
DimMih
2005-08-15 11:54
2006.10.08
Вставка изображения в AutoCad





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский