Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Увеличение скорости работы / 25 сообщений из 40, страница 1 из 2
24.06.2004, 15:02:11
    #32575705
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Проблема: есть табла, в которой необходимо заполнить 3 столбца,
1 столб-цена
2 столб-название
3 столб- время выполнения
Проблема состоит в том, что 1 столб заполняется из другой таблицы, причём данные делятся на datediff("m",a,b),
где а-самая ранняя дата начала работы 3столба
b- самая поздняя дата.... 3столба
Пришёл к выводу, что приходится пробега дважды либо по заполняемой табле, либо по внешней (откуда берутся данные).
Вопрос, а можно ли сделать так, чтобы и внешн. и заполняемая табла пробегались по разу.
Нужна логика, код сам напишу.
...
Рейтинг: 0 / 0
24.06.2004, 15:09:08
    #32575727
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
как-то мутно :(

МОжет попроще объяснишь
А то даже не понятно, сколько таблиц, 2 или 1

+
2 раза пробежать - это тоже линейная зависимость (ни чего страшного - ИМХО), а вот если для каждой записи полный проход, то это уже квадратичная, вот тогда надо думать (и то если скорось не устраивает)

Короче, давай:
- структуры обеих таблов (можно урезанные, или все-та ки одна таблица будет использоваться)
- тестовые данные
- что хочешь получить
...
Рейтинг: 0 / 0
24.06.2004, 15:12:07
    #32575738
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
авторгде а-самая ранняя дата начала работы 3столба
b- самая поздняя дата.... 3столба
а теперь то же самое ,но по русски :)
Трудно что ли привести тестовые даные и желаемый результат?
...
Рейтинг: 0 / 0
24.06.2004, 15:13:54
    #32575745
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Апаздал!((c)Л.П.)
...
Рейтинг: 0 / 0
24.06.2004, 15:20:39
    #32575772
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Вообще так, есть внешняя табла(всё тот же .mpp, меня им трахают уже 2-ю неделю, чем-то Project начальству приглянулся, будь он не ладен), так вот,
надо из этой таблы в Аксе сформировать свою, на основе которой будет делаться отчёт о бюджете проекта.
В таблу Акса необходимо поместить
1)название задачи
2)стоимость задачи, поделённую на срок действия проекта.
3)время начала задач.
Нужна логика, своя есть но мне кажется как-то долго, может, что порезче предложешь, если надо выкину код.
...
Рейтинг: 0 / 0
24.06.2004, 15:25:24
    #32575787
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Блин!
А тестовые данные где?
Не надо уповать на наши скромные телепатические способности :)
...
Рейтинг: 0 / 0
24.06.2004, 15:25:57
    #32575789
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Это я про то, что один фиг не понятно
Ясности, твой пост так и не дал :(
...
Рейтинг: 0 / 0
24.06.2004, 15:35:36
    #32575812
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
rcd.Close
Set cnn1 = Nothing
Set rstEmployees = Nothing
n1:
End Sub

Программа необходима, чтобы высчитать сроки
Private Function mes()
Dim rcd As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb
Dim h
Dim k As Date
Dim l As Date
Set rcd = db.OpenRecordset("balance", dbOpenDynaset, dbSeeChanges)
Do
If rcd.EOF Then GoTo exit1
rcd.Move 3
k = rcd!time_balance
rcd.MoveLast
l = rcd!time_balance
h = DateDiff("m", k, l)
rcd.MoveNext
Loop
exit1:
mes = h
End Function
После получения mes прогоняется программа заменяющая
price_balance на price_balance/mes

но хотелось бы сделать, так чтобы с помощью двух первых была решена задача, получения в поле price_balance сразу нужного значения.
...
Рейтинг: 0 / 0
24.06.2004, 15:42:24
    #32575837
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Смотрю код понравился.
...
Рейтинг: 0 / 0
24.06.2004, 15:49:35
    #32575859
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Просили

авторКороче, давай:
- структуры обеих таблов (можно урезанные, или все-та ки одна таблица будет использоваться)
- тестовые данные
- что хочешь получить
И где тут про код?
...
Рейтинг: 0 / 0
24.06.2004, 15:57:52
    #32575888
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
авторООООООООООООО как всё запущено!!!
В зеркало посмотри

Для особо одареных повторяю ещё раз
paparomeКороче, давай:
- структуры обеих таблов (можно урезанные, или все-та ки одна таблица будет использоваться)
- тестовые данные
- что хочешь получить
...
Рейтинг: 0 / 0
24.06.2004, 16:01:47
    #32575905
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Я одного не понял :(
У вас сейчас все правильно работает.
Но не устраивает скорость или то что приходится много раз функцию mes вызывать?

Если со скростью все ОК (в разымных рамках, так сказать), то какой смысл переделывать работающий код? Чтобы ошибок понаплодить и тра%ся с их отловом?
...
Рейтинг: 0 / 0
24.06.2004, 16:10:37
    #32575927
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Хорошо, вопрос сформулирую подругому, можно ли в процессе заполнения таблицы в первый столбец (стоимость) заносить данные, пусть это будет
100 руб, делённое на количество месяцев равное datediff("m",a,b)
где а - самая ранняя дата в столбце 3 (даты)
b - самая поздняя дата в столбце 3 (даты), причём даты заполняются вместе со стоимостью.
Все данные берутся из внешней таблицы.

Поясню ещё раз код не нужен, нужна логика.
...
Рейтинг: 0 / 0
24.06.2004, 16:13:12
    #32575937
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
1) Proga: выложи
-структуры обеих таблов (можно урезанные, или все-та ки одна таблица будет использоваться)
- тестовые данные
- что хочешь получить
2) Лишнее я потер.
...
Рейтинг: 0 / 0
24.06.2004, 16:14:01
    #32575939
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
На всякий случай повторю еще раз.
ВНИМАНИЕ!
Proga, выложи:
- структуры обеих таблов (можно урезанные, или все-та ки одна таблица будет использоваться)
- тестовые данные
- что хочешь получить
...
Рейтинг: 0 / 0
24.06.2004, 16:16:34
    #32575948
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
ProgaХорошо, вопрос сформулирую подругому, можно ли в процессе заполнения таблицы в первый столбец (стоимость) заносить данные, пусть это будет
100 руб, делённое на количество месяцев равное datediff("m",a,b)
где а - самая ранняя дата в столбце 3 (даты)
b - самая поздняя дата в столбце 3 (даты), причём даты заполняются вместе со стоимостью.
Все данные берутся из внешней таблицы.

