请教一个关于使用DBGRID做为录入窗口的问题! ( 积分: 51 )

  • 主题发起人 主题发起人 jieking
  • 开始时间 开始时间
J

jieking

Unregistered / Unconfirmed
GUEST, unregistred user!
现有两张表,T1,T2。字段分别如下:
T1表字段:编码,数量,单价,金额
t2表字段:编码,名称,规格,单价
在使用DBGRID中录入,我想输入编码和数量后,查询T2表中对应的编码,名称,规格显示出来,但是保存到T1表的时候只保存 编码,数量,单价,金额。除了用临时表去实现,各位还有没有更好的方法来实现?
 
用添加Lookup字段的方式啊
 
一般不建议在Grid中进行数据录入。
应该单独提供一个数据录入的界面,只有T1表中的字段是可写的,T2表中的字段是只读的,当你录入编码之后,从T2表中查询出相应的数据填充的界面中(只读,供用户查看)。
 
你也可以用名称的字段的事件OnGetText来进行处理,在显示名称的时候把其它的属性也显示出来就OK
 
楼上能否说得祥细一些!
 
在表的AfterOpen 事件中加入 FieldByName('名称').OnGetText :=NameOnGettext;//名称的获取显示的事件
procedure NameOnGetText(Sender :TField;Text :String; var DisplayText :Boolean );
var tb :TAdoDataSet; // 可以是一个共享的数据表,打开后不关闭;在这我就不创建了
begin
if DisplayText then
begin
tb.commandText :='select * from Table where 编号=' + Sender.dataset.FieldbyName ('编号').AsString;
tb.Open; //tb这个表可以放在一个公共的单元,在这里这打开会非常影速度
//打开后可以用定位的方法(Locate())获得属性,速度会比较快
Text :=sender.asString{原来的名称} + tb.规格 + tb.……

end;
end;
这样应该就可以了!
 
谢谢,liurui525!我想你可能还没有理解我的需求,你有QQ或MSN吗?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部