录入程序编制问题(急!!!)(100分)

  • 主题发起人 主题发起人 TJJCW
  • 开始时间 开始时间
T

TJJCW

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠好:
我正在编制一个调查表的数据库录入程序,由于调查单位是户,所以我初步

决定用master/detail建立一对多的关系(每一户包括若干口人),即有关户的信

息(收入、地址、包含人口数等)用一个表存储,有关人的信息(年龄、性别等

)用另外一个表表示。我想在录入过程中实现两个功能:
1、在录入户信息时根据“包含人数”的人数,来自动生成人信息表的相应

数量的空记录,比如,本户有3口人,那么在输入完户信息的时候自动在人信息的

表中插入3个空记录,并且焦点在新插入第一记录的第一个字段,供录入员录入。
2、由于我利用的是delphi菜单中database菜单的datebase form wizard来

自动生成录入界面的,而缺省情况下,在录入时只能通过tab键来切换焦点,这对

于录入员来讲十分不便,能否实现输入完一个字段后,自动将焦点转到下一个记录。也就是录入员在录入数据时,只在小建盘上敲击数据即可,不用在管什么其他键了。
我的问题很初级,但很急,望各位指教,我将用分数来报答你!
 
1、没有必要.
不过可以限制录入人员只输入一定数目的记录.处理子表的BeforeInsert事件.
2、处理keyPress事件
 
2 查一查已答问题
 
我是新手,能不能给出代码?
 
2。在Keypress事件中判断

if key=#13 then 下移
 
如果要实现焦点的自动转移,当然不能用IF KEY=#13 THEN...的方法,因为要按回车键。 可以改为对输入长度的判断:IF LENGTH(。。。)=XXX THEN。。。
不过最好还是使用按键的强制性转移,因为你不可能不进行效验吧,而当输入有误时,你不可能让焦点停留在别的输入项吧?
 
哦,对对对
 
1. Table1.Insert;
Table1.post;
重复三次
DBGrid1.selectedindex:=0;//光标在第一个字段

2.
procedure TForm1.DBGridKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then //如果是回车键,则跳到下一字段
begin
if DBGrid1.selectedindex<(DBGrid1.Fieldcount-1) then
DBGrid1.selectedindex := DBGrid1.selectedindex +1
else
DBGrid1.selectedindex := 0;
end;
end;
 
1.这可以通过编码来解决,编码长度由数据量大小决定.如'户'用三位编码XXX(000-
999),对某户的所有人用四位编码XXXY,其中XXX是'户'的编码,Y(0-9)表示该护人员
序号.然后就可以设置'人员信息表'的过滤条件,使其与'户表'保持一致即可.至于增
加相应条数的纪录相信已经很简单了.
2.我想输完一项数据后按Enter键,对录入员来说是一件很自然的事,没有必要给自
己制造麻烦,何况小键盘上就有Enter键.只要在KeyPress事件中响应Enter键(#13)即
可.
 
Table1.Insert;
Table1.post;
这会破坏数据一致性的.如果子表也有唯一索引,比如户号+人编号,你还要设置相应
的关键字的值.如果用户暂时不输入,是不是还要删除?
所以最好不要自动添加空记录.
 
form 的 keypreview 设置为 true
写form 的 onshortcut
if Msg.CharCode=VK_RETURN then
Msg.CharCode=VK_TAB
 
多人接受答案了。
 
又来晚了!哎.....
 
后退
顶部