时 间:2009-08-31 00:00:00

作 者:摘 要:Oracle ERP MPS 的调整对供应链计划起着至关重要的作用。而Oracle ERP 中的MPS 调整是对每一个料(编码)逐行不同日期进行调整其MPS 数量。当编码多、滚动计划时间长的时候,就存在一个非常麻烦的问题——调整的时候无法对某个料进行直观的调整,以及对不同编码以不同分组进行汇总、调整;希望能通过针对每一个编码为一行记录,相应的不同日期的MPS 数量,以日期为列放在同一行的相应列,这样调整适合大量的编码及长时间的滚动计划的调整。

正 文:

一、需求分析

Oracle ERP MPS的调整对供应链计划起着至关重要的作用。而Oracle ERP中的MPS调整是对每一个料(编码)逐行不同日期进行调整其MPS数量。当编码多、滚动计划时间长的时候,就存在一个非常麻烦的问题——调整的时候无法对某个料进行直观的调整,以及对不同编码以不同分组进行汇总、调整;希望能通过针对每一个编码为一行记录,相应的不同日期的MPS数量,以日期为列放在同一行的相应列,这样调整适合大量的编码及长时间的滚动计划的调整。

二、ACCESS实现思路

1、将需要调整的MPS从ERP中下载到EXCLE表格中命名为”MPS”(见表一)表一:

MPS

ID

Segment1

Description

Schedule Quantity

shipdate

Planner Code

Original Schedule Quantity

1

01300042

空调机-DME07MO1-DATAMATE3000带电加热7kW机组/室内机-{R5}

5

01/06/2010

HPAC_02

5

2

01300042

空调机-DME07MO1-DATAMATE3000带电加热7kW机组/室内机-{R5}

5

01/20/2010

HPAC_02

5

66

01300043

空调机-DME12MC1-DATAMATE3000单冷12kW机组/室内机-{R5}

20

12/23/2009

HPAC_02

20

2、将”MPS”导入ACCESS中

3、利用更新查询”MPSWS”将”MPS”表中字段”shipdate”日期值转换为所在滚动周字段”WEEKS”的值,如字段”shipdate”值为”01/06/2010”转换为滚动的周”WEEKS”的值为18(转换函数为:funWeeks(ByVal prDate As Date))

4、将查询”MPSWS”的结果追加到空的系统表”MPS_adjust”(见表二)中表二:

5、将已追加数据的表”MPS_adjust”利用更新查询根据”WEEKS”的值将”Schedule Quantity”赋予到同行对应的列日期字段值,结果见表三。表三:

6、将表三安装”item”进行汇总查询,设计的字段及结果表见表四表四:

7、在表四中进行人工调整MPS

8、将要人工调整的MPS逆向转换为导入ERP格式的表”ERP_IM”见表五(类似从ERP下载的表”MPS”)——其算法为算法二表五:

9、将表”ERP_IM”导入ERP ,MPS调整完成!

三、重点算法:

数据表格横转竖算法:

1、读取一条记录,保存一个临时的数据类型结构里

2、进行53此循环赋值到一个新输出表中

a)将记录的字段1,重复赋值到新表中的字段1

b)从第5个字段开始,程序自动计算以其为基准作为W1的周三,以周为单位(7天)赋值给新表的字段2;并从字段5开始将其字段值逐记录赋值给新表的字段3.

3、重1、2过程,直到读完所有记录。

数据表竖专横算法:

1、建立一个最新的空的结构新横表

2、将所有的竖表中的时间通过更新SQL在一列中放置该行所在的周数据

3、以item字段值为分组读取所在周的数据,据其将数量字段的值放到横表中

四、逻辑图表:

五、代码:

窗体”MAIN”的代码:

Option Compare Database

Private Sub Command0_Click()

If ERPIM Then MsgBox "数据转换完毕", vbInformation, "操作提示"

End Sub

'*******************************************************

'

'****函数名称:ERPIM

'********参数:无

'********功能:根据表”MPS_adjustx”生成导入ERP所使用的表”ERP_IM”

'********作者:一鸣

'********日期:2009-08-30

'*******Email:NET0112@126.COM

'****更新日期:2009--8-30

'

'********************************************************

Private Function ERPIM() As Boolean

Dim i As Integer

Dim dateTmp As Date

On Error GoTo ERPIM_Error

dateTmp = modCommon.funDBase

Dim CN As ADODB.Connection

Dim rsA As ADODB.Recordset

Dim rsB As ADODB.Recordset

Set rsA = New ADODB.Recordset

Set rsB = New ADODB.Recordset

Set CN = CurrentProject.Connection

DoCmd.SetWarnings False

DoCmd.RunSQL "Delete ERP_IM.* FROM ERP_IM "

rsA.Open "MPS_adjustx", CN, adOpenDynamic, adLockReadOnly

rsB.Open "ERP_IM", CN, adOpenDynamic, adLockOptimistic

rsA.MoveFirst

rsB.AddNew

Do While Not rsA.EOF

dateTmp = funDBase()

For i = 1 To 53

With rsB

If rsA.Fields(i + 3) > O Then

.Fields(0) = rsA!Item

