powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / клон Me.Recordset после фильтров
10 сообщений из 35, страница 2 из 2
клон Me.Recordset после фильтров
    #39937345
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Может я чё не понимаю:а почему не воспользоваться тривиальной Dsum?
судя по всем этим "dbo" это adp
Так что Dsum в запросе не получится использовать

А вообще, задача ТС решается одним запросом, без всего этого "бреда" с рекордсетами, массивами и фильтрами, типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
;with cte as (
select
  план 
  ,sum(план)over(partition by маршрут) as x1
  ,row_numder()over(partition by маршрут order by ...) as x2
from ... )
update cte set план = case when x2=1 then x1 else 0 end
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937346
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
sdku
Может я чё не понимаю:а почему не воспользоваться тривиальной Dsum?
судя по всем этим "dbo" это adp
Так что Dsum в запросе не получится использовать

А вообще, задача ТС решается одним запросом, без всего этого "бреда" с рекордсетами, массивами и фильтрами, типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
;with cte as (
select
  план 
  ,sum(план)over(partition by маршрут) as x1
  ,row_number()over(partition by маршрут order by ...) as x2
from ... )
update cte set план = case when x2=1 then x1 else 0 end

...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937494
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elena Don
.....суммирую данные по одному из полей , далее хочу полученную сумму присвоить полю...
Для этого запрос не нужен. В Ваше поле запишется сумма по полю cтоимость доставки из таблицы "Заказы" для записей в которых страна получателя = Литва и дата исполнения > 1-1-95
Код: vbnet
1.
Ме.ВашеПоле = DSum("[cтоимость доставки]", "Заказы","[страна получателя] = 'Литва' AND [дата исполнения] > #1-1-95#")
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937710
Elena Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Может я чё не понимаю:а почему не воспользоваться тривиальной Dsum?


Я не спорю, можно и DSum, но вопрос не в этом. Вопрос в том. что не хочет в фильтре менять значение поля
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937751
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elena Don
Вопрос в том. что не хочет в фильтре менять значение поля
попробуй задать для rstSuppliers тип курсора явно.
adOpenStatic для начала
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937795
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elena Don,
A как Вы определяете верхнюю границу в цикле FOR?(у Вас там коды символов-смените раскладку)
Думаю что-то про RecordCount,который не даст верный результат без обращения к последней записи набора (чего не наблюдается)
По моему одна строчка кода порацинальней будет чем десяток с большим хвостиком
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937855
Elena Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Elena Don,
A как Вы определяете верхнюю границу в цикле FOR?(у Вас там коды символов-смените раскладку)
Думаю что-то про RecordCount,который не даст верный результат без обращения к последней записи набора (чего не наблюдается)
По моему одна строчка кода порацинальней будет чем десяток с большим хвостиком


Вот код с правильной раскладкой

strSQL = " SELECT [№маршрута], АС, режим, График, План, Перевозчик, Месяц, [Код режима], [1], [2], [3], [4], [5], [6], [7], " & _
" [8], [9], [10], [11], [12], [13], [14], [15],[16] , [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], ИТОГИ, год, код_м, Перевозчик1 " & _
" FROM dbo.[_Совместная работа ИТОГИ новая графики] " & _
" where dbo.[_Совместная работа ИТОГИ новая графики].[№маршрута] = '" & Поле79 & "' and код_м = " & kod_m & " & _
"ORDER BY График "
Set rstSuppliers = New ADODB.Recordset
rstSuppliers.CursorLocation = adUseClient
rstSuppliers.Open strSQL, CurrentProject.Connection, , adLockOptimistic ' набор записей по маршруту за определенную дату



strSQL1 = "SELECT [Количество графиков], [№Маршрута]FROM dbo.[Перечень маршрутов] WHERE [№Маршрута] = '" & Поле79 & "'"

Set rst = New ADODB.Recordset
rst.Open strSQL1, CurrentProject.Connection, , adLockOptimistic ' определяем количество графиков на маршруте

For x = 1 To rst![Количество графиков] 'цикл по графикам
rstSuppliers.Filter = "График=" & x ' фильтр по графику

If rstSuppliers.RecordCount > 1 Then
ReDim rsRec(rstSuppliers.RecordCount) As Integer

