4.1 窗体设计:从向导原型到录单台


4.1 窗体设计:从向导原型到录单台

本节摘要:窗体是数据表的"前台"。本节完整走一遍华彩录单窗体的诞生过程:向导起手、绑定记录源、控件改造(文本框换组合框)、默认值与 Tab 键序调优,最后给出录入体验的五条军规。

接到任务时,仓管员老李的原话是:"我不管你弄多花哨,我要三样——录得快、选得准、错了马上知道。"这三句就是本节的需求规格书。

一、十分钟原型:让向导先跑起来

Access 的窗体向导常被老手嘲笑,我的建议恰恰相反:永远从向导开始。它十秒钟生成一个能用的骨架,暴露字段绑定、布局、Tab 键序这些底层件,你在骨架上改,比白手起家快得多。

操作过程:创建组点"窗体向导"→ 数据源选订单表 → 把业务单号、下单日期、客户 ID、业务员、状态五个字段请进右侧列表 → 布局选"纵栏表" → 标题定为录单台 → 完成。得到的东西朴素但已经能用:每个字段一个文本框加标签,底部自带导航按钮和新增按钮。

第一步验收标准只有一个:翻看几条已有记录,数据正确显示。原型合格再动刀,动手前先讲清窗体的心脏机制。

二、核心机制:绑定与记录源

窗体每个能显示数据的控件都绑着两个字段地址:窗体级的"记录源"说数据从哪张表或哪个查询来,控件级的"控件来源"说这个框对应哪一列。理解了这两层绑定,窗体的一切行为都变得可预测:

  • 在文本框里改个字,等于直接改了表里那行——没有保存按钮也要有这个觉悟,Access 即改即存;
  • 记录源完全可以换成查询而非表,这意味着你可以让窗体只显示"未作废订单"、只开放部分列;
  • 想要纯展示不落库的元素(标题、合计行),把控件来源留空改放表达式即可。

即改即存是把双刃剑:方便是真的方便,但用户按错键也立即生效。所以后面每一步防错设计,本质都在为这个特性上保险。

三、四轮改造:从原型到顺手

第一轮:把容易错的手输改成选择。 客户 ID 让人填数字是灾难设计——老李不可能记住恒信文具的编号是一零二三。删除该文本框,重新放一个组合框控件,行来源设为客户表,绑定列设 ID 列、显示列设客户名称列。这样老李看见的是名字下拉,机器存的还是编号。三个高频字段全部照此办理:客户、业务员用组合框查员工表、状态用值列表(分号分隔的自定义清单)。

第二轮:默认值抢跑。 下单日期的默认值属性填 Date(),状态默认"待确认",业务员默认当前登录人。九成情况下这些值的猜测是对的——默认值的哲学不是省事,是把决策压力从录入员身上卸下来。

窗体常用默认值表达式备查 当天日期 =Date() 当月第一天 =DateSerial(Year(Date()), Month(Date()), 1) 七天之后 =Date()+7 取另一控件的值 =[下单日期]

第三轮:格式与校验上双保险。 数量框的"有效性规则"设为大于零、"有效性文本"写成人话——"数量必须大于零,发货为零请走作废流程"。这条规则在表层早有部署(第 2 章),窗体层再挂一次的意义是:错误当场弹窗当场可改,而不是整行保存失败时才报一个不知所云的系统提示。两道防线一点也不重复。

第四轮:Tab 键序排兵布阵。 老李两只手不离键盘,Tab 顺序就是他的工作动线。设计视图里右键窗体空白处选"Tab 键序",拖拽调整成业务动作的自然次序;输入完最后一个必填字段直接回车落在保存触发点上。这是最不起眼却最被夸奖的一项改造——顺手的工具没有一个多余的按键。

图题:录单窗体的信息流与防线布局

图题:录单窗体的信息流与防线布局

四、主子结构一笔

订单录到一半发现还得填明细怎么办?窗体支持嵌套:主窗体绑订单表,子窗体控件绑订单明细表(或其连续窗体形态),父子靠"链接主字段 / 链接子字段"这对属性自动同步。老李的实际用法变成:上半屏填单头、下半屏连续添货品行,焦点跳转全凭回车。主子窗体的绑定原理与本节完全一致,只是多了对链接字段,自行可以举一反三。

五、验收录单台的三道现场测试

界面做完不算完,老李们替我们验过三关才算交付。这三道测试后来成了固定验收项目:

盲打测试。 关掉显示器提示音,让使用者全程只动键盘录一张五品行的单子:Tab 顺序是否顺畅、组合框键入首字能否直接命中、保存后焦点是否回到第一格。任何一处卡顿都意味着下一千张单子里的一千次皱眉。

手滑测试。 故意在数量里输入零、负数、字母,在客户未选的情况下点保存,中途按 Esc、Ctrl+Z 和直接关窗体。观察两件事:错误提示是不是人话;半成品数据有没有留在表里。未保存即关闭的场景要格外当心——绑定窗体的改动即时落盘(上一节讲过的机制),"随手关窗"式操作习惯的用户面前,必须在 Form_BeforeUpdate 事件里设一道挽留确认。

' 防误关:有改动且关键列为空时拦截 Private Sub Form_BeforeUpdate(Cancel As Integer) If IsNull(Me.CustomerID) Then MsgBox "客户还没选,这单存不下来。", vbExclamation, "缺信息" Cancel = True ' 取消本次落盘 光标留在原处 End If End Sub

回看测试。 第二天请使用者自己翻出昨天录的单改一个错字再撤销。能独立完成说明导航清晰;如果他要打电话求助,说明查找界面的入口做得还不够傻。

三关全过后再谈美化也不迟——顺序反了就是给粗糙的流程涂指甲油。

组合框的四项关键属性速查

录单台的灵魂控件是组合框,其行为几乎全由四个属性决定,值得单独一张卡片:

属性速记 行来源类型 表查询语句 三选一 决定名单从哪来 行来源 具体的 SQL 或表名 建议用现成小查询 绑定列 第几列的值写进字段 一般是隐藏的 ID 列 列数列宽 显示几列 各列宽度 零宽即隐藏 典型配置 两列显示 名称可见 ID 零宽 绑定第一列

两列显示是体验分水岭:使用者敲拼音首字就能看到"编码 + 全称"并排出现,选错率断崖式下降;而真正写进表的仍是那一列枯燥但稳定的 ID——这正是第 2 章"机器键与人类语分家"原则在界面层的回声。把这张卡贴在手边,窗体开发里八成的组合框问题当场有解。

本节交付清单

补一条容易被轻视的选择题:文本框还是组合框,判据是"这列的值是从有限名单里选,还是自由创作"。名称选组合框,备注留文本框——但日期介于两者之间,我们一律给日历控件加默认值,让使用者点两下而不是敲八下。每一个这类微决策叠加起来,就是你系统口碑的全部来源。

本节交付清单

  • 向导起手拿骨架,理解记录源与控件来源两层绑定后再动刀。
  • 组合框消灭手工编号,默认值替人做大概率正确的决定。
  • 有效性规则配人话提示,双层校验让错误在发生地就地解决。
  • Tab 键序对齐业务动线,键盘党效率倍增器。
  • 主子窗体一次搞定一单多头的数据形态。

录入端成了。输出端的单据怎么打出来——报表,下一节。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U