Поясню ещё раз код не нужен, нужна логика.

Значит будет одна стоимость для всех записей одного проекта?

После заполнения своей таблицы, делаешь Dmax и Dmin по датам (находишь что надо)
Потом одним Update по всей табле

Так?
...
Рейтинг: 0 / 0
24.06.2004, 16:20:55
    #32575960
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Во человек, с полуслова понимает
P.S. I love you!!!
...
Рейтинг: 0 / 0
24.06.2004, 16:22:31
    #32575963
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
ProgaВо человек, с полуслова понимает
P.S. I love you!!!

Только ты эти пол слова на станицу растянул :)
...
Рейтинг: 0 / 0
24.06.2004, 16:24:19
    #32575967
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
АХТУНГ!!!
...
Рейтинг: 0 / 0
24.06.2004, 16:24:24
    #32575968
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
И ИМХО:

Если я оказался прав, то стоимость в каждой строке - это дублирование информации - следовательно какие-то проблемы с нормализацией :(

Может корректнее будет хранить сойства проекта отдельно, "шаги" его отдельно?
...
Рейтинг: 0 / 0
24.06.2004, 16:27:36
    #32575980
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Я не умею писать ТЗ, я всего лишь маленький глупенький программер, обчитавшийся книжек по VB 5,6, Project 2000,2002,2003, с сертификатом Optima-Workflow, знанием Delfi, C++ for САПР(AutoCad),с сертификатом Optima-Workflow, опытом работы с А2000 и кучей мусора в голове, который иногда приходится применять.
...
Рейтинг: 0 / 0
24.06.2004, 16:44:59
    #32576016
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
сертификат Optima-Workflow видать очень важная штука:)

Сорри за офтоп.
...
Рейтинг: 0 / 0
24.06.2004, 16:47:13
    #32576025
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Так мысли вслух
Если начало проекта -01/06/2004 , а окончание- 30/06/2004
что даст
mes = cost/datediff("m",a,b)
????
...
Рейтинг: 0 / 0
24.06.2004, 16:55:14
    #32576065
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
to vig:
ты немного путаешь, cost=cost/mes,(эта формула отображает распределение средств на каждый месяц на задачу в течении всего проекта).
или я не понял?
...
Рейтинг: 0 / 0
24.06.2004, 16:55:18
    #32576066
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение скорости работы
Да, сертификат в 2 экземплярах???
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Увеличение скорости работы / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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