delphi dbgrid 打勾选择

zwk_9 2009-05-27 09:01:20
这个问题困扰我很久了:有三个dbgrid:dgrid1显示生产计划(1条或多条),dbgrid2显示计划对应的产品(多个),dbgrid3显示产品对应的物料(很多条)
现在我要选择的是dbgrid3中的物料,用在第一列中打勾的方式来选择(双击选择,再双击取消),最后导入到另一个界面
对于选择过的物料,不能丢,即:选择了一个计划的一个产品对应的一个物料,然后切换计划,选择另一个计划的一个产品的一个物料,在最后导入到时候,两条记录都要能够导过去

之前采用主从表的方式:dbgrid1连adoquery,dbgrid2连adotable(产品表),dbgrid3连adotable(物料表),然后设置相应的mastersource
在导入到时候,从头到脚循环下来选择(相当于进行了3次循环),现在感觉这种方式太傻了,想改进一下。

于是想到了定义一个record,用于保存物料相关信息,然后用一个该record的数组来保存已选择的记录。
现在的问题是:当用户通过再次双击取消对某条记录的选择时,怎样从record数组中删除?

还有一个问题是,感觉用adotalbe来连影响存取速度,想改用以下方式,dbgrid1, dbgrid2, dbgrid都连adoquery,然后通过相应datasource的ondatasource事件来显示相应的产品、物料,但是这样做的话,当用户回到已选择的记录的时候,在dbgrid中就显示不出已经打勾的记录了。。。

困扰中~~~
帮帮我~~~
...全文
854 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwk_9 2009-06-03
  • 打赏
  • 举报
回复
最后发现还是用临时表比较方便:把需要的字段都存入临时表,导入的时候直接读临时表就可以了,只需一次循环
fairchild811 2009-05-28
  • 打赏
  • 举报
回复
用list方便
zwk_9 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
其实要解决你打勾的问题,只需要在物料表中加一个是否选择的字段,打勾便更新这个字段,那样,切换回来自然不会丢失了

如果不想增加字段,可以用保存出来的办法,record数组可以,就是需要自己维护,可以考虑用list,保留表的主键值
[/Quote]

如果我只保存主键的话,那导入到另一个界面的时候,不还得再从数据库查一遍?
我原先就是用一个字段来打勾的,但是并没有更新到数据库(事实上也不应该更新到数据库),但是现在的问题是:在ondatasourcechange事件中查的话,涉及到重新从数据库查询,那么就又没有打勾了~~~
bdmh 2009-05-27
  • 打赏
  • 举报
回复
其实要解决你打勾的问题,只需要在物料表中加一个是否选择的字段,打勾便更新这个字段,那样,切换回来自然不会丢失了

如果不想增加字段,可以用保存出来的办法,record数组可以,就是需要自己维护,可以考虑用list,保留表的主键值
Corn1 2009-05-27
  • 打赏
  • 举报
回复
干嘛用record数组?直接用list好了,保存指针
yejinson 2009-05-27
  • 打赏
  • 举报
回复
不要想复杂
lxsszwhh 2009-05-27
  • 打赏
  • 举报
回复
这个问题也困绕我一时间了
hujun_zero 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
其实要解决你打勾的问题,只需要在物料表中加一个是否选择的字段,打勾便更新这个字段,那样,切换回来自然不会丢失了

如果不想增加字段,可以用保存出来的办法,record数组可以,就是需要自己维护,可以考虑用list,保留表的主键值
[/Quote]

对~~,别把问题想复杂了~~
delphi_911 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 zwk_9 的帖子:]
选择了一个计划的一个产品对应的一个物料,然后切换计划,选择另一个计划的一个产品的一个物料,在最后导入到时候,两条记录都要能够导过去
[/Quote]

临时表是可以考虑的,速度也比较快;或者说能不能修改一下操作的方式,还有没有更好的操作方面呢?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