Delphi 中使用计算出的字段
在很多情况下,我们需要的数据与数据库中其它字段的数据相关,例如订单的金额为数量与单价的乘积。在应用程序中,若要在显示订单具体条目的同时显示金额,通常要创建一个字段,在显示该字段之前先进行乘法运算,将金额值存储在该字段中。但是,若用户修改了数量或单价,那就不得不更改金额值。这个问题立刻变得复杂起来,幸好Delphi提供了在数据库表中定义附加字段的容易方法。这种字段被称为计算出的字段(Calculatedfields),它们以数据库表中的其他字段为基础。计算出的字段的优点是计算出的值不被存储在数据库中,不过,每次记录发生变化时都要对其进行计算,且需要访问和显示字段。下面说明使用计算出的字段的方法。
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组件,在弹出菜单中选取FieldsEditor…项,进入字段编辑器;再用鼠标右键单击字段编辑器的字段显示区? 在弹出菜单中选取Add Fields…项,将<fontface="bookantiqua">Table1的所有字段都加入字段编辑器中;再次用鼠标右键单击字段编辑器的字段显示区域,在弹出菜单中选取New Field…项,进入新字段编辑器,设新字段的Name为Cash,Type为<fontface="bookantiqua">Currency,FieldType为Calculated,用鼠标单击OK命令按钮,即完成了添加计算出的字段Cash。
3 .添加<fontface="bookantiqua">Table1的OnCalcFields事件。其代码为:
procedureTForm1.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栏即刻显示出与 之相应的金额值。
Delphi 中使用计算出的字段的更多相关文章
- Excel中利用IF和TIME函数计算出上下班状态!
大家都知道现在上下班实行打卡制,制作考勤的人员需要对你上下班的时间,计算出上下班的状态,比如:迟到.早退.加班.正常等.下面为您介绍一个“帮手”. 1.打开Excel文档.如下图 ...
- Delphi中获取Unix时间戳及注意事项(c语言中time()是按格林威治时间计算的,比北京时间多了8小时)
uses DateUtils;DateTimeToUnix(Now) 可以转换到unix时间,但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60这是因为Now是当前时区的时间 ...
- 输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少
输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少? 例子:输入数字9,则输出结果位9.因为[0-9]中,只有数字7有连续的三个‘1’出现,别的都没有,所以一共有9个数字 ...
- 如何在Delphi 中使用 DevExpressVCL的 CxGrid与CxTreeList,编辑某列后计算另一列的值
如何在Delphi 中使用 DevExpressVCL的 CxGrid与CxTreeList,编辑某列后计算另一列的值:比如 输入 单价,数量,计算金额. 参考: 1. 输入 单价,数量,计算金额 ...
- /* * 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 *(包括学生号,姓名,三门课成绩),计算出平均成绩, *将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。 */
1.Student类:类中有五个变量,分别是学号,姓名,三门成绩 package test3; public class Student { private int num; private Stri ...
- Delphi中统一显示表格字段名的高效方法
问题描述:在开发数据库程序时,我们经常要使用很多的表格显示组件DBGrid.当DBGrid显示某表格的数据时,其字段标题默认的就是后台数据库中的表格的字段名称.而为了数据库开发方便,后台数据库中的表格 ...
- 【OJ】 : 容斥原理计算出 1< =n < 1e9 中是2,3,5倍数的整数的数量
最近ACM时遇到个题,题意如下. 问题描述: 有个1到n的数列,数一下其中能够被 2, 的时候有 ,,,,.这5个数满足条件,所以我们应该输出 5 . 输入 多组输入到文件尾,每组输入一个 n (n ...
- 在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果
今天在公司项目中,发现一个计算运费的妙招.由于运费规则各种各样,因此写一个公式存到数据库.下次需要计算运费时,直接取出这个公式,把公式的未知变量给替换掉,然后计算出结果就是ok了. 一 ...
- ZT CSDN 如何以最快的速度计算出一个二进制数中1的个数? [
一道算法面试题:如何以最快的速度计算出一个二进制数中1的个数? [问题点数:10分,结帖人weicai_chen] 收藏 weicai_chen weicai_chen 等级: 结帖率:95.12% ...
随机推荐
- python中类的函数中的self
Python类中的self到底是干啥的 Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的 ...
- django项目部署服务器后无法发送邮箱 错误信息:Connection unexpectedly closed
使用配置: python 3.7 + django 2.2.1 发送邮件模块 : from django.core.mail import send_mail 服务器:Centos7 阿里云轻 ...
- js数值的添加与删除
js中数组元素的添加和删除 js中数组元素常用添加方法是直接添加.push方法以及unshift方法 删除方法则是delete.pop.shift 集修改方法为一身的则是splice 1.添加: (1 ...
- Kafka ISR and AR HW 、 LEO
相信大家已经对 kafka 的基本概念已经有一定的了解了,下面直接来分析一下 ISR 和 AR 的概念. 0|1ISR and AR 简单来说,分区中的所有副本统称为 AR (Assigned Rep ...
- web大文件分块上传断点续传demo
一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...
- 鼠标经过提高层级案例(margin,相对定位,z-index)
<body> <ul> <li class="box1">1</li> <li class="box2"& ...
- SAM:后缀自动机
好文转载 luoguP3804 代码: /* 定义.对给定字符串s的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串s的所有后缀. 对给定字符串s的后缀自动机是一个最小化确定有限状态自动机, ...
- biiset用法
C++ bitset--高端压位卡常题必备STL 以下内容翻译自cplusplus.com,极大地锻炼了我的英语能力. bitset存储二进制数位. bitset就像一个bool类型的数组一样,但是有 ...
- CAN信号转以太网究竟怎么回事?TCP转CAN又是什么?
首先说说can总线. can总线是目前工业控制领域应用最广的现场总线,它可以实现远距离信息的传输,是各种设备和各类功能部件之间传送信息的公用通道,它是由导线组成的传输线束,用于连接体统中的各个节点,传 ...
- SQL Server 2008R2安装
SQL Server 2008详细安装过程及配置 https://www.cnblogs.com/rewwensoftware/p/9580697.html SQL Server 2008R2 百 ...