以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [分享]仓库管理系统  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92180)

--  作者:bobolan521
--  发布时间:2016/10/28 9:16:00
--  [分享]仓库管理系统

图片点击可在新窗口打开查看

[此贴子已经被作者于2020/6/18 8:39:41编辑过]

--  作者:有点蓝
--  发布时间:2016/10/28 9:19:00
--  
顶一个
--  作者:bobolan521
--  发布时间:2016/10/28 9:24:00
--  
先预留几楼
1、基础资料表我们就暂不讲解了,下面我们来看一下这几张表
图片点击可在新窗口打开查看此主题相关图片如下:a.png
图片点击可在新窗口打开查看

这张表用来登记每一表中,哪些字段是必填的,哪些字段是允许编辑的,哪些字段是否合计

2、单据配置表

图片点击可在新窗口打开查看此主题相关图片如下:b.png
图片点击可在新窗口打开查看

单据配置表,是用来记录某种单据类型表头和表体要显示的字段、必填字段,具体内容大家可看见表格内

3、用户配置表
图片点击可在新窗口打开查看此主题相关图片如下:c.png
图片点击可在新窗口打开查看

用户配置表是用来记录,每个用户在每个窗体表格里,可见的字段以及列宽,新用户第一次打开窗体后可以自动新增记录。并且保存用户设置的列宽

4、日志表 
图片点击可在新窗口打开查看此主题相关图片如下:d.png
图片点击可在新窗口打开查看
用来记录每一个用何时打开、关闭、保存等操作。

5、内部函数表 
图片点击可在新窗口打开查看此主题相关图片如下:e.png
图片点击可在新窗口打开查看

用来记录常用的一些代码,在项目加载后自动增加,并可调用。


[此贴子已经被作者于2016/10/28 9:53:59编辑过]

--  作者:bobolan521
--  发布时间:2016/10/28 9:25:00
--  
下面我们来进入软件窗体的一些解讲吧
我们公司使用的是金碟K3软件,出入库单据有,外购入库、生产领料,其他入库、基他出库、委外入库、委外出库、销售出库、产品入库等常用的单据
单据比较多,所以此次设计考虑所有单据共用一个制单窗体。


图片点击可在新窗口打开查看此主题相关图片如下:f.png
图片点击可在新窗口打开查看

首先我们来看仓库模块、菜单上有外购入库、和生产领料,不论我点击哪个,其他跳出来的窗体都是同一个,但是窗体的标题会自动从菜单中读取。

但是外购入库的窗体上有供应商、生产领单上不需要啊,这时我们的单据配置表就起作用了,自动来判断哪些字段该显示,哪些字段为必填字段。

 

 

项目加截事件中

添加以下代码,实现自动读取从内部函数表中的记录,来生成内部函数,以方便调用,通过数据表来保存内部函数代码

Dim drs As new List(Of DataRow)
drs = DataTables("内部函数").sqlSelect("")
For Each dr As DataRow In  drs
    Functions.remove(dr("名称"))
    Functions.Add(dr("名称"),dr("代码")  )
    Functions.Complie()
Next

 

 

窗体打开后 afterload的代 码

 

_ckmc =e.Form.Name

Dim r As Row =Tables("出入库单主表").AddNew()
r("单据类型")= _djlx
Tables(e.Form.Name & "_制单表").Filter ="单据编号=\'" & r("单据编号") & "\'  "

Functions.Execute("打开")  (此处执行的内部函数,打开窗体后,自动记录下某个用户,几点几分,登录了这个窗体)
Functions.Execute("窗口")  
Functions.Execute("打开制单")(表头必填,表体必填的字段自动着色,不允许填写的字段自动锁定)

 
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看



\'\'\'\'\'\'表头显示字段/表头必填字段

Dim dra As DataRow = DataTables("单据配置表").Find("单据类型=\'" & _djlx & "\' and 窗口名称=\'" & _ckmc & "\' ")
_btzd  = "|" & dra("单据体必填字段") & "|"        \'\'\'\'\'\'\'\'\'

r("方向")=dra("方向")


