powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выполнение запроса запущенного разными способами
3 сообщений из 3, страница 1 из 1
Выполнение запроса запущенного разными способами
    #39438436
MikeLed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Имеем запрос на добавление с имитацией СУММУСЛИ:

Код: vbnet
1.
2.
3.
strSQL="INSERT INTO tbl_TcIMP ( NumBase, ShpCount, ShpCountU, PrcSum, PrcSumU, WPS, WPSU) 
SELECT tbl_TS.shpConsInNum, Count(tbl_TS.shpid) AS Ord1, Sum(IIf([shpReal]=0,0,1)) AS OrdUch, Sum(tbl_TS.shpPrc) AS Prc, Sum(IIf([shpReal]=0,0,[shpPrc])) AS prcU, Sum(tbl_TS.shpWP) AS [WPS], Sum(IIf([shpReal]=0,0,[shpWP])) AS WPSU FROM tbl_TS
GROUP BY tbl_TS.shpConsInNum HAVING tbl_TS.shpConsInNum<>''"


Или можно по другому:
Вариант 2: (в этом запросе «-» [минус] перед SUM обязателен.
Код: vbnet
1.
2.
INSERT INTO tbl_TcIMP ( NumBase, ShpCount, ShpCountU, PrcSum, PrcSumU, WPS, WPSU )
SELECT tbl_TS.shpConsInNum, Count(tbl_TS.shpNumber) AS OrdCount, -Sum([shpID]/[shpID]*([shpReal]>0)) AS OrdUch, Sum(tbl_TS.shpPrc) AS [prcS], -Sum([shpPrc]*([shpReal]>0)) AS prcUch, Sum(tbl_TS.shpWP) AS [WPS], -Sum([shpWP]*([shpReal]>0)) AS WPSU FROM tbl_TS GROUP BY tbl_TS.shpConsInNum HAVING tbl_TS.shpConsInNum<>''"


Вариант 1 на локальной БД на 10000 зап. Выполняется быстрее !!!

Убрал из запросов условие WHERE и еще кое-что правил, так что приведенный запрос может быть не совсем корректен.
Реально запрос рабочий.

Запускаем разными способами оба варианта:
Код: vbnet
1.
2.
3.
1. CurrentProject.Connection.Execute strSQL
2. CurrentDB.Execute strSQL
3. DoCmd.RunSQL strSQL


Все три способа все поля кромке вычисляемых по условию формируются корректно, а три поля вычисляемых по условию = 0.

Меняем подход:
Код: vbnet
1.
2.
3.
    CurrentDb.CreateQueryDef "sql_temp", strSQL
    DoCmd.OpenQuery "sql_temp"
    DoCmd.DeleteObject acQuery, "sql_temp"


Имеем то что хотели. все поля сформированы и сформированы корректно.

А что не нравится аксесу (vba) в первоначальных 3-х вариантах?
...
Рейтинг: 0 / 0
Выполнение запроса запущенного разными способами
    #39438452
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А отформатировать - не?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
INSERT INTO tbl_TcIMP ( NumBase, ShpCount, ShpCountU, PrcSum, PrcSumU, WPS, WPSU) 
SELECT tbl_TS.shpConsInNum
     , Count(tbl_TS.shpid) AS Ord1
     , Sum(IIf([shpReal]=0,0,1)) AS OrdUch
     , Sum(tbl_TS.shpPrc) AS Prc
     , Sum(IIf([shpReal]=0,0,[shpPrc])) AS prcU
     , Sum(tbl_TS.shpWP) AS [WPS]
     , Sum(IIf([shpReal]=0,0,[shpWP])) AS WPSU 
FROM tbl_TS
GROUP BY tbl_TS.shpConsInNum 
HAVING tbl_TS.shpConsInNum<>''



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
INSERT INTO tbl_TcIMP ( NumBase, ShpCount, ShpCountU, PrcSum, PrcSumU, WPS, WPSU )
SELECT tbl_TS.shpConsInNum
     , Count(tbl_TS.shpNumber) AS OrdCount
     , -Sum([shpID]/[shpID]*([shpReal]>0)) AS OrdUch
     , Sum(tbl_TS.shpPrc) AS [prcS]
     , -Sum([shpPrc]*([shpReal]>0)) AS prcUch
     , Sum(tbl_TS.shpWP) AS [WPS]
     , -Sum([shpWP]*([shpReal]>0)) AS WPSU 
FROM tbl_TS 
GROUP BY tbl_TS.shpConsInNum 
HAVING tbl_TS.shpConsInNum<>''


Вот это - как?

Далее - условие переместите из HAVING во WHERE, зачем заставлять запрос делать лишнюю работу?

Алиасы в секции SELECT - лишние. Всё равно они игнорируются.

Часть полей имеет алиасы таблицы, часть нет - почему? Изменится ли поведение, если всем полям проставить алиасы? например

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
INSERT INTO tbl_TcIMP ( NumBase, ShpCount, ShpCountU, PrcSum, PrcSumU, WPS, WPSU) 
SELECT tbl_TS.shpConsInNum
     , Count(tbl_TS.shpid)
     , Sum(IIf(tbl_TS.[shpReal]=0,0,1))
     , Sum(tbl_TS.shpPrc)
     , Sum(IIf(tbl_TS.[shpReal]=0,0,tbl_TS.[shpPrc]))
     , Sum(tbl_TS.shpWP)
     , Sum(IIf(tbl_TS.[shpReal]=0,0,tbl_TS.[shpWP]))
FROM tbl_TS
WHERE tbl_TS.shpConsInNum<>''
GROUP BY tbl_TS.shpConsInNum 
...
Рейтинг: 0 / 0
Выполнение запроса запущенного разными способами
    #39438461
MikeLed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снимаю - некорректный эксперимент - все работает во всех вариантах.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выполнение запроса запущенного разными способами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]