这个辩论起始于多年前:他今天仍然坚持认为使用简单的控件(如TEdit,TStringGrid等),可以使用一组getter和setter方法来填充它们,是在灵活性和可维护性方面的最佳解决方案整个项目.
对我来说,这个声音至少是反直觉的.
我认为在开发数据库应用程序时,使用DB Aware Controls,如TDBEdit,TDBGrid等是正确的.
所以:请帮助我说服使用DB Aware Controls的声音建议!
感谢您提前发送至少他自己的建议的所有人,不管什么都赞成一个或另一个解决方案.
–
fabio vitale
解决方法
数据源的种类和个人控制的质量将决定绩效.我看到很多代码来数据绑定TStringGrid,只是为了避免TDBGrid,因为纯粹主义(当TDbGrid会做得很好) – 只是一个荒唐的荒谬的时间.
当TClientDataset成为断开连接的应用程序的事实数据集时,它成为一个过时的讨论:您可以拉取数据,断开连接,处理数据,再次连接并应用更改.由于CDS DbAware控件可以执行99%的接口,因此您可以在下一个1%(对于一些复杂的接口)中使用非数据感知控件.
我仍然没有XE2来看看LiveBindings是否能够很好地执行OO数据绑定 – 如果是这样,现在所有控件都可以在需要时进行数据库感知.
编辑:在da-soft的答案中,他(她?)认为DbAware控件实现MVC模式,而LachlanG不同意,即使是这样,代码本身也不是MVC.我会在这里给我$0,02美分;-)
我认为在DataModule和Entity(如ERD)或DataModule和Form中使用1:1关系,您可以获得一个责任分离的应用程序:
>形式dfm – >布局和设计时数据绑定(只有Datasources)
> form * .pas – >控制接口并要求数据模块提供数据(像控制器一样)
>数据模块 – >回答表单数据检索请求的方法
和数据更新