关于一个使用DBGrid或者CxGrid时的问题! ( 积分: 120 )

  • 主题发起人 主题发起人 ROCK4Zane
  • 开始时间 开始时间
R

ROCK4Zane

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个SQL表,记录的是员工的基本信息,另一个是工资表,工资在未发之前我们假设这个工资表是空的。还有一个表是工资项目表。
那么我要保存当月发工资的记录,我用一个DBGrid(或者CxGrid)来显示出员工姓名,工资项目,实发的金额这三个信息。那么DBGrid显示的模式应该如下:


员工姓名 工资项目 实发金额
张三 基本工资 1000.00
张三 岗位津贴 500.00
张三 差旅费 48.50
李四 基本工资 800.00
李四 岗位津贴 400.00
李四 差旅费 0.0
…… …… ……

很显然,这个DBGrid关联的表应该是工资表的那个数据源。但是由于工资在未发之前(也就是我没有输入实发金额前),我们认为这个工资表是空的。那么DBgrid自然显示不出来任何记录。而且,员工姓名和工资项目分别来自员工表和工资项目表。

我想要的结果就是:程序在运行时,DBGrid(或CxGrid)就要显示所有员工姓名以及工资项目,金额那一栏空着待填。因为我想等金额输入完后,我只需执行数据集的ApplyUpdate(0);过程就可以将这个工资发放记录保存到工资表中去。

希望高手指教一下!
 
你可以先建一个临时表啊
 
臨時表或查詢語句可以解決問題
 
用LEFT JOIN 不行嗎?
 
select * from 员工的基本信息,工资项目表
left join 工资表 where +连接条件
这样你看符合要求不??
 
我试试,谢谢大家
 
我试了,语法错误
 
我试的时候后面没有加条件的,因为我的工资表是空的,不需要加条件啊
 
select * from 员工的基本信息,工资项目表
left join 工资表 on 员工的基本信息.员工ID号=工资表.员工ID号
where +连接条件
数据集用banch模式
 
to steven7581,我是这样做的
select * from 员工的基本信息,工资项目表
left join 工资表 on 员工的基本信息.员工ID号=工资表.员工ID号
只是后面没加Where条件。语法报错:无法绑定由多个部分组成的标识符 "工资表.员工ID号"。

去掉工资项目表后就可以正常取出了
select * from 员工的基本信息 left join 工资表 on 员工的基本信息.员工ID号=工资表.员工ID号

但是工资项目表是必要的啊
 
select * from 员工的基本信息,工资项目表
left join 工资表 on 员工的基本信息.员工ID号=工资表.员工ID号
and +(工资项目表与工资表关联的条件)
 
select * from 员工的基本信息,工资项目表
left join 工资表 on 员工的基本信息.员工ID号=工资表.员工ID号
and +(工资项目表.项目ID=工资表.项目ID)

这样吗?可是报'=' 附近有语法错误。
 
select * from 员工的基本信息,工资项目表
left join 工资表 on 员工的基本信息.员工ID号=工资表.员工ID号
and 工资项目表.项目ID=工资表.项目ID
是这样写的,
你再试试看呢
 
语法报错:无法绑定由多个部分组成的标识符 "员工的基本信息.员工ID号"。
 
SELECT * FROM (select * from 员工的基本信息,工资项目表) A
left join 工资表 on A.员工ID号=工资表.员工ID号
and A.项目ID=工资表.项目ID
这样写,试试看
我自己建表测试了,取的结果跟你要的是一致的
 
'=' 附近有语法错误。

我还想问一下,即便查询成功了,那么我在用DBgrid显示,用数据集更新时,可以直接保存到工资表吗?
 
使用了join所得的结果不能更新到表中的,
 
一个朋友给我了如下脚本:
Create Table 员工表
(员工姓名Nvarchar(10))
Create Table 工资项目表
(工资项目Nvarchar(10))
Insert 员工表 Select N'张三'
Union All Select N'李四'

Insert 工资项目表 Select N'基本工资'
Union All Select N'岗位津贴'
Union All Select N'差旅费'
GO
Select
A.员工姓名,
B.工资项目,
NULL As '实发金额'
From
员工表 A
Cross Join
工资项目表 B
Order By
A.员工姓名,
B.工资项目
GO
Drop Table 员工表, 工资项目表
--Result
/*
员工姓名工资项目实发金额
李四差旅费0
李四基本工资0
李四岗位津贴0
张三差旅费0
张三基本工资0
张三岗位津贴0
*/


执行后确实可以用DBGrid显示记录了。但是在更改金额时,不能输入小数!
 
后退
顶部