Dim xszd As String = dra("单据头显示列")
Dim btzd As String = dra("单据头必填字段")
For Each c As WinForm.Control In e.Form.Controls
    If btzd.Contains(c.Name)=True Then
        c.BackColor = Color.yellow (表头必填字段为黄色)
    End If
   
    If Typeof c Is WinForm.ComboBox=True Or  Typeof c Is WinForm.Label=True Or Typeof c Is WinForm.DateTimePicker =True Then
        If   xszd.Contains(c.Name.Trim("_"))=True  Or c.Name.Contains("选单号")=True  Or c.Name.Contains("源单类型")=True Or c.Name.Contains("方向")=True  Then
            c.Visible =True
        Else
            c.Visible =False
        End If
    End If
Next
\'\'\'\'\'\'表头显示字段/表头必填字段

 

Dim lx As WinForm.Label = e.Form.Controls("外购入库")
lx.Text = _djlx
lx.Visible =True
e.Form.Text = _djlx


[此贴子已经被作者于2016/10/28 19:04:58编辑过]

--  作者:bobolan521
--  发布时间:2016/10/28 9:26:00
--  

2016年11月1日新增单设置功能

通过窗体来设置每张单据,修改单据配置表,来显示单据头和单据体要显示的字段和必填字段,以及列宽

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

窗体里的datacolchanged事件中增加以下代码

 

Dim ctmc As WinForm.ComboBox = e.Form.Controls("窗口名称")
Dim djlx As WinForm.ComboBox = e.Form.Controls("单据类型")
Dim btbt As WinForm.ComboBox = e.Form.Controls("表头表体")

If btbt.Value="表头" Then
   
    If e.DataCol.Name = "是否显示" Or e.DataCol.Name = "是否必填" Then
       
        Dim s As String
        Dim m As String
        For Each r As Row In Tables(e.Form.name & "_table1").Rows
            If r("是否显示") = True Then
                s = s & r("字段") & "|"
            End If
            If r("是否必填") = True Then
                m= m & r("字段") & "|"
            End If
           
        Next
        s=s.Trimend("|")
        m=m.Trimend("|")
       
        Dim dr As DataRow
        dr = DataTables("单据配置表").SQLFind( "窗口名称 = \'" & ctmc.Value & "\' and 单据类型 = \'" & djlx.Value & "\'" )
        If dr IsNot Nothing Then
            dr("单据头显示列") = s
            dr("单据头必填字段") = m
            dr.Save
        End If
    End If
ElseIf btbt.Value="表体" Then
   
    Dim s As String
    Dim m As String
    For Each r As Row In Tables(e.Form.name & "_table1").Rows
        If r("是否显示") = True Then
            s = s & r("字段") & "|" & r("宽度") & "|"
        End If
        If r("是否必填") = True Then
            m= m & r("字段") & "|"
        End If
       
    Next
    s=s.Trimend("|")
    m=m.Trimend("|")
   
    Dim dr As DataRow
    dr = DataTables("单据配置表").SQLFind( "窗口名称 = \'" & ctmc.Value & "\' and 单据类型 = \'" & djlx.Value & "\'" )
    If dr IsNot Nothing Then
        dr("单据体显示列") = s
        dr("单据体必填字段") = m
        dr.Save
    End If
    \'
End If

[此贴子已经被作者于2016/11/1 10:38:08编辑过]

--  作者:bobolan521
--  发布时间:2016/10/28 9:26:00
--  

 


图片点击可在新窗口打开查看此主题相关图片如下:aa.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:bbb.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:ccc.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/8/2 16:19:19编辑过]

--  作者:gryy
--  发布时间:2016/10/28 9:36:00
--  
数据库无法连接
--  作者:狐狸爸爸
--  发布时间:2016/10/28 9:42:00
--  
图片点击可在新窗口打开查看
--  作者:大师别封我号呀
--  发布时间:2016/10/28 9:45:00
--  
显示:创建外部链接失败,重新设置链接字符串
--  作者:bobolan521
--  发布时间:2016/10/28 9:55:00
--  
看来移动的光纤真的有问题,OK,谢谢反溃,我会想办法解决