这个问题困扰我好久了,请帮忙! ( 积分: 200 )

  • 主题发起人 主题发起人 zfp
  • 开始时间 开始时间
Z

zfp

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有两个表:表1是物资基本表,表2是买卖合同表,表2中有物资编码字段。现在做了一个买卖合同明细维护的一个界面,在界面上用DBGrid(EHLib控件)来显示买卖合同明细,现在问题来了,在买卖合同表中没有物资名称等字段,需要两个表联查在DBGrid中就可以显示,可是要添加一个记录的时候(用的是ADODataSet.Insert方法),物资名称等字段在DBGrid中就是空的,如果用计算字段,查询的时候物资名称等又都是空的,我不想用SQL的INSERT,然后再刷新数据,因为数据量大,请大家帮忙。
 
都……?????????
 
Insert之后手动设置 物资编码 的值,Post后 物资名称 就有值了。
 
楼上的朋友能说的详细一点吗?如何手动设置呢?
 
好贴不要沉<br>顶顶顶顶顶顶顶顶顶顶顶
 
DBgrid中的columns属性中可以设置下拉按钮,下拉的的内容你可以自己从数据库赋值。<br>也就是说,dbgrid的datasource来自于合同明细,<br>物质名称的column设置为下拉按钮,设置picklist内容来自于物质名称。这样就解决了你的问题了。<br>其实还有很多方法可以实现,这种方法最简便。
 
szloner朋友说的不错,可是软件设计的时候DBGRID设置为只读的,就是说不能在Grid中直接来操作数据,可能的考虑是这样操作的话有些数据库错误不好捕获。所以设计的时候都是使用了Edit控件对应相应的字段来实现的。<br>&nbsp;&nbsp;&nbsp;&nbsp;不知道还有什么好的办法。
 
Delphi的标准解决方法是用lookupField存放物资名称.BTW:lookupfield是在DataSet中设置,不是在dbgrid中设置
 
呵呵,原来是明细表的问题啊。<br>你在Adoquery的AfterInsert事件中加段代码,<br>FieldByName('名称').AsString:=&nbsp;GetNameById('新增时产生的id');<br>(两个表是通过id关联的)
 
将表2物资编码用查询a出来,输入完编码后,从查询a中找到对应的名称,再修改adodataset
 
后退
顶部