rstSuppliers.MoveFirst
i = 1
Do Until rstSuppliers.EOF
' записываем в массив значение планов по графку

rsRec(i) = rstSuppliers![План]
P = P + rsRec(i)
i = i + 1
rstSuppliers.MoveNext

Loop

Задача состоит в том, чтобы просуммировать план и факт рейсов для машин работавших по одному и тому же графику
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937868
Elena Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elena Don
sdku
Elena Don,
A как Вы определяете верхнюю границу в цикле FOR?(у Вас там коды символов-смените раскладку)
Думаю что-то про RecordCount,который не даст верный результат без обращения к последней записи набора (чего не наблюдается)
По моему одна строчка кода порацинальней будет чем десяток с большим хвостиком


Вот код с правильной раскладкой

strSQL = " SELECT [№маршрута], АС, режим, График, План, Перевозчик, Месяц, [Код режима], [1], [2], [3], [4], [5], [6], [7], " & _
" [8], [9], [10], [11], [12], [13], [14], [15],[16] , [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], ИТОГИ, год, код_м, Перевозчик1 " & _
" FROM dbo.[_Совместная работа ИТОГИ новая графики] " & _
" where dbo.[_Совместная работа ИТОГИ новая графики].[№маршрута] = '" & Поле79 & "' and код_м = " & kod_m & " & _
"ORDER BY График "
Set rstSuppliers = New ADODB.Recordset
rstSuppliers.CursorLocation = adUseClient
rstSuppliers.Open strSQL, CurrentProject.Connection, , adLockOptimistic ' набор записей по маршруту за определенную дату



strSQL1 = "SELECT [Количество графиков], [№Маршрута]FROM dbo.[Перечень маршрутов] WHERE [№Маршрута] = '" & Поле79 & "'"

Set rst = New ADODB.Recordset
rst.Open strSQL1, CurrentProject.Connection, , adLockOptimistic ' определяем количество графиков на маршруте

For x = 1 To rst![Количество графиков] 'цикл по графикам
rstSuppliers.Filter = "График=" & x ' фильтр по графику

If rstSuppliers.RecordCount > 1 Then
ReDim rsRec(rstSuppliers.RecordCount) As Integer

rstSuppliers.MoveFirst
i = 1
Do Until rstSuppliers.EOF
' записываем в массив значение планов по графку

rsRec(i) = rstSuppliers![План]
P = P + rsRec(i)
i = i + 1
rstSuppliers.MoveNext

Loop

Задача состоит в том, чтобы просуммировать план и факт рейсов для машин работавших по одному и тому же графику

Эта часть кода у меня работает, а вот дальше я хочу первой из машин, работавших на одном графике проставить полученную сумму плана, а остальным машинам план либо 0 , либо пустое поле.

rstSuppliers.MoveFirst

rstSuppliers![План] = P
Вот здесь у меня и затыкается

'Debug.Print strSQL
rstSuppliers.Update
rstSuppliers.MoveNext
Do Until rstSuppliers.EOF
rstSuppliers![План] = Null
rstSuppliers.Update
Loop
перестает видеть мой rstSuppliers
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39937939
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elena Don

....Задача состоит в том, чтобы просуммировать план и факт рейсов для машин работавших по одному и тому же графику
Поясните в чем выражается "план и факт" рейсов-в их количестве или объеме перевезенного груза и какова суть работы машин по какому-то графику(что представляет из себя "график")
я смутно подозреваю что надо взглянуть на схему БД и четко уяснить решаемую Вами задачу
...
Рейтинг: 0 / 0
клон Me.Recordset после фильтров
    #39938084
Elena Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Elena Don

....Задача состоит в том, чтобы просуммировать план и факт рейсов для машин работавших по одному и тому же графику
Поясните в чем выражается "план и факт" рейсов-в их количестве или объеме перевезенного груза и какова суть работы машин по какому-то графику(что представляет из себя "график")
я смутно подозреваю что надо взглянуть на схему БД и четко уяснить решаемую Вами задачу

В предыдущем моем сообщении я привела скриншот формы. План обведенный красным нужно проссумировать и Лысенко поставить 220, а Румак 0. Так и для остальных машин работавших по 3 , 4 и .тд. графикам. Первоначально в форме стоит план взятый за день умноженный на количество отработанных дней.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / клон Me.Recordset после фильтров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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