.Fields(2) = rsA.Fields(i + 3)

.Fields(1) = dateTmp

.Update

.AddNew

End If

dateTmp = dateTmp + 7

End With

Next

rsA.MoveNext

Loop

rsA.Close

'rsB.Close

Set rsA = Nothing

Set rsB = Nothing

Set CN = Nothing

'DoCmd.RunSQL "Delete * FROM ERP_IM Where (((ERP_IM.quantity)=0)) "

DoCmd.SetWarnings True

DoCmd.TransferText acExportDelim, , "ERP_IM", CurrentProject.Path & "\ABC.CSV", True

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, "ERP_IM", CurrentProject.Path & "\ERP_IM" & Date & ".XLS"

'MsgBox "数据转换完毕", vbInformation, "操作提示"

ERPIM = True

ERPIM_Exit:

Exit Function

ERPIM_Error:

MsgBox Err.Number & Space(5) & Err.Description, vbCritical, "出错啦!"

ERPIM = False

Resume ERPIM_Exit

End Function

'*******************************************************

'

'****过程名称:ERPEX

'********参数:无

'********功能:根据查询”MPSWS”生成表”MPS_adjust”,并更新每行中WEEK0~WEEK53中的值

'********作者:一鸣

'********日期:2009-08-30

'*******Email:NET0112@126.COM

'****更新日期:2009--8-30

'

'********************************************************

Private Function ERPEX() As Boolean

Dim i As Integer

Dim CN As ADODB.Connection

Dim rsA As ADODB.Recordset

DoCmd.SetWarnings False

DoCmd.RunSQL " delete * FROM MPS_adjust "

DoCmd.RunSQL " Insert INTO MPS_adjust ( item, descr, [Schedule Quantity], shipdate, plan, weeks ) " _

& " Select MPSWS.Segment1, MPSWS.Description, MPSWS.[Schedule Quantity], MPSWS.shipdate, MPSWS.[Planner Code], MPSWS.weeks " _

& " FROM MPSWS "

Set CN = CurrentProject.Connection

Set rsA = New ADODB.Recordset

rsA.Open "MPS_adjust", CN, adOpenDynamic, adLockOptimistic

rsA.MoveFirst

Do While Not rsA.EOF

rsA.Fields(rsA.Fields(5) + 7) = rsA.Fields(2)

rsA.Update

rsA.MoveNext

Loop

rsA.Close

Set rsA = Nothing

Set CN = Nothing

Call funDates

ERPEX = True

DoCmd.SetWarnings True

End Function

'*******************************************************

'

'****过程名称:funDates

'********参数:无

'********功能:根据表”MPS_adjust”生成人工调整MPS的表”MPS_adjustx”

'********作者:一鸣

'********日期:2009-08-30

'*******Email:NET0112@126.COM

'****更新日期:2009--8-30

'

'********************************************************

Private Sub funDates()

Dim strWeeks(53) As String

Dim i As Integer

Dim strSql As String

strSql = ""

dateTmp = funDBase()

strWeeks(0) = "过期计划"

For i = 1 To 53

strWeeks(i) = Format(dateTmp + (i - 1) * 7, "mmm_dd")

Next

For i = 0 To 52

strSql = strSql & "Sum(m.week" & i & ") AS " & strWeeks(i) & ","

Next

strSql = strSql & "Sum(m.week" & 53 & ") AS " & strWeeks(53)

strSql = strSql & " into MPS_adjustx "

strSql = "Select m.item, m.descr, m.plan," & strSql & "FROM MPS_adjust AS mGROUP BY m.item, m.descr, m.plan;"

DoCmd.RunSQL strSql

End Sub

Private Sub Command1_Click()

If ERPEX Then MsgBox "数据转换完毕", vbInformation, "操作提示"

End Sub

ModCommon模块代码

Option Compare Database

'*******************************************************

'

'****函数名称:funDBase

'********参数:无

'********功能:根据当前日期换算出以周三为基准的W1日期

'********作者:一鸣

'********日期:2009-08-30

'*******Email:NET0112@126.COM

'****更新日期:2009--8-30

'

'********************************************************

Public Function funDBase() As Date

Select Case Weekday(Date)

Case 1' &&当前日期是周日

funDBase = Date + 10

Case 2' &&当前日期是周一

funDBase = Date + 9

Case 3' &&当前日期是周二

funDBase = Date + 8

Case 4' &&当前日期是周三,以下周周三为基准

funDBase = Date + 7

Case 5' &&当前日期是周四

funDBase = Date + 6

Case 6'&&当前日期是周五

funDBase = Date + 12

Case 7'&&当前日期是周六

funDBase = Date + 11

End Select

End Function

'*******************************************************

'

'****函数名称:funWeeks

'********参数:日期prDate

'********功能:根据日期prDate换算出其所在的滚动的周数

'********作者:一鸣

'********日期:2009-08-30

'*******Email:NET0112@126.COM

'****更新日期:2009--8-30

'

'********************************************************

Public Function funWeeks(ByVal prDate As Date) As Integer

Dim i As Integer

Dim dateTmpbase As Date

