自己对DELPHI学习的一点体会
源代码在线查看: 在delphi 中使用计算出的字段 (2001年4月6日).txt
在Delphi 中使用计算出的字段 (2001年4月6日)
网友更新 分类:数据库 作者: winfit(推荐) 推荐:winfit 阅读次数:267
(http://www.codesky.net)
--------------------------------------------------------------------------------
在 很 多 情 况 下, 我 们 需 要 的 数 据 与 数 据 库 中 其 它 字 段 的 数 据 相 关, 例 如 订 单 的 金 额 为 数 量 与 单 价 的 乘 积。 在 应 用 程 序 中, 若 要 在 显 示 订 单 具 体 条 目 的 同 时 显 示 金 额, 通 常 要 创 建 一 个 字 段, 在 显 示 该 字 段 之 前 先 进 行 乘 法 运 算, 将 金 额 值 存 储 在 该 字 段 中。 但 是, 若 用 户 修 改 了 数 量 或 单 价, 那 就 不 得 不 更 改 金 额 值。 这 个 问 题 立 刻 变 得 复 杂 起 来, 幸 好Delphi 提 供 了 在 数 据 库 表 中 定 义 附 加 字 段 的 容 易 方 法。 这 种 字 段 被 称 为 计 算 出 的 字 段(Calculated fields), 它 们 以 数 据 库 表 中 的 其 他 字 段 为 基 础。 计 算 出 的 字 段 的 优 点 是 计 算 出 的 值 不 被 存 储 在 数 据 库 中, 不 过, 每 次 记 录 发 生 变 化 时 都 要 对 其 进 行 计 算, 且 需 要 访 问 和 显 示 字 段。 下 面 说 明 使 用 计 算 出 的 字 段 的 方 法。
1. 建 立 新 的 工 程 文 件project1, 在form1 上 放 置 一 个Table、 一 个Datasource 和 一 个Dbgrid 控 件,Datasource1 的Datasource 属 性 为Table1,Dbgrid1 的Datasource 属 性 为Datasource1。Table1 中 所 用 的 数 据 库 表 为order.db, 将Table1 的Active 属 性 置 为True。 下 面 是Table1 的 定 义:
字 段 名 类 型 说 明 字段含义
Productid + 产 品 编 号
Quantity N 数 量
Price $ 单 价
2. 添 加 计 算 出 的 字 段Cash。 用 鼠 标 右 键 单 击Table1 组 件, 在 弹 出 菜 单 中 选 取Fields Editor … 项, 进 入 字 段 编 辑 器; 再 用 鼠 标 右 键 单 击 字 段 编 辑 器 的 字 段 显 示 区 域, 在 弹 出 菜 单 中 选 取Add Fields … 项, 将Table1 的 所 有 字 段 都 加 入 字 段 编 辑 器 中; 再 次 用 鼠 标 右 键 单 击 字 段 编 辑 器 的 字 段 显 示 区 域, 在 弹 出 菜 单 中 选 取New Field … 项, 进 入 新 字 段 编 辑 器, 设 新 字 段 的Name 为Cash,Type 为Currency,Field Type 为Calculated , 用 鼠 标 单 击OK 命 令 按 钮, 即 完 成 了 添 加 计 算 出 的 字 段Cash。
3 . 添 加Table1 的OnCalcFields 事 件。 其 代 码 为:
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
var
quantity1:single;
price1:Currency;
begin
quantity1:=Table1.FieldByName('quantity').asfloat; //数量
price1:=Table1.FieldByName('price').asCurrency; //单价
Table1.FieldByName('cash').asCurrency:=quantity1*price1; //应付资金
end;
运 行 程 序, 你 可 以 在 表 格 的Quantity 和Price 栏 中 任 意 修 改 数 据 并 移 动 记 录,Cash 栏 即 刻 显 示 出 与 之 相 应 的 金 额 值
--------------------------------------------------------------------------------