别人拿了一个MDE文件来,问了一些问题。对于什么打飞之类的流程我是一瞧不通,不过这个程序倒是做的简明易懂,在网友的请求之下,选了两个模块几个窗体,花了几个小时模仿着做了几个窗体。在这里谈谈这几个“山寨”窗体的制作过程,或许对一些初学者有帮助。
我是分开三次来做的,正好分作三个阶段文件。
首先是导入表和查询,这是山寨的第一步。原程序的明明原则做的不错,对象名称各功能之间用下划线作为分割,各个表急查询的功能一目了然,也为我的山寨操作生了不少力气。只需倒入了“裁床打飞”打头的表和查询和“共同”打头的几个公用信息表和查询就行了。
第二步,建窗体。由于是mde文件,窗体是无法导入的,只好自行新建了(当然国外有一个mde转mdb的程序,由于是抱着学习的态度,导入窗体这一步就免了,只是用编辑视图打开mde窗体,复制一下控件而已:)。
1、第一个是“裁床打飞_裁床单_主”窗体,与这个名称相关的还有三个子窗体和其中两个的编辑窗体,总共有六个窗体。操作和分析了一下各窗体的数据的关系,发现这个主窗体与其中的“款号”子窗体,其实就是论坛中流传已久的“刘小军查询窗体”,再操作一下查询按钮和看看窗体的数据源,判断是修改子窗体的“数据来源”来进行查询的。这里就使用“通用查询窗体”的方法搞定那个查询按钮的功能。
2、接下来,看“款号”子窗体和另外两个子窗体:“床次”和“工序”分别都是一对多的关系:这就是“多个子窗体之间的关联显示”的关系和方法了。这有多个方法可以出现:可以在主窗体中使用一个公式文本框做主关联字段,然后设置两个子窗体的主、子关联字段属性就可以了,不需要编程。操作原程序发现,单独打开子窗体要求输入参数,“款号”子窗体的成为当前事件有代码,那就是采用窗体参数来进行关联的筛选显示了,这里就按找他的做法来完成吧。在“款号”子窗体的成为当前事件刷新一下“床次”和“工序”子窗体就是了。
3、把三个子窗体分别建好,默认设为数据表视图模式,打开来一看,跟原来的窗体还是有点不大一样。对了,是窗体的底色、表格线的颜色和字段的隐藏和宽度不同。单独打开个子窗体,用格式菜单中功能进行设置一下,隐藏了id等字段,调整了字段的宽度和顺序,保存退出。对子窗体数据表格式调整完后,现在就是一模一样了,山寨也要有点职业精神嘛。
4、主窗体上的“款号”和“床次”子窗体分别有增加和修改的编辑按钮,双击两个子窗体的各字段都会弹出一个编辑窗体。这就是通常所说的“弹出式编辑窗体”了,经常会用在数据表是子窗体和ListView表格控件显示的数据进行编辑。这两个编辑窗体很简单,就是用向导生成几个窗体记录的操作按钮就行了。新增记录和修改记录调用的是同一窗体,只是窗体打开的参数不同罢了。另外要记得的就是在窗体数据保存或删除的时候,重更新一下调用他的子窗体的数据就行了。我把这两个编辑窗体设置成弹出和模式,原来的程序好像没有设成弹出,这样原来最大化的主窗体和编辑窗体的最大化和还原操作时,会有闪动的感觉。还有一点值得一提的是,“床次”子窗体是款号的子记录,他的款号ID字段是要求赋值的(关联子窗体会自动赋值),弹出式的就要用代码进行赋值了,我偷了一下懒,在ID文本框中,新增记录利用默认值属性引用其他窗体值自动赋值。
5、最后还有一个按钮就是“设置工序”。原来这个按钮的功能就是根据输入的工序总数,在工序表中“自动生成多条记录”。这个功能有多个方法实现,最简单的就是使用追加查询进行插入记录,也可以用循环语句对窗体的记录和字段进行操作,当然也可以用ADO等对表进行操作。观察原程序,看他记录是一条条增加的,估计就是采用循环语句对窗体的记录和字段进行操作了。我想用SQL语句操作更加简单,就增加了一个序号表,用作追加序号记录的记录源,改为追加查询语句操作了,当然追加记录前别忘了用SQL语句直接操作记录——删除掉当前“款号”下的工序记录。
程序放在论坛帖子中: