LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Подсчет н...
 Тема: Подсчет не в столбец
 
 15.06.2007 21:02:49
Валерий3
43 сообщения


Тема: Подсчет не в столбец
Доброе время суток!
У меня громадная просьба. Пытаюсь написать что-то типа табельного учета. Остановился на том, что не могу подсчитать данные по дням
Иванов 8 8 8 7 8
Петров 8 8 8 8 8
Как получить
Иванов: 39
Петров: 40

заранее спасибо


P.S. Общие вопросы по базе данных
Автор: Валерий от 02.08.2002 6:05:43 Источник ...
 15.06.2007 21:02:49
Николай3
48 сообщения


RE: Подсчет не в столбец
Ну наверное сложить :)
Где эти данные, как хранятся.
Если это - строка с перечислением дней, то можно вместо пробелов поствить "+" и выполнить EVal(строка-выражение)


P.S. Общие вопросы по базе данных
Автор: Николай от 02.08.2002 6:29:05 Источник ...
 15.06.2007 21:02:49
Валерий3
43 сообщения


RE: Подсчет не в столбец
Сорри, я не правильно выразился.
Мне нужно отобрать в строке 4 по 8 и 1 по 7 и т.д.
Иванов 8 8 8 7 8 Итого 4 по 8 и 1 по 7
Петров 8 8 8 8 8 Итого 5 по 8
Так точнее


P.S. Общие вопросы по базе данных
Автор: Валерий от 02.08.2002 7:47:33 Источник ...
 15.06.2007 21:02:49
All
4316 сообщения
1-ый


RE: Подсчет не в столбец
Для начала необходимо получить набор значений для каждой строки, затем отсортировать.
пример:
Создаем в модуле функцию

Function Result(strIn As String) As String
Dim rst As New ADODB.Recordset
Dim aIn() As String
Dim i As Long
Dim sret As String
Dim y As Long, z As Long
'получаем массив чисел из переданной строки
aIn = Split(strIn, ";")
'заполняем recordset
rst.Fields.Append "V", adBigInt
rst.Open
For i = 0 To UBound(aIn())
rst.AddNew
rst!V = Val(aIn(i))
Next i
rst.MoveFirst
'сортируем по убыванию
rst.Sort = "V DESC"
y = rst!V
z = 0
sret = "Итого "
'подсчитываем сколько чего
For i = 0 To rst.RecordCount - 1
If rst!V = y Then
z = z + 1
Else
If z > 0 Then sret = sret & z & " по " & y & " и "
y = rst!V
z = 0
rst.MovePrevious
i = i - 1
End If
rst.MoveNext
Next i
If z > 0 Then sret = sret & z & " по " & y & " и "
'убираем последнюю " и "
sret = Left(sret, Len(sret) - 3)
Result = sret
End Function

Создаем запрос

SELECT TD.ID, TD.NAME, Result([D1] & ";" & [D2] & ";" & [D3] & ";" & [D4] & ";" & [D5]) AS V2
FROM TD;

где D1-D5 - соотв поля таблицы с кол-ом часов



P.S. Общие вопросы по базе данных
Автор: Николай от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Подсчет н...
ПоискПоиск  Список форумовСписок форумов  
right