哪位高手帮我解决问题,给150分 (100分)

  • 主题发起人 主题发起人 gaohua21
  • 开始时间 开始时间
G

gaohua21

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DELPHI5编写一简单的人事管理应用程序,用MS Access建立一RsglDB数据库,该数据库有员工资料表Rs
和员工奖惩表Rsap,两表字段如下:
工号ID 姓名Name 性别Sx 部门Dept

工号ID 奖项Award 惩项Punish 日期Date

在RsglDB数据库里建立一查询表Srsap,字段如下:
工号ID 姓名Name 性别Sx 部门Dept 奖项Award 惩项Punish 日期Date

其中Srsap表中的工号ID字段, 奖项Award, 惩项Punish, 日期Date是对应Rsap表中的各字段。
在Delphi5中建产一窗体,加入TDBGrid控件,控件的数据源为Srsap表,运行后直接在DBGrid控件中添加删除员工奖惩记录。
问题:
添加记录时,在工号列输入员工工号后按回车,姓名、性别、部门列能自动显示工号对应的数据,不需要再输入,
只要输入奖项Award, 惩项Punish, 日期Date列的值即完成员工奖惩记录的录入,其中姓名、性别、部门列的内容只
方便操作员理解,员工奖惩表Rsap中没有姓名、性别、部门字段,亦无需存放该字段的数据。
哪位高手可以告诉我有什么好办法实现这一功能,给150分。
 
用 TDBText 就可以实现啊
你要输入你把要显示数据的各输入框都用 TDBEdit 而不用 TEdit ,

这个过程主要的就是把你的控件的各个属性设好就行了。
主要的要把 TDBEdit 绑定到数据表的字段上,就可以实现同时联动了

:))

 
在Form上放一dbGrid控件,其中内容有工号、姓名等信息,在Edit控件中录入工号时
自动弹出该dbGrid,同时在DbGrid的CellClick事件中,将姓名、性别等字段取出赋值
到界面...
 
用stringgrid做啊
 
你可以在DBGrid的OnColExit和对应的DataSet的OnBeforePost事件里用SQL语句获得当前
输入的工号ID的[姓名Name],[性别Sx],[部门Dept],[奖项Award],[惩项Punish],
[日期Date]等信息,然后用DataSet.Edit()添加到当前记录中!
 
同意zhengbo的意见,在dataset的beforepost事件中用sql语句获得姓名等信息,
然后修改当前记录,这样的做法较通用。
 
使用lookup字段
 
zhengbo:
您给我的回答可以详细一点吗!
 
你可以在DBGrid的OnColExit和对应的DataSet的OnBeforePost事件里用SQL语句获得当前
输入的工号ID的[姓名Name],[性别Sx],[部门Dept],[奖项Award],[惩项Punish],
[日期Date]等信息,然后用DataSet.Edit()添加到当前记录中!
具体讲:
你在DBGrid的OnColExit和对应的DataSet的OnBeforePost事件里写上下列代码:
begin
if DBGrig.SelectedField.FieldName = '工号ID' then
begin
{用一个TQuery控件发SQL}
Query.Active := False;
Query.SQL.Clear();
Query.SQL.Add('select 姓名Name,性别Sx,部门Dept,奖项Award,惩项Punish,日期Date
from Srsap where 工号ID = ' + QuotedStr(Table.FieldByName('工号ID').AsString));
Query.Active := True;
if Query.RecordCount > 0 then
begin
if (Table.State <> deEdit) or (Table.State <> dsInsrt) then
Table.Edit();
with Table do
begin
Table.FieldValues['姓名Name'] := Query.FieldValues['姓名Name'];
Table.FieldValues['性别Sx'] := Query.FieldValues['性别Sx'];
Table.FieldValues['部门Dept'] := Query.FieldValues['部门Dept'];
...{其余的赋值操作}
end;
end;
end;
end;
 
接受答案了.
 
后退
顶部