|
не выполняется SQL запрос | ☑ | ||
---|---|---|---|---|
0
Droning1C
29.05.21
✎
11:22
|
ДатаНачала = Формат(ДатаНачалаЗапроса,"ДФ='dd-MM-yy HH:mm:ss'");
ДатаОкончания = Формат(ДатаОкончанияЗапроса,"ДФ='dd-MM-yy HH:mm:ss'"); СтрКоманда = "DECLARE @datetimeStart datetime = '" + ДатаНачала + "';" + " |DECLARE @datetimeEnd datetime = '" + ДатаОкончания + "';" + " |SELECT CASE [TARGET_PLACE] When '1011100' Then 'Пила1' When '1011200' Then 'Пила2' End AS Пила |,[MATERIAL_NO] as АртикулШеллинг |,SUM(QUANTITY) as Количество |FROM [StorageManager].[dbo].[T3_MATERIALMOVEMENT] |Where [SAVE_DATETIME] >= @datetimeStart and [SAVE_DATETIME] <= @datetimeEnd and [TARGET_PLACE] in ('1011100','1011200') |Group by [TARGET_PLACE],[MATERIAL_NO] |Order by [MATERIAL_NO]"; Попытка Попытка adocon=Новый COMОбъект("ADODB.Connection"); adocon.Open("Provider=SQLOLEDB.1;Data Source=192.168.62.13\sqlexpress;Initial Catalog=StorageManager;User Id=1;Password=123"); ado=Новый COMОбъект("ADODB.Command"); ado.ActiveConnection=adocon; тз=новый таблицазначений; ado.commandtext=СтрКоманда; выборка=ado.execute(); Собственно, на последней строке срабатывает исключение. В чем может быть проблема? |
|||
1
Droning1C
29.05.21
✎
11:24
|
Сорри за строчки
Попытка Попытка Забыл удалить. |
|||
2
aka MIK
29.05.21
✎
11:27
|
Проблема в запросе, это же очевидно )
|
|||
3
ДенисЧ
29.05.21
✎
11:30
|
Главное, никому не говори сообщение об ошибке. Сами будем догадываться...
|
|||
4
acanta
29.05.21
✎
11:31
|
Круто!
|
|||
5
Droning1C
29.05.21
✎
12:11
|
(3) сообщение об ошибке выдает ""
|
|||
6
Droning1C
29.05.21
✎
12:11
|
(2) запрос при вызове в субд выдает норм результат
|
|||
7
Droning1C
29.05.21
✎
12:14
|
менял синонимы на инглишь, тоже не помогает.
|
|||
8
Droning1C
29.05.21
✎
12:15
|
ДатаНачала = "'" + Формат(ДатаНачалаЗапроса,"ДФ='dd-MM-yy HH:mm:ss'") + "'";
ДатаОкончания = "'" + Формат(ДатаОкончанияЗапроса,"ДФ='dd-MM-yy HH:mm:ss'") + "'"; СтрКоманда = "SELECT CASE [TARGET_PLACE] When '1011100' Then 'Пила1' When '1011200' Then 'Пила2' End AS Saw |,[MATERIAL_NO] as Art |,SUM(QUANTITY) as Quantity |FROM [StorageManager].[dbo].[T3_MATERIALMOVEMENT] |Where [SAVE_DATETIME] >= ДатаНачала and [SAVE_DATETIME] <= ДатаОкончания and [TARGET_PLACE] in ('1011100','1011200') |Group by [TARGET_PLACE],[MATERIAL_NO] |Order by [MATERIAL_NO]"; СтрКоманда = СтрЗаменить(СтрКоманда,"ДатаНачала",ДатаНачала); СтрКоманда = СтрЗаменить(СтрКоманда,"ДатаОкончания",ДатаОкончания); Без DECLARE тоже не хочет |
|||
9
ДенисЧ
29.05.21
✎
12:19
|
Попробуй формат даты задать "ДФ=yyyyMMdd"
|
|||
10
Droning1C
29.05.21
✎
12:26
|
(9) мне надо с временем(
|
|||
11
acht
29.05.21
✎
12:27
|
(10) yyyyMMddHHmmss
|
|||
12
Sserj
29.05.21
✎
14:10
|
Если у тебя SQL ниже 2016 то нужно сначала DECLARE а потом SET:
DECLARE @datetimeStart datetime SET datetime = " + ДатаНачала + " |
|||
13
Sserj
29.05.21
✎
14:11
|
+(12) тьфу:
DECLARE @datetimeStart datetime SET @datetimeStart = " + ДатаНачала + " |
|||
14
mistеr
29.05.21
✎
14:28
|
(5) Ты получи полный текст ошибки, потом приходи.
|
|||
15
youalex
29.05.21
✎
15:02
|
(0)
DECLARE - вообще отдельная команда, не помню, чтобы ADO умел выполнять пакетные запросы. Проще литералами вставлять непосредственно в текст скрипта |
|||
16
acht
29.05.21
✎
15:04
|
(12) Чо?
|
|||
17
acht
29.05.21
✎
15:08
|
(15) Пакетные запросы (и поддержка .NextRowset) в ADO на усмотрение провайдера.
MSSQL - умеет, любит, практикует. Только надо где-то в начале сесии SET NOCOUNT ON воткнуть, иначе строка "100500 rows selected" будет его сбивать и проводить к закрытому rowset'у |
|||
18
acht
29.05.21
✎
15:10
|
(14) +Многа
Сейчас окажется, что там соединение не открыто, авторизация не пройдена, мы вообще к другому серверу ломимся. |
|||
19
Droning1C
29.05.21
✎
15:29
|
(14) с текстом ошибки я и сам справлюсь
|
|||
20
Droning1C
29.05.21
✎
15:29
|
ДатаНачала = "'" + Формат(НачалоПериода,"ДФ='dd/MM/yyyy HH:mm:ss'") + "'";
ДатаОкончания = "'" + Формат(КонецПериода,"ДФ='dd/MM/yyyy HH:mm:ss'") + "'"; // СтрКоманда = "SELECT CASE [TARGET_PLACE] When '1011100' Then 'Schelling_fh4_1(241.339)' When '1011200' Then 'Schelling_fh4_2(241.340)' End AS Saw |,[MATERIAL_NO] as Art |,SUM(QUANTITY) as Quantity |FROM [StorageManager].[dbo].[T3_MATERIALMOVEMENT] |Where [SAVE_DATETIME] >= CONVERT(datetime, ДатаНачала, 104) and [SAVE_DATETIME] <= CONVERT(datetime, ДатаОкончания, 104) and [TARGET_PLACE] in ('1011100','1011200') |Group by [TARGET_PLACE],[MATERIAL_NO] |Order by [MATERIAL_NO]"; СтрКоманда = СтрЗаменить(СтрКоманда,"ДатаНачала",ДатаНачала); СтрКоманда = СтрЗаменить(СтрКоманда,"ДатаОкончания",ДатаОкончания); |
|||
21
Droning1C
29.05.21
✎
15:30
|
вот так заработало
|
|||
22
youalex
29.05.21
✎
17:12
|
(17) Спасибо, добавлю себе в избранное) . Но литералами, или при необходимости через exec() - проще и нативнее.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |