跳转到主要内容
HPO Software 分步式 4D 数据库与低代码应用构建指南 —— 从创建首张表到打造可运行的商业应用。

本站部分链接为联盟营销链接:如果您通过这些链接购买,我们可能会获得佣金,且不会增加您的成本。这绝不会影响我们的推荐建议。详情请参阅我们的联盟披露声明。 联盟营销披露.

第四维度学习基础知识

要点

  • 4D 中的数据输入仅通过 输入/详细信息表单 (Input/Detail form) 进行 —— 输出/列表表单 (Output/List form) 是只读的,当您与之交互时,它只需将您路由回输入表单。
  • 表单之间的切换是一项核心导航技能:按 Enter 离开输入表单,在输出表单上的任意位置 双击 即可返回。
  • 值列表(选择列表)是在输入点保持数据干净的机制 —— 它们限制用户可以输入的内容,而不是依赖事后验证。
  • 当您保存第一条记录时,4D 会在磁盘上创建物理数据库文件夹及其支持文件 —— 这就是您将要备份、移动并最终部署的结构。
  • 输入示例数据并不是一项繁琐的工作:它是在您在表、字段、表单和值列表之上构建任何内容之前,验证它们是否真正协同工作的方式。

为什么数据输入是对您设计的真正考验

到目前为止,在学习序列中,您已经创建了一个数据库、设置了其属性、定义了表和数据字段、构建了表单并连接了值列表。输入样本数据是所有这些决策与现实相结合的地方。一个在结构编辑器中看起来合理的字段,一旦您尝试在其中键入实际值,可能会发现其类型错误。一个看似完整的值列表可能会缺少用户实际需要的一个选项。一个在表单编辑器中看起来平衡的表单布局,当您使用键盘通过 Tab 键浏览时,可能会变得很尴尬。

这就是为什么经验丰富的 4D 开发人员将第一次数据输入视为一次 设计审查,而不是一项数据加载的苦差事。您不仅仅是在填写表格 —— 您是在同时对架构、表单和选择列表进行压力测试。如果现在感觉有些笨拙,那么一旦您拥有数百条记录且下游报告依赖于此,情况将会糟糕得多。

输入数据:机制

在开始之前,请确保您处于 用户模式 (User mode)。在 4D 的经典体系结构中,环境区分设计模式(用于编辑结构、表单和代码)和用户模式(用于实际处理记录)。数据必须通过 输入/详细信息表单 输入。您无法在输出/列表表单上输入数据 —— 该表单是为浏览和列出而设计的,而非编辑。

如果您尝试这样做,4D 是宽容的:双击数据字段或输出表单中的任何位置,只需将您切换到输入表单。这种行为是有意为之的,值得内化,因为它意味着输出表单可以兼作导航界面。

进入输入表单后,输入数据的方式与任何数据库应用程序非常相似:

  • 点击 字段可直接将光标放置在该处。
  • Tab 键按顺序浏览字段 —— 这通常比点击更快,并且它遵循您在表单中定义的字段顺序。
  • 当字段附加到值列表时,会出现 弹出列表;您点击要选择的项目,4D 将该值写入该字段。

最后一点是您之前所做的值列表工作的回报。一个精心构建的选择列表意味着用户永远不必记住类别、状态或区域的确切拼写 —— 他们从受控词汇中进行选择。这与关系数据库理论中所称的 域约束 (domain constraint) 原理相同,它是您可以构建的最廉价且最高价值的数据完整性形式之一。如果您想要正式的背景信息,关于 数据库规范化 的维基百科文章解释了为什么查找字段中的受控值可以减少冗余和更新异常。

Related: — The long-running for teams that need custom apps on desktop, web, and mobile from a single file..

在输入和输出表单之间切换

两种表单类型之间的导航被刻意简化,值得将其转化为肌肉记忆:

  • 从输入表单: 按 Enter 切换回输出表单。
  • 从输出表单: 双击表单上的任意位置以切换到输入表单。

这里有一个会让新来者感到困惑的微妙之处。在输入表单中按 Enter 键具有双重作用 —— 它既验证/接受当前记录,又将您返回到列表。这意味着,如果您输入了无效内容(与字段类型不匹配的值,或必填字段留空),4D 可能会将您留在表单上而不是让您离开。请将此视为一项功能:这是数据库拒绝接受错误数据,而这正是您想要的。

一个实用的习惯:输入每条记录后,浏览一下输出表单,以确认记录确实出现且值位于您期望的列中。输出表单是对您刚刚保存的内容进行最快可视化审核的方式。

Our pick: — A spreadsheet-simple interface sitting on top of a real relational database, with automations, views, and shareable interfaces..

实例演练:输入您的第一条记录

假设您的示例数据库跟踪联系人,包含名称、类别和区域字段,且类别和区域字段附加了值列表。一次干净的输入过程如下:

  1. 切换到 用户模式。
  2. 双击输出表单以打开 输入表单。
  3. 点击名称字段并输入一个值。
  4. Tab 到类别字段。因为它绑定到值列表,所以会出现一个弹出窗口 —— 选择一个选项而不是键入。
  5. Tab 到区域字段,并以相同的方式从其列表中进行选择。
  6. 按 Enter 接受记录并返回到输出表单。
  7. 确认新行出现并包含您选择的值。
  8. 对更多记录重复此操作,故意改变值,以便测试不同的列表选项。

第 8 步比听起来更重要。如果您只输入一个类别,您永远不会发现列表中缺少第二个类别,或者字段太窄而无法显示更长的值。通过改变样本数据,您可以在修复成本仍然较低时找到这些差距。

4D 在磁盘上创建什么

保存记录时,4D 会将数据库具体化为磁盘上的一个 文件夹,其中包含结构文件、数据文件和支持资源。这就是您最终将复制、备份和部署的产物。了解数据库是一个文件夹(而不是单个不透明文件)出于以下几个实际原因非常重要:

  • 备份 必须捕获整个文件夹,而不仅仅是一个文件,否则您将面临结构/数据不匹配的风险。
  • 在计算机之间移动数据库 意味着完整地移动文件夹并保留其内部相对路径。
  • 结构的 版本控制 是可能的,但数据文件本身通常不是提交的内容。

如果您具有单文件桌面数据库背景,那么这种基于文件夹的模型是 4D 工作中第一个真正不同的点之一,值得尽早了解。关于数据库管理系统如何将结构与数据分离的更广泛概念,请参阅维基百科关于 数据库管理系统 的概述。

如何决定输入什么作为示例数据

并非所有样本数据都同样有用。一个简短且经过深思熟虑的集合胜过一个庞大且随机的集合。决定输入内容时请使用这些标准:

  • 至少覆盖每个值列表选项一次。 这证明每个选项都是可访问的并能正确显示。
  • 每个字段包含一个边缘情况。 例如:非常长的名称、数字范围边界处的值、空白的可选字段。
  • 输入至少一条您打算删除的记录。 您想要在实际数据存在之前确认删除行为符合预期。
  • 使记录多样化,以便输出表单有可排序和扫描的内容。 一组几乎相同的行无法告诉您关于列宽或可读性的任何信息。
  • 保持集合较小。 五到十个精心挑选的记录通常足以验证设计;您是在测试架构,而不是填充生产环境。

这反映了软件测试中称为 边界值分析 (boundary value analysis) 的实践 —— 在可接受输入的边缘(缺陷聚集地)进行测试。关于 软件测试 的维基百科文章涵盖了此类技术系列。

Related: — Enterprise-grade low-code app development wired into Microsoft 365, Dataverse, and Power Automate..

此阶段的常见陷阱

当人们第一次在 4D 中输入数据时,一些问题会反复出现:

  • 尝试在输出表单上键入。 它不会接受输入,只会将您弹回输入表单。这是设计使然,而非 Bug。
  • 在值列表字段中键入而不是选择。 根据列表的配置方式,自由键入可能会被拒绝或创建意外的值。建议从弹出窗口中选择。
  • 忘记按 Enter 键。 如果您在未接受的情况下离开,记录可能无法保存。请养成按 Enter 的习惯。
  • 假设表单关闭就意味着记录已保存。 请始终在输出表单上进行验证。
  • 在检查设计之前输入数十条记录。 先修复架构和表单,然后再批量输入。

这在学习路径中处于什么位置

这一步 —— 输入示例数据 —— 是基础序列的最后一步:创建数据库、设置属性、定义表、定义数据字段、构建表单、连接值列表,最后输入数据。一旦您能够可靠地输入、查看和导航记录,您就拥有了一个可用的 4D 数据库 和一个可以构建的心智模型。接下来的所有内容(查询、报告、方法以及最终的部署)都假设您已经熟悉这个循环。

对于来自其他平台的开发人员,了解 4D 的方法源自与 Microsoft Access 和 FileMaker 等产品相同的关系传统会有所帮助,但它拥有自己的语言和以表单为中心的工作流程。关于 4D(编程语言) 的维基百科文章提供了该平台在更广泛领域中所处位置的有用背景信息。

Reader favorite: — A builder aimed at portals, directories, and internal tools — with flat-rate pricing instead of per-user fees..

常见问题

为什么我不能直接在输出表单上输入数据?

输出表单设计用于浏览和列出记录,而非编辑。当您双击字段或表单上的任意位置时,4D 会自动将您切换到输入/详细信息表单,所有数据输入都在那里进行。这种分离使列表视图保持快速,并防止您在扫描记录时进行意外编辑。

如何在输入和输出表单之间来回切换?

从输入表单中,按 Enter 返回到输出表单。从输出表单中,双击任意位置以打开输入表单。这两个手势是用户模式下的核心导航循环,值得练习直到成为本能。

如果我在字段中输入无效值并按 Enter 会发生什么?

4D 可能会让您停留在表单上而不是接受记录,因为该值与字段类型不匹配或必填字段为空。这是数据库在保护其自身完整性。请更正值并再次按 Enter 保存。

我需要输入大量样本数据吗?

不需要。一组经过深思熟虑的、包含五到十条记录的小集合(涵盖每个值列表选项并包含几个边缘情况)比大量随机批次有用得多。您是在验证设计,而不是填充生产数据库。

当我保存记录时,4D 在磁盘上创建什么?

4D 创建一个数据库 文件夹,其中包含结构文件、数据文件和支持资源。由于数据库是一个文件夹而非单个文件,因此备份和移动必须捕获整个文件夹,以避免结构/数据不匹配。

在构建更多功能之前,输入示例数据真的有必要吗?

是的 —— 这是确认表、字段、表单和值列表协同工作的最快方法。一旦查询、报告和方法依赖于架构,那些原本很容易解决的问题将变得代价昂贵。请将这次过程视为一次设计审查,而非一项苦差事。


Build a Client Portal in a Day

A no-code database builder aimed at portals, directories, and internal tools — with flat-rate pricing instead of per-user fees.