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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 11:15   #1
jigy
 
Регистрация: 22.04.2010
Сообщений: 7
По умолчанию Проблема в vba access

Здравствуйте друзья! Горю, срочно нужна помощь! код не бегает по продолжительности!
Есть форма с полями:
начало всего строительства объекта (дата к пр: 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...
Метки: Редактировать
jigy вне форума
Старый 22.04.2010, 16:14   #2
AnnNet
Пользователь
 
Регистрация: 21.07.2008
Сообщений: 57
По умолчанию

Выложите весь код. По этому отрывку непонятно, как у Вас хранятся продолжительности работ. Не забываете ли Вы присваивать этой переменной соответствующее значение на каждом шаге?
AnnNet вне форума
Старый 22.04.2010, 17:40   #3
jigy
 
Регистрация: 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
jigy вне форума
Старый 22.04.2010, 17:43   #4
jigy
 
Регистрация: 22.04.2010
Сообщений: 7
По умолчанию

AnnNet, подскажите, возможно я делаю что - то не так.
jigy вне форума
Старый 22.04.2010, 19:01   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте jigy.
позволю себе несколько рекомендаций:
1. для получения помощи с БД MS Access, не выкладывайте только VBA код, в большинстве случаев он без остальных объектов БД не информативен. Архив с заранее подготовленным (желательно в формате А2003, избавленным от избыточных данных, OLE объектов,.... и сжатым средствами MS Access) файлом БД даст гораздо больше информации для правильного ответа (совета).
2. не применяйте в качестве имен переменных (или объектов) имена команд, функций или зарезервированные слова (Sum одно из них).
3. выкладывая на странице код (или SQL конструкцию) заключайте его в тэги [соde]...[/соde] (можно с применением кнопки #), не только для удобочитаемости, это часть правил форума.

Евгений.
Teslenko_EA вне форума
Старый 22.04.2010, 23:38   #6
jigy
 
Регистрация: 22.04.2010
Сообщений: 7
По умолчанию

Здравствуйте Евгений, обязательно прислушаюсь к Вашим советам.
jigy вне форума
Старый 23.04.2010, 00:45   #7
jigy
 
Регистрация: 22.04.2010
Сообщений: 7
По умолчанию

Моя прога. Сохранена в виде Access 2003, убрал почти все ненужное (решил оставить формы к табл.) Б.Д. сжата.
При открытии вылетает окошко с просьбой ввести год (2006,2007), это условие на сортировку объектов. И сразу открывается форма 1 К Г в которой я и хотел вывести даты начала и окончания работ.
Форма 1 К Г основана на Запросе3.
Вложения
Тип файла: rar прога.rar (109.7 Кб, 27 просмотров)
jigy вне форума
Старый 29.04.2010, 12:32   #8
jigy
 
Регистрация: 22.04.2010
Сообщений: 7
По умолчанию zx

Кто-нибудь поможет?
jigy вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МАССИВЫ В 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