怎样才能实现?(我全部家当奉上〕(80分)

  • 主题发起人 主题发起人 huishu
  • 开始时间 开始时间
H

huishu

Unregistered / Unconfirmed
GUEST, unregistred user!
假设我要输入职工的加班情况,现有Table两个:
employee(id,name,deptartment...),Primary key=id
extrwork(id,extrday,extrtimes),Primary key=id+extrday(加班的日期)
要实现如下功能:
1.form如下:
====编号===姓名===加班时间
00000001===XYZ====times
...
2.输入部门和日期,如果该部门在该日的加班已输入,则可修改
3.如果该部门该日的加班没有输入,则所有加班时间为0,等待输入
====================
由于刚用delphi开发数据库应用,我现在用Query+DBGrid,不能修改和输入
用的SQL=
select employee.id,employee.name,extrwork.extrtimes
where employee.id*=extrwork.id and employee.department=:dept and extrwork.extrday=:day;
除了用一个临时表外,还有没有其他的办法?大虾们帮帮我吧。





 
>>不能修改和输入
SQL改为Select * ....
 
>>不能修改和输入
query的属性requestlive:=true;
 
3其实和2是一回事:
Step1:输入部门、时间
Step2:在加班表中生成所有人的加班记录,加班时间为0

SQL语句如下:
insert into extrwork(id,extrday,extrtimes)
select id,指定的日期,0 from employee
where department=指定的部门
and not exists
select * from extrwork
where extrday=指定的日期 and extrwork.id=id

<B>ExecSQL;</B>

然后实现2:
select * from extrwork
where extrday=指定的日期
and exist
select * from employee
where department=指定的部门 and employee.id=id

<B>Open;</B>
 
有时候我用table做修改,用query做查询
只要主键对应就可以,虽然是笨方法,但是有效
 
姓名可以用Lookup字段实现,
你在Form上丢一个Query,打开职工表,
再丢一个Query,打开加班表,
然后在加班表上Add一个LookupField,
用ID字段查找职工表中的ID字段,返回职工表中的Name字段即可
 
两个表同时插入是比较麻繁,想想可不可以改改表的结构吧!要不就不要用
DBGrid改用StringGrid之类的东西。自己编写显示和插入语名可以实现。
 
你用多表连接查询,当然不能修改,
用我前面说的SQL来查询,
然后用Lookup字段显示Name,保证可以
 
Fencer:
表结构很好,不用改,
用嵌套查询绝对可以实现,
你看看我前面的SQL吧
 
谢谢各位,我现在还没有测试,不过蚯蚓的回答想必可以实现,
 
多人接受答案了。
 
后退
顶部