机房收费系统之结账


关于机房收费系统的结账问题大家有着不一样的见解,所以整体的结账我不再赘述,不过其中的一个问题我想说明一下,就是那个上期余额的获取。
在日结账的那张表里,关于上期余额,大家普遍认为是昨天的allcash本期余额,可是如果今天已经结过账,然后又有人上机,那再次结账时,那个上期余额怎么算?
所以,我说一下我的解决方案。
在解决之前,我把里边的原来某些不合格的记录都删除,可是报错了。 机房收费系统之结账_第1张图片
上网查后,解说:错误原因是表里有重复记录,所以不能直接右击删除,只能写sql语句:
delete from CheckDay_Info where date = '2014-9-2'
这样就轻松搞定了。
进入正题:
1·考虑如何获得checkday_info最后一行?
select top 1 * from Line_Info order by serial desc
这样
可以,可是另一个问题有出来了,checkday_info表中没有标示列,其他也没有合适的列供排序找最后一行,怎么办?
2·添加标识列
(1)如何添加一列?
<span style="white-space:pre">		</span>alter table checkday_info add serial numeric(18, 0)
(2)修改属性(注意箭头指的位置)
机房收费系统之结账_第2张图片
3)标识列添加成功
3·vb里写代码
  '获取上期余额remaincash,这里的上期余额就是上一条记录的allcash
    txtsql = "select top 1 * from checkday_Info order by serial desc"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    remaincash = mrc!allcash
    
    mrc.Close

4·成功获取(如图)
机房收费系统之结账_第3张图片


5一些sql语句小结
1· 往表里添加一列
alter table checkday_info add serial numeric(18, 0)
添加标识列:不允许有空值,且在属性中“是否标示”选择是,就ok了
格式: alter table 表名 add 列 类型
2· 加一行数据:
insert into 表名 values(数据1,数据2,。。。)
3·选取数据库表中最后一行数据
select top 1 * from Line_Info order by serial desc
4·选取第一行数据
select * from CheckDay_Info order by serial asc
5·删除某条记录
delete from CheckDay_Info where date = '2014-9-2'

























你可能感兴趣的:(数据库,delete,desc,asc,机房收费系统结账)