LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Только дл...
 Тема: Только для профи
 
 15.06.2007 20:02:26
seva
7 сообщения


Тема: Только для профи
Столкнулся со схожей, описанной здесь проблемой:
Нужен модуль для подсчета количества деталей (если кому то это, что то говорит: "Отчет подетально - специфицированная ведомость норм расхода на изделие" (во как !!!) - нормы то я сам выцеплю):

Есть сборка(изделие)в нее может входить еще несколько подсборок, в подсборку еще подсборки и т.д, кроме этого в каждую сборку (подсборку) входит некоторое количество деталей. Нужно составить список всех деталей, входящих в сборку, просуммировав при этом количество повторяющихся деталей.
Поля (не все):
[код изделия] - [код узла] - [код детали] - [кол-во в узле]
При код изделия = код узла - однозначно деталь
Может быть входимость до 20-го уровня (например гайка в одном узле 15 уровень в другом 5 и еще просто без узла)
У изделия есть исполнения 0-6 т.е. 7 граф подсчета количества деталей.
Буду очень благодарен за помощь и если это необходимо не только на словах (E-Gold).


P.S. Общие вопросы по модулям
Автор: seva от 14.05.2002 11:33:59 Источник ...
 15.06.2007 20:02:26
All
4316 сообщения
1-ый


RE: Только для профи
1. Определяете главную таблицу, где устанавливаете идентификатор, например, IDсборка. Далее прописывате подчиненную таблицу и связываете ее с главной ключем IDсборка. Для других таблиц также назначаете идентификаторы, например, IDдеталь и т.п.
2. Создаете запрос на группировку или делаете отчет с суммированием по группе деталей.


P.S. Общие вопросы по модулям
Автор: Виктор Конюков от 0:00:00 Источник ...
 15.06.2007 20:02:26
All
4316 сообщения
1-ый


RE: Только для профи
Данная функция (есть ниже в кои-8 кодировке) дана и повешена на кнопку - создает временную таблицу для конкретного изделия и там производит суммирование схожих деталей в разных узлах - НО - этот код не учитывает вот что Пример:(1 деталь в 1-м исполнении(8шт максимум исполнений изделия)):
[узел][деталь][к-во в исполнении№1]
1уз - дет№1 - 7шт
2уз - 3уз - 2шт
3уз - 4уз - 3шт
4уз - дет№1 - 1шт

В итоге дет№1 в изделии 1 = 7+1*3*2
т.е. вот этого самого умножения просто нет
Количество множителей(узлов)<=20
Количество умножений - не ограничено (много сложных узлов)

Реально ли вообще создать такой код?
При желании вышлю саму базу


Private Sub CalcTempTable()

Dim conDatabase As ADODB.Connection
Dim rstRs1, rstRs2 As ADODB.Recordset
Dim strSQL, strSQL1 As String
Dim dbs As Database, rst As Recordset
Dim rstTempAll, rstTemp As Recordset

Set conDatabase = CurrentProject.Connection
Set rstRs1 = New ADODB.Recordset
Set dbs = CurrentDb

DoCmd.SetWarnings False
dbs.Execute ("DROP TABLE TemproryTable")
DoCmd.SetWarnings True

' Âðåìåííàÿ òàáëèöà ñïåöèôèêàöèè çàäàííîãî èçäåëèÿ
strSQL = "SELECT * INTO TemproryTable FROM Ñïåöèôèêàöèÿ where ÊîäÈçäåëèÿ = '" + [Forms]![ÐÑÏ]![Ïîëå3] + "' ORDER BY ÊîäÄåò"
rstRs1.Open strSQL, conDatabase, adOpenDynamic, adLockOptimistic
Set rstTempAll = dbs.OpenRecordset("TemproryTable", dbOpenTable)

rstTempAll.MoveFirst

' Öèêë ïî âñåì çàïèñÿì ñ çàäàííûì èçäåëèåì
' MsgBox rstTempAll.RecordCount
Do While Not rstTempAll.EOF
strSQL = "SELECT * INTO temp1 FROM TemproryTable WHERE ÊîäÄåò = " + "'" + rstTempAll!ÊîäÄåò + "'"
dbs.Execute (strSQL)

' Ñóììà êîëè÷åñòâà äåòàëåé 1
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(4).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

' Ñóììà êîëè÷åñòâà äåòàëåé 2
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë1]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(5).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

' Ñóììà êîëè÷åñòâà äåòàëåé 3
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë2]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(6).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

' Ñóììà êîëè÷åñòâà äåòàëåé 4
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë3]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(7).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

' Ñóììà êîëè÷åñòâà äåòàëåé 5
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë4]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(8).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

' Ñóììà êîëè÷åñòâà äåòàëåé 6
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë5]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(9).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

' Ñóììà êîëè÷åñòâà äåòàëåé 7
strSQL = "SELECT SUM([Êîë-âîÍàÓçåë6]) FROM temp1"
rstRs1.Open strSQL, conDatabase, adOpenStatic, adLockOptimistic
rstTempAll.Edit
rstTempAll.Fields(10).Value = rstRs1.Fields(0).Value
rstTempAll.Update
rstRs1.Close

dbs.Execute ("DROP TABLE temp1")

rstTempAll.MoveNext
Loop

rstTempAll.Close
Set rstTempAll = Nothing

dbs.Close
Set dbs = Nothing

conDatabase.Close
Set conDatabase = Nothing
Set rstRs1 = Nothing

End Sub


P.S. Общие вопросы по модулям
Автор: Anonymous от 0:00:00 Источник ...
 15.06.2007 20:02:26
seva
7 сообщения


RE: Только для профи
До сих пор не дан ответ по моему вопросу.
Хотелось бы узнать возможно или нет написать такую функцию?
Я до сих пор дальше не продвинулся :-((
ПОМОГИТЕ хотя бы советом.


P.S. Общие вопросы по модулям
Автор: seva от 03.06.2002 10:27:28 Источник ...
 19.06.2012 20:06:17
blondebrain
1 сообщения


Re: RE: Только для профи

У вас что-нибудь получилось по этому вопросу? Мне по работе очень нужна такая база и я уже голову сломала как ее сделать

  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Только дл...
ПоискПоиск  Список форумовСписок форумов  
right