powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Увеличение скорости работы
15 сообщений из 40, страница 2 из 2
Увеличение скорости работы
    #32576100
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Progato vig:
ты немного путаешь, cost=cost/mes,(эта формула отображает распределение средств на каждый месяц на задачу в течении всего проекта).
или я не понял?

Он имел ввиду, что функция datediff может и 0 вернуть - тогда получишь деление на 0
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576113
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню проекты в стоительстве (я там работаю) длятся не меньше 6 месяцев -это аксиома!!!
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576131
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпроекты в стоительстве (я там работаю)
Вот как раз в строительстве и поаккуратнее, пожалуйста...А то расчитывают, на ноль делят, а потом у них (у нас) крыши едут
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576149
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь господа предоставляю код, который я сообразил на поставленный первичный вопрос, в студию


Private Sub Êíîïêà0_Click()
Dim rcd As DAO.Recordset
Dim db As DAO.Database
Dim cnn1 As ADODB.Connection
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim varDate As Variant
Dim sSQL As String
Dim p As String
Dim result As Integer
Dim fileName As String
DoCmd.RunSQL "delete * from balance"
' Open connection.
Dim a As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Âûáîð ïðîåêòà"
.Filters.Add "Âñå ôàéëû", "*.*"
.Filters.Add "Ïðîåêòû", "*.mpp"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
result = .Show
If result <> 0 Then
p = Trim(.SelectedItems.Item(1))
End If
End With
If p = "" Then GoTo n1
Set db = CurrentDb

strCnn = "Provider=Microsoft.Project.OLEDB.10.0;Project Name=" & p
sSQL = "SELECT Taskcost,TaskName,Taskfinish FROM Tasks"

Set cnn1 = New ADODB.Connection
cnn1.Open strCnn

' Open employee table.
Set rstEmployees = New ADODB.Recordset
rstEmployees.CursorType = adOpenKeyset
rstEmployees.LockType = adLockOptimistic
rstEmployees.Open sSQL, cnn1, , , adCmdText

' Ïîïûòêà ðåøåíèÿ çàäà÷è
'--------------------------------------------
Set rcd = db.OpenRecordset("balance", dbOpenDynaset, dbSeeChanges)
Do While Not rstEmployees.EOF
msg = rstEmployees.Fields.Item("taskcost")
msg1 = rstEmployees.Fields.Item("taskname")
msg2 = rstEmployees.Fields.Item("taskfinish")

rcd.AddNew
rcd!name_balance = msg1
rcd!price_balance = msg
rcd!time_balance = msg2
rcd.Update
rstEmployees.MoveNext
Loop
cnn1.Close
rcd.Close
Set cnn1 = Nothing
Set rstEmployees = Nothing
n1:
Call isprav
End Sub

Private Sub isprav()
Dim rcd As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb

Set rcd = db.OpenRecordset("balance", dbOpenDynaset, dbSeeChanges)
Do
If rcd.EOF Then GoTo exit1
rcd.Edit
rcd!price_balance = rcd!price_balance / mes
rcd.Update
rcd.MoveNext
Loop
exit1:
End Sub

Private Function mes()
a = DMax("time_balance", "balance")
b = DMin("time_balance", "balance")
mes = DateDiff("m", b, a)
End Function

Так вот, всё работает быстро, а хотелось бы ещё быстрее,
В конечном итоге вопрос заключался в следующем:
А можно всё сделать также(в конце получить такой же результат), но без
проги ISPRAV.
Настоящие программеры разберутся,что имелось ввиду.
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576170
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настоящие программеры не используют GOTO ,явно обьявляют все переменные ,ну и многое другое.
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576172
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Goto ненужен, тогда зачем его придумали.
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576175
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Set rcd = db.OpenRecordset("balance", dbOpenDynaset, dbSeeChanges)
Do
If rcd.EOF Then GoTo exit1
rcd.Edit
rcd!price_balance = rcd!price_balance / mes
rcd.Update
rcd.MoveNext
Loop

Я такого не советовал!!!
Я сказал одним Update, в ты по рекордсету начал шарахаться (да еще на каждом шаге функцию mes вызываешь, а она между прочим в базу "смотрит" - причем активно)
Таблица же локальная :)

Пиши так:

Код: plaintext
1.
strSQL = "UPDATE balance SET price_balance = price_balance / " & mes()
db.Execute strSQL

?

+ If rcd.EOF Then GoTo exit1 - ИМХО - плохой тон использовать гото, когда можно без него
Код: plaintext
1.
2.
3.
While Not rcd.EOF
  ...
  rcd.MoveNext
Wend
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576179
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaЕсли Goto ненужен, тогда зачем его придумали.

Когда его придумали, нас еще не было
А сейчас Goto только для отлова ошибок используют (On Error Goto ...)
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576197
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круто!!!
А что если использовать
Docmd.RunSql "UPDATE balance SET price_balance = price_balance / " & mes()"
это тоже самое или я ошибаюсь?
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576205
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к тому же помимо ошибок, Goto всё таки иногда тоже полезен, когда надо проскочить часть текста программы, причём нельзя использовать конструкцию If...Else
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576212
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaКруто!!!
А что если использовать
Docmd.RunSql "UPDATE balance SET price_balance = price_balance / " & mes()"
это тоже самое или я ошибаюсь?

Кавычку в конце убери
+ не знаю - не пользовался таким ни когда - вроде то же самое (ИМХО)
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576217
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Progaк тому же помимо ошибок, Goto всё таки иногда тоже полезен, когда надо проскочить часть текста программы, причём нельзя использовать конструкцию If...Else

Это как?

ЗЫ: Я например могу утверждать, что любую алгоритмическую конструкцию можно реализовать с помощью оператора While , а вот чтобы нельзя было использовать if ... then ... else - это нонсенс
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576226
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не буду спорить, а за подсказку спасибо,
как говорится "Век живи, век учись", кстати в Лестнице выложил прикольные анекдоты.
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576235
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaНе буду спорить, а за подсказку спасибо,
как говорится "Век живи, век учись", кстати в Лестнице выложил прикольные анекдоты.

Дык - Лестницу я тоже читаю
...
Рейтинг: 0 / 0
Увеличение скорости работы
    #32576239
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: только аники старые, как моя машина :)
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Увеличение скорости работы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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