![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.04.2010
Сообщений: 7
|
![]()
Здравствуйте друзья! Горю, срочно нужна помощь! код не бегает по продолжительности!
Есть форма с полями: начало всего строительства объекта (дата к пр: 01.04.2010) работы (поле с неск. работами) (работа 1, работа2, работа 3) продолжительность каждой работы ( 12 , 10, 1 ) Надо посчитать начало каждой работы. Т.е. начало работы 1 = 01.04.2010 работы 2 = 01.04.2010 + 12 = 13.04.2010 работы 3 = 13.04.2010 + 10 = 23.04.2010 Вот мой код: Amount = [количество работ].Value If Amount > 0 Then ReDim Works(Amount) Sum = [дата начала строительства].Value For i = 1 To Amount Sum = Sum + [продолжительность].Value Works(i) = Sum Works(1) = [дата начала строительства].Value MsgBox "Мой массив: " & Works(i) Next i End If При таком раскладе он к сожалению видит только первую продолжительность, и ко всем датам приплюсовывает 12... Метки: Редактировать |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 21.07.2008
Сообщений: 57
|
![]()
Выложите весь код. По этому отрывку непонятно, как у Вас хранятся продолжительности работ. Не забываете ли Вы присваивать этой переменной соответствующее значение на каждом шаге?
|
![]() |
![]() |
#3 |
Регистрация: 22.04.2010
Сообщений: 7
|
![]()
Прога написана на акцесе, поэтому кода особо то и нет, но все равно напишу тот код, что есть.
продолжительность храниться в поле формы. Пытался вогнать все продолжительности в массив, но он опять записывал первую продолжительность (число 12) семь раз. Делал я это так: Dim Duration () As Integer Dim Dur As Integer For i = 0 To Amount Duration (i) = Dur Next i Затем нашел в книге как бежать по циклу по значениям, хранящимся в поле формы. Прописал в модуле функцию el(): Sub el() Dim rstDao As Dao.Recordset Set rstDao = CurrentDb.OpenRecordset("Запрос3") Do Until rstDao.EOF Debug.Print rstDao("[наименование объектов]"); " "; rstDao("продолжительность") rstDao.MoveNext Loop End Sub И программа бежит по этому циклу только в том случае, если уберу условие сортировки объектов, а оно мне необходимо, так как имеется несколько объектов, и считать их надо по отдельности. А вот и тот код , который имеетвся сейчас: В модуле: Option Compare Database Option Explicit Option Base 1 Public Amount As Integer Public i As Integer, j As Integer Dim Works() As Variant В форме: Option Compare Database Option Explicit Private Sub наименование_работ_AfterUpdate() Me.Поле15.Requery End Sub Private Sub Поле15_Change() Private Sub Поле15_Click() Dim WStart As Variant Dim Sum As Variant Amount = [количество работ].Value If Amount > 0 Then ReDim Works(Amount) Sum = [дата начала строительства].Value For i = 1 To Amount Sum = Sum + [продолжительность].Value Works(i) = Sum MsgBox "Массив" & Works(i) Next i End If End Sub |
![]() |
![]() |
#4 |
Регистрация: 22.04.2010
Сообщений: 7
|
![]()
AnnNet, подскажите, возможно я делаю что - то не так.
|
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте jigy.
позволю себе несколько рекомендаций: 1. для получения помощи с БД MS Access, не выкладывайте только VBA код, в большинстве случаев он без остальных объектов БД не информативен. Архив с заранее подготовленным (желательно в формате А2003, избавленным от избыточных данных, OLE объектов,.... и сжатым средствами MS Access) файлом БД даст гораздо больше информации для правильного ответа (совета). 2. не применяйте в качестве имен переменных (или объектов) имена команд, функций или зарезервированные слова (Sum одно из них). 3. выкладывая на странице код (или SQL конструкцию) заключайте его в тэги [соde]...[/соde] (можно с применением кнопки #), не только для удобочитаемости, это часть правил форума. Евгений. |
![]() |
![]() |
#6 |
Регистрация: 22.04.2010
Сообщений: 7
|
![]()
Здравствуйте Евгений, обязательно прислушаюсь к Вашим советам.
|
![]() |
![]() |
#7 |
Регистрация: 22.04.2010
Сообщений: 7
|
![]()
Моя прога. Сохранена в виде Access 2003, убрал почти все ненужное (решил оставить формы к табл.) Б.Д. сжата.
При открытии вылетает окошко с просьбой ввести год (2006,2007), это условие на сортировку объектов. И сразу открывается форма 1 К Г в которой я и хотел вывести даты начала и окончания работ. Форма 1 К Г основана на Запросе3. |
![]() |
![]() |
#8 |
Регистрация: 22.04.2010
Сообщений: 7
|
![]()
Кто-нибудь поможет?
|
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
МАССИВЫ В VBA ACCESS | ALYSA | Microsoft Office Access | 1 | 27.04.2010 06:10 |
МАССИВЫ В VBA ACCESS | ALYSA | Помощь студентам | 0 | 20.04.2010 17:15 |
Программное выполнение SQL запроса на VBA Access | chandrasecar | Microsoft Office Access | 2 | 02.06.2009 21:46 |
VBA + ms ACCESS | Dr.AgoN | Microsoft Office Access | 1 | 19.03.2009 10:23 |