以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 填充问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5146) |
||||
-- 作者:wqc360 -- 发布时间:2009/11/26 9:25:00 -- 填充问题 请下载更新附件试试:比如先清空3个计划表(计划目录、计划工序、计划工艺)中数据,再下达一个图号的计划(中点击--产品目录表的图号列单元格,打开产品工序窗口,点击--产品工序窗口绑定表的加工提示列单元格,打开产品工艺窗口,点击--产品工艺窗口的 ‘工艺确定,准备下单’按钮,打开生产计划窗口,在此窗口录入‘订单号,生产单号,计划数量,计划日期’,点击-下达生产计划按钮),订单号和计划单号都为101,数量100,日期2009-11-23,点击-下达生产计划按钮,在计划3表中能找到刚下的单,紧接着下同图号的另一个订单,把订单号改成其他数据,再点按钮,本来属一个新的计划,也应该填充进去,但是结果不对,是把3表的原订单号进行修改成现在的了,原来的订单找不到了。还有,怎样如果窗口变量和图号重复时,提示本计划已下达,不能再下达。
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/11/26 9:47:00 -- 为什么一定要想着填充呢,Filler只能处理逻辑简单的批量复制数据功能。 逻辑复杂的东西,通过代码在目标表增加行,从原表对应行读取数据,写入新增行各列,不是简单得多,效率也高得多吗? [此贴子已经被作者于2009-11-26 9:51:08编辑过]
|
||||
-- 作者:wqc360 -- 发布时间:2009/11/26 10:06:00 -- 我想做一个较简单的生产管理项目,尽可能让使用者用鼠标或尽量少动键盘实现操作,又要避免一些失误,所以要求逻辑关系严谨。 此位置的逻辑是:从基础数据产品目录中找到要计划的产品(图号为唯一识别)再检查工序和工艺是否符合本批要求(有可能多种工艺路线,进行选择暂停/执行),确定工艺路线准备下计划;填写本计划的相关数据(即窗口4个变量)通过系统检测数据是否齐全和重复,符合要求,下单。本图号又何能重复下单,只是计划的相关数据(即窗口4个变量)不同,所以应允许图号重复。在生产的时候再调用计划3表(其实只是基础数据和业务数据的过度)中的数据进行操作。这个与仓库系统大不一样,是目前ERP生产模块的主流模式,我现在是为一个部门做的项目 [此贴子已经被作者于2009-11-26 10:55:31编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2009/11/26 10:58:00 -- 楼主怪怪的啊~ 同一个项目的控件名称在提问时也要变动, 不知为何,难为我等吗???"(订单号)" 和 "(订单号:)" 是不同的呀~~~ 其实你的原代码只要加上条件就可以了,看清下面黄底的代码,需要什么条件就加上去吧!!! Dim dd As WinForm.TextBox = Forms("生产计划").Controls("(订单号:)") \'------------------------------------------- For Each Va as string In Values with e.form if .Controls(va).value Is Nothing then MessageBox.Show(va &" 资料不全,请录入!", "提示") end if end with Next Dim dr As DataRow dr = DataTables("计划目录").Find("[图号] = \'" & currenttable.current("图号") & "\' and [订单号] = \'" & dd.text & "\'") If dr Is Nothing Then dim f As New Filler f.SourceTable = DataTables("产品目录") \'指定数据来源 f.SourceCols = "客户,机型,图号,名称,材料,重量,材料费" \'指定数据来源列 f.DataTable = DataTables("计划目录") \'指定数据接收表 f.DataCols = "客户,机型,图号,名称,材料,重量,材料费" \'指定数据接收列 f.Filter = "[图号] = \'" & currenttable.current("图号") & "\'" f.Fill() \'填充数据 end if dr = DataTables("计划工序").Find("[图号] = \'" & currenttable.current("图号") & "\' and [订单号] = \'" & dd.text & "\'") If dr Is Nothing Then dim f As New Filler f.SourceTable = DataTables("产品工序") \'指定数据来源 f.SourceCols = "图号,名称,序号,工作中心,加工提示,备注" \'指定数据来源列 f.DataTable = DataTables("计划工序") \'指定数据接收表 f.DataCols = "图号,名称,序号,工作中心,加工提示,备注" \'指定数据接收列 f.Filter = "[图号] = \'" & currenttable.current("图号") & "\'" f.Fill() \'填充数据 end if dr = DataTables("计划工艺").Find("[图号] = \'" & currenttable.current("图号") & "\'and [订单号] = \'" & dd.text & "\'") If dr Is Nothing Then dim f As New Filler f.SourceTable = DataTables("产品工艺") \'指定数据来源 f.SourceCols = "图号,名称,序号,工作中心,工艺序号,加工内容,准备工时,标准工时" \'指定数据来源列 f.DataTable = DataTables("计划工艺") \'指定数据接收表 f.DataCols = "图号,名称,序号,工作中心,工艺序号,加工内容,准备工时,标准工时" \'指定数据接收列 f.Filter = "[图号] = \'" & currenttable.current("图号") & "\'" f.Fill() \'填充数据 end if for n as integer = 0 to tables("计划工艺").count-1 if tables("计划工艺").rows(n)("图号") = tables("产品目录").current("图号") and tables("计划工艺").rows(n)("订单号")= "" \' 或这样更规范:and tables("计划工艺").rows(n).isnull("订单号") tables("计划工艺").rows(n)("订单号") = Forms("生产计划").Controls("(订单号:)").text end if next [此贴子已经被作者于2009-11-26 11:25:15编辑过]
|
||||
-- 作者:wqc360 -- 发布时间:2009/11/26 11:05:00 -- 谢谢mr725回复,不好意思,加冒号只是为了能与窗口标题一样,给你带来的不便深表歉意。您的方案我试试,再次谢谢 |
||||
-- 作者:mr725 -- 发布时间:2009/11/26 11:06:00 -- 以下是引用wqc360在2009-11-26 11:05:00的发言:
谢谢mr725回复,不好意思,加冒号只是为了能与窗口标题一样,给你带来的不便深表歉意。您的方案我试试,再次谢谢 4楼代码倒数第四行修改过了~~ |