dateTmpbase = funDBase()

If prDate > funDBase Then

For i = 1 To 53

If prDate >= dateTmpbase And prDate < dateTmpbase + 7 Then

funWeeks = i

Exit For

End If

dateTmpbase = dateTmpbase + 7

Next

Else

funWeeks = 0

End If

End Function

附件示例下载:

Access软件网QQ交流群(群号:39785885)

Access源码网店

将Access转换成oracle,通过access 实现 Oracle ERP MPS 转换排产相关推荐

  1. 将字符转换成数字(atoi),将数字转换成字符(itoa)

    目录 一.将字符转换为数字. 二.将数字转换成字符. 一.将字符转换为数字. (首先字符必须是"0" -"9",然后转换成十进制的数字) 比如将"12 ...

  2. xml文件转换成图片_怎样能把PDF文件转换成图片?

    我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...

  3. PPT怎么转换成Word文档?分享两种转换小妙招

    怎么把PPT文件转换成Word文档呢?大家在日常的工作中经常会有转换文件格式的需求,将文件转换成Word文档格式也是比较常见的.当我们遇到需要将PPT文件转换成Word文档格式,该怎么才能做到呢?今天 ...

  4. pdf怎么转换成excel呢?三种方法快速转换

    pdf怎么转换成excel呢?作为一名在职小编,每天都需要面对各种各样的文件,像签合同的时候,需要给客户发pdf文件,因为这种文件不易编辑修改,而且发送的过程中也不易出现排版乱的情况,其次在一些数据统 ...

  5. jpg转换成pdf格式?怎么把图片jpg转换成pdf格式?

    jpg转换成pdf格式?怎么把图片jpg转换成pdf格式?有时候我们需要把图片转成pdf.可能还有些小伙伴不知道怎么去完成这项转换的,图片转pdf其实很简单,下面给大家分享一个简单把图片转pdf的方法 ...

  6. 计算机怎么把文字转换成表格,Word文档如何将文字转换成表格形式

    一.将Word中文字转换成表格(以Word2003为例) 将文字转换成表格(表格:一或多列储存格,通常用于显示数字及其他项目,以供快速参照及分析.表格中项目的组织形式是列及行)时,要以逗点.tab或其 ...

  7. 输入一行字符,将其中的大写字母转换成小写字母,其中的小写字母转换成大写字母C++--tolower、isalpha等函数的使用

    字母大小写转换 [问题描述] 输入一行字符,将其中的大写字母转换成小写字母,其中的小写字母转换成大写字母,然后输出. [输入形式] 输入一行可显示的字符,回车结束. [输出形式] 输出一行字符,其中输 ...

  8. Android录屏并利用FFmpeg转换成gif(四) 将mp4文件转换成gif文件

    Android录屏并利用FFmpeg转换成gif(四) 写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方 ...

  9. 怎么根据css类将html转换成数组,JavaScript_js中将HTMLCollection/NodeList/伪数组转换成数组的代码,这里把符合以下条件的对象称 - phpStudy...

    js中将HTMLCollection/NodeList/伪数组转换成数组的代码 这里把符合以下条件的对象称为伪数组 1,具有length属性 2,按索引方式存储数据 3,不具有数组的push,pop等 ...

最新文章

  1. 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt
  2. python字符串查找数字_Python Regex - 在字符串中用逗号查找数字
  3. matlab平面绘图命令
  4. Dao接口返回数组_JavaScript二进制数组(2)TypedArray视图
  5. 图形学必备!斯坦福图形学几何处理算法课程1——Surface Reconstruction
  6. 为什么要用 SpringMVC 的 SessionStatus
  7. Nacos教程_1 简介和安装
  8. 单片机CC2530学习笔记
  9. VUE中使用CLodop获取打印机列表并打印表格、图片等
  10. ThinkPad Tablet2升级Windows10(各种故障及解决方案)
  11. 网易云音乐python爬虫(Js破解)
  12. 移动硬盘在mac上无法显示 读不出来
  13. 大学计算机基础第四章ppt,大学计算机基础第四章.ppt
  14. 为什么CAD输入文字时文字特别大但输入后就消失了?
  15. 前端学习13:HTML响应式设计、计算机代码、语义元素
  16. numpy中,矩阵的三种转置transpose、getT、getH的区别
  17. 【杂谈分享】world.execute(me); 用代码谱写从0到1的死亡情诗
  18. 程序员“996”,真的能带来高产出吗?
  19. 批量获取唯品会商品链接,详情页图片及视频保存技巧
  20. onenote2007 设置行间距

热门文章

  1. 苹果开发者账号官方翻译篇-管理ID标识
  2. GBase 8a 集群节点管理-扩容(多VC模式)
  3. FFMPEG编译及遇到的问题
  4. xshell脚本简单代码_Xshell脚本
  5. iOS打包项目测试的ipa详细版本以及安装测试ipa流程
  6. Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
  7. 图解Linux命令之--insmod命令
  8. 程序员什么时候该考虑辞职?
  9. python stdout stderr_Pytest官方教程-09-捕获stdout及stderr输出
  10. NAND FLASH学习笔记之nand flash基础(一)