Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 4

Ошибка при открытии ADOQuery

19.02.2015, 14:34. Показов 1298. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В коде программы формируется объемный sql запрос

Начало такое:
Delphi
1
2
3
 Form_Main.Q_Prognoz_MinMax_P.Close;
 Form_Main.Q_Prognoz_MinMax_P.SQL.Clear;
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('SET DATEFORMAT dmy;');
Окончание такое:


Delphi
1
2
3
4
5
6
7
8
9
10
11
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('insert into #TmpTbl_'+IntToStr(id_esys)+'  ([val_], [dt], [name])');
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('select top 1 [val_], [dt], ''1'' from #TmpTbl_'+IntToStr(id_esys)+' where [val_] is not null order by [val_]');
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('insert into #TmpTbl_'+IntToStr(id_esys)+'  ([val_], [dt], [name])');
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('select top 1 [val_], [dt], ''1'' from #TmpTbl_'+IntToStr(id_esys)+' where [val_] is not null order by [val_] desc');
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('delete  from #TmpTbl_'+IntToStr(id_esys)+' where [name] not like ''1'';');
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('select * from #TmpTbl_'+IntToStr(id_esys)+';');
 Form_Main.Q_Prognoz_MinMax_P.SQL.Add('DROP TABLE #TmpTbl_'+IntToStr(id_esys)+';');
 
 Form_Main.Q_Prognoz_MinMax_P.SQL.SaveToFile('!_Q_Prognoz_MinMax_P.SQL');
 
 Form_Main.Q_Prognoz_MinMax_P.Open;
Как видно из запроса там используется временная таблица, из которой и происходит окончательная выборка данных.

Но при обработке Form_Main.Q_Prognoz_MinMax_P.Open выскакивает ошибка invalid column name 'val_'

Причем строкой Form_Main.Q_Prognoz_MinMax_P.SQL.SaveToF ile('!_Q_Prognoz_MinMax_P.SQL'); формируется текст запроса, и вот этот текст в management studio отрабатывает без ошибок.

Всю голову переломал.
Есть идеи из-за чего это может происходить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2015, 14:34
Ответы с готовыми решениями:

Ошибка при закрытии ADOQuery
вот такой код вызывает ошибку, если запрос не возвратил ни одной записи: ADOQuery1.SQL.Append('select distinct comp_name from log'); ...

Ошибка при активации ADOQuery
при нажатии activ>true вылазиет табличка (ADOQuery1:Field'Температура'not found.) уже все перепробывал.. в чем может быть...

Ошибка при удалении строки из Adoquery
Доброе время суток, есть база данных подключённая к dbgrid через adoquery и datasource по запросу в dbgrid выходит сводная таблица, куда я...

5
0 / 0 / 1
Регистрация: 13.11.2014
Сообщений: 35
19.02.2015, 15:04
ему не нравится имя этого столбца. Проверьте правильность написания его и сверьте с БД
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
19.02.2015, 15:33
Причем строкой Form_Main.Q_Prognoz_MinMax_P.SQL.SaveToF ile('!_Q_Prognoz_MinMax_P.SQL'); формируется текст запроса
Утверждение ложное. Эта строка всего лишь записывает текст запрос во внешний файл и никакого отношения ни к ошибке, ни к самому запросу не имеет.
А ошибка может быть связана с синтаксической проверкой запроса в АДО перед отправкой его на сервер.
Можно попробовать отключить проверку, установив ParamCheck в False.
Во всяком случае, что-то надо пытаться делать.
0
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 4
19.02.2015, 16:06  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
Утверждение ложное. Эта строка всего лишь записывает текст запрос во внешний файл и никакого отношения ни к ошибке, ни к самому запросу не имеет.
Давайте я процитирую самого себя Я писал:
Причем строкой Form_Main.Q_Prognoz_MinMax_P.SQL.SaveToF ile('!_Q_Prognoz_MinMax_P.SQL'); формируется текст запроса, и вот этот текст в management studio отрабатывает без ошибок.
Что значит следующее. Я беру из сформированного строкой Form_Main.Q_Prognoz_MinMax_P.SQL.SaveToF ile('!_Q_Prognoz_MinMax_P.SQL'); файла текст запроса. Помещаю этот текст без изменений в окно management studio, запускаю его и получаю результат. В Delphi этот запрос вызывает ошибку.

Насчет отключения проверки синтаксиса я завтра проверю.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
19.02.2015, 16:44
Ну да, не понятно было из начального объяснения где формируется текст запроса, если он к моменту вызова метода SaveToFile уже был сформирован. Теперь ясно о чем речь.

Добавлено через 22 минуты
Есть еще подозрение, что мешается последняя команда (DROP TABLE...).
Временную таблицу лучше пристрелить после того как клиентом будет обработан набор данных, возращенных по селективному запросу в предыдущей команде. Ну, или сделать это другим компонентом.

Добавлено через 3 минуты
отключения проверки синтаксиса
Не совсем это проверка синтаксиса (тоже немного не так сформулировал). Это проверка встречающихся в запросе параметров, но именно она часто мешает выполнять сложные запросы.
0
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 4
20.02.2015, 08:20  [ТС]
И имя поля с подчеркиванием (было val, стало val_) и последнюю строку с убиванием таблицы и заключение имен полей в квадратные скобки (было val_ стало [val_]) я внес после того как началась дурь с ошибкой.
А почему она началась.
До усложнения задачи весь текст запроса был в свойствах ADOQuery.SQL прописан на визуальном уровне, когда рисовались компоненты формы, но после пришлось текст запроса формировать динамически и запихивать его методом ADOQuery.SQLюAdd('').

Добавлено через 13 часов 52 минуты
Походу решилась проблема.
Думаю, что эту проблемку можно назвать "глюк Дельфийский обыкновенный"

После переименования в запросе временной таблички с "#TmpTbl_0" на "#TmpTbl0" все стало работать.

Причем, если этот запрос исполнять из Management Studio, то ему пофигу как обзывается временная табличка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2015, 08:20
Помогаю со студенческими работами здесь

Ошибка с ADOQuery при организации поиска
Привет всем! Нужна помощь! Пытаюсь сделать поиск в таблице, источником которой является ADOQuery, через поле Edin и кнопку: ...

Ошибка при двойной выборке в sql запросе adoquery
В var задаю переменные x3,x4 string и a3,a4 integer; x3:=edit4.text; a3:=strtoint(x3); x4:=edit5.text; a4:=strtoint(x4); ...

Ошибка при открытии запроса
Добрый день. Возникла у меня одна интересная проблема. Написал я один модуль, проверил работает как надо, суть его в том что при создании...

Ошибка при открытии базы данных
Здавствуйте, помогите с программой, пожалуйста. Я пытаюсь создать школьную тестирующую систему с выводом результатов за зачеты в базу...

Ошибка при открытии программы на других компьютерах
Текст ошибки(An error occurred while attempting to initialize the Borland Database Engine (error $2108)) Если можно подскажите разные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru