Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2011, 14:17   #1
mortal2010
Пользователь
 
Регистрация: 20.01.2011
Сообщений: 18
По умолчанию итоговый столбец по строкам таблицы

Может кто поможет: есть таблица (данные вносятся из формы, где эта же таблица является подчиненной формой). Таблица вида:

ФИО _____П1 П2 П3 П4 П5 ...П31 Итого_к Итого_в
Семен____ к в в в к в___________2 ______ 3
Вася ____ в к к - - - ___________2 ______ 1
Федя ____ к в к к в к___________4 ______ 2
...

Грубо говоря это табель месяца учета рабочего времени, коммандировок, выходных, больничных и т.д.
Базу я сделал. Осталось получить статистические данные: в конце каждой строки с именем сотрудника нужно создать результирующее поле, в котором учитывалось бы сколько дней человек присутствовал, болел, выходной и т.д для каждого типа дней свое поле (Итого_к, Итого_в).

Я пробовал в коде VBA c помощью типа recordset и его свойства Fields в цикле прогнать каждую строку, но че-то не то получается.

Пробовал просто в цикле с обращением к полю на подчиненной форме

Private Sub Поле11_Change()
Dim a As Integer
Me.tabel.Form.[31].ColumnHidden = False
Me.tabel.Form.[30].ColumnHidden = False
Me.tabel.Form.[29].ColumnHidden = False
a = Daycount(Me.Поле11, Me.Поле5)
If a < 31 Then Me.tabel.Form.[31].ColumnHidden = True
If a < 30 Then Me.tabel.Form.[30].ColumnHidden = True
If a < 29 Then Me.tabel.Form.[29].ColumnHidden = True
MsgBox (a)
'------------------------------------------------------
Dim kom, k As Integer
kom = 0
For k = 1 To a
If Me.tabel.Form.[& k] = "к" Then kom = kom + 1
Next k
Me.tabel.Form.[Komm] = kom
Me.Requery
Me.Refresh
End Sub
- тоже не катит.
Базу скинул - может легче будет понять задачу, может кто-то что для себя подчеркнет или на типовые ошибки мне укажет(первый раз в Access лабаю).
Самое главное получить "построковую" статистику для каждого сотрудника.
Заранее спасибо.
Вложения
Тип файла: zip tabel.zip (680.5 Кб, 22 просмотров)
mortal2010 вне форума Ответить с цитированием
Старый 25.01.2011, 17:35   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Если не возвращаетесь, значит не очень то и было нужно...
До свидания
OlegVE вне форума Ответить с цитированием
Старый 26.01.2011, 09:46   #3
mortal2010
Пользователь
 
Регистрация: 20.01.2011
Сообщений: 18
По умолчанию

Стоп,стоп,стоп...
Здравствуйте!!!
Выслушаю Вас с удовольствием.
Проверяю на наличие ответов каждый час (иногда и раньше)
Просто никто не отвечает - я и молчу)
mortal2010 вне форума Ответить с цитированием
Старый 26.01.2011, 15:24   #4
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте

tblТаблицаДляСчёта
==============
ФИО _____П1 П2 П3 П4 П5
Семен____ в к к - -
Вася ____ к в в в к
Федя ____ к в к к в


qrytblТаблицаДляСчётаCOUNT
=======================
1. Сам запрос, с необходимой нам обработкой (MyCOUNT)
Код:
SELECT tblТаблицаДляСчёта.ФИО, tblТаблицаДляСчёта.П1, tblТаблицаДляСчёта.П2, 
tblТаблицаДляСчёта.П3, tblТаблицаДляСчёта.П4, tblТаблицаДляСчёта.П5, 
MyCOUNT("tblТаблицаДляСчёта.ФИО",tblТаблицаДляСчёта.ФИО,"к",1,5) AS Итого_к, 
MyCOUNT("tblТаблицаДляСчёта.ФИО",tblТаблицаДляСчёта.ФИО,"в",1,5) AS Итого_в, 
MyCOUNT("tblТаблицаДляСчёта.ФИО",tblТаблицаДляСчёта.ФИО,"-",1,5) AS [Итого_-]
FROM tblТаблицаДляСчёта;
2. То, что он возвращает:
ФИО _____П1 П2 П3 П4 П5 Итого_к Итого_в Итого_-
Семен____ в к к - - _______2 ______ 1 ______ 2
Вася ____ к в в в к _______2 ______ 3 ______ 0
Федя ____ к в к к в _______3 ______ 2 ______ 0


qrytblТаблицаДляСчёта (пригодится в коде VBA)
==================
Выбирает все записи из понятно какой таблицы.
В нём только SELECT и FROM !!!


Код в модуле VBA (у меня установлена ссылка на DAO)
==============
Код:
Function MyCOUNT(ID_FieldName As String, ID_ As Variant, FindIt As String, FieldStart, FieldEnd As Integer) As Integer
    Dim Rst As Recordset
    Dim i As Integer
    Dim qr As QueryDef
    Dim strSQL As String
    
    Set qr = CurrentDb.QueryDefs("qrytblТаблицаДляСчёта")
    strSQL = qr.SQL
    qr.Close
    
    strSQL = Replace(strSQL, ";", "")
    strSQL = strSQL & " WHERE " & ID_FieldName & " = " & """" & ID_ & """" & ";"
    
    Set Rst = CurrentDb.OpenRecordset(strSQL)
   

       
    MyCOUNT = 0
    For i = FieldStart To FieldEnd
      If Rst.Fields(i).Value = FindIt Then MyCOUNT = MyCOUNT + 1
    Next i
    
    Rst.Close
End Function
До свидания.

P.S. Может есть и лучший вариант, но этот работает (в Access 2002 (XP)).

P.P.S.
Цитата:
Сообщение от mortal2010 Посмотреть сообщение
Проверяю на наличие ответов каждый час (иногда и раньше)
А на нашей планете уже больше полутора часов прошло...

Последний раз редактировалось OlegVE; 26.01.2011 в 17:30.
OlegVE вне форума Ответить с цитированием
Старый 26.01.2011, 15:59   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

перемещено.

Последний раз редактировалось Teslenko_EA; 26.01.2011 в 23:01.
Teslenko_EA вне форума Ответить с цитированием
Старый 26.01.2011, 16:57   #6
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

в каком формате база

-желательно 2003-2007 -mdb
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 26.01.2011, 17:10   #7
mortal2010
Пользователь
 
Регистрация: 20.01.2011
Сообщений: 18
По умолчанию

Здравствуйте, OlegVE.
Большое спасибо за ответ.
Идею вроде понял - попробую сегодня у себя - отвечу.
mortal2010 вне форума Ответить с цитированием
Старый 26.01.2011, 17:11   #8
mortal2010
Пользователь
 
Регистрация: 20.01.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
в каком формате база

-желательно 2003-2007 -mdb
shanemac51,
MS Access 2010 - уже сам не рад что в ней начал работать - хотя по умолчанию стоит сохранение в 2003-2007, но 2007 не открывает.
mortal2010 вне форума Ответить с цитированием
Старый 26.01.2011, 17:20   #9
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

попробуйте

--сохранить как .....

иногда полезно
-открыть аксесс
-преобразовать базу данных к предыдущей версии(правда давно не пользовалась - работаю в а2007 в формате а2003
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание

Последний раз редактировалось shanemac51; 26.01.2011 в 17:22.
shanemac51 вне форума Ответить с цитированием
Старый 26.01.2011, 17:36   #10
mortal2010
Пользователь
 
Регистрация: 20.01.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
попробуйте

--сохранить как .....

иногда полезно
-открыть аксесс
-преобразовать базу данных к предыдущей версии(правда давно не пользовалась - работаю в а2007 в формате а2003
Попробуйте вот
Вложения
Тип файла: rar tabel.rar (91.8 Кб, 35 просмотров)
mortal2010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обновить столбец одной таблицы из другой таблицы kairat_tuyakbaev Microsoft Office Access 2 24.09.2010 12:46
Как обновить столбец одной таблицы из другой таблицы kairat_tuyakbaev SQL, базы данных 0 23.09.2010 23:42
Столбец таблицы с 2 типами данных FroL25 Общие вопросы C/C++ 1 08.07.2010 16:02
авт. перенос данных из нескольких столбцов одной таблицы в один столбец другой таблицы A_ALL Microsoft Office Access 7 24.08.2009 21:13
транспонирование строки таблицы в столбец kate158 БД в Delphi 15 18.05.2009 12:51