|
|
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток, давно работаю с базами MSSQL через компонент TADOQuery в Delphi, но вот незадача, сегодня собрал такой запрос, который благополучно работает в Managment Studio MSSQL, а вот через АДО почему-то не завелся. Managment Studio: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Delphi: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Текст здесь выровнял, для удобочитаемости. Ошибку такую говорит: qry1: Field 'DTime' not found Поставщик данных "Provider=SQLOLEDB.1". Я так понимаю построение запроса отличается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 13:54:40 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Попробуй в кавычки имя поля заключить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 14:04:05 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Может ADO зачем-то нужно это поле в части Select? Попробуй ради эксперимента добавь qry1.SQL.Add('DTime,') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 14:07:16 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Вот запрос, который прекрасно работает: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. но там данные все, что есть в выбранном периоде. А в запросе, что в топике, данные усредняются кратно часу (Условие выбора периода пока-что убрал). Если ставить кавычки, получаем: First chance exception at $73F0B802. Exception class EOleException with message 'Ошибка преобразования даты или времени из символьной строки'. Process XCChart.exe (9584) Если добавить поле "DTime" то выходит: First chance exception at $73F0B802. Exception class EOleException with message 'Столбец "XControl.dbo.TableX.DTime" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY'. Process XCChart.exe (4784) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 14:37:33 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
kokon_01> А в запросе, Проверь на всякий случай текст запроса перед Open (и попробуй выполнить его в SSMS). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 14:58:05 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
kokon_01Если добавить поле "DTime" то выходит: First chance exception at $73F0B802. Exception class EOleException with message 'Столбец "XControl.dbo.TableX.DTime" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY'. Process XCChart.exe (4784)Ну вообще логично. Ступил. Его ж ты на кусочки делишь для агрегации. Может пропробовать альяс таблице сделать и добавлять его к именам полей? Типа X.DTime ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 15:48:41 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Оказалась проблема совсем в другом. На форме есть "DBChart", для рисования графика, так вот в нём привязаны значения к полям по запросу с "чистыми данными" из БД. Вот он и хотел как оказалось поле "DTime", которого соответственно нет, во втором варианте запроса с алиасами и усреднением. В заблуждение ввело то, что данные совсем не попадали в DataSource, думал ну неправильные поля, так хоть DBGrid отобразил бы наличие данных, ан нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 16:07:34 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
kokon_01> В заблуждение ввело то, что ... не проверил текст запроса в SSMS, о чём я и говорил выше. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 16:14:07 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Дак в самом начале писал, что там его и создал изначально, потом перенес в делфи и вписал в "qry1.SQL.Add();" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 16:23:02 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
Интересно что отслеживал через SQL Server Profiler, все события в данной БД, так туда запрос приходил в нормальном состоянии, а в DataSource набор данных не возвращался. Видимо из-за ошибки возникающей в DBChart. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 16:26:34 |
|
||
|
MSSQL vs TADOQuery
|
|||
|---|---|---|---|
|
#18+
kokon_01> так туда запрос приходил в нормальном состоянии Ну, значит, не ADO был виноват. > а в DataSource набор данных не возвращался. > Видимо из-за ошибки возникающей в DBChart. С чего это в DataSource набор данных не попадал? Просто у тебя там события намешаны, наверное. Вообще, первое, что нужно делать при возникновении "сложной" проблемы/ошибки (которую не можешь с ходу решить и тем более понять причины) - локализовать её. И лучший способ сделать это - в чистом проекте. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2017, 17:37:03 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39519919&tid=2041837]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 446ms |

| 0 / 0 |
