做苗木选择哪个网站,做奢侈品的网站,中国核工业第二二建设有限公司是国企吗,青山湖南昌网站建设ClientDataSet的最大好处#xff0c;就是建立能内存表#xff0c;特别DataSnap三层运用中#xff0c;主要使用ClientDataSet与运程的服务器中的数据表#xff0c;建立读取存贮关系。 在软件的使用中#xff0c;总有客户反映#xff0c;一些数据不能保存。 发现都是使用DB… ClientDataSet的最大好处就是建立能内存表特别DataSnap三层运用中主要使用ClientDataSet与运程的服务器中的数据表建立读取存贮关系。 在软件的使用中总有客户反映一些数据不能保存。 发现都是使用DBRichEditDBMemo长文字的编辑框修改的数据不能保存。问题出面自己编写的保存ClientDataSet的函数 UpDataClientAll。 一、UpDataClientAll工作原理 ClientDataSet的ChangeCount属性记录的表中被编辑修改的数据行数。就是通过这一属性判断是否需要保存。有保存时通过SQL语句向服务器上传数据。无则退出。 ClientDataSet被修改的数据保存在Delta中通过对Delta找到待保存行的ID。通过SQL上传数据。 二、数据行编辑的机制 1、数据的保存需要在编辑的情况下完成编辑确认完成才能进行。 2、数据行中字段的编辑的确认只要点击另一字段确认编辑完成。 3、数据行的编辑确认需要点击进入另一行确认该条数据行编辑完成。 三、问题 1、客户在DBRichEdit中编辑后直接点击保存通过UpDataClientAll出现数据末保存的Bug。 2、.ClientDataSet与DBRichEditDBMemo长文字控件关联时在DBRichEdit中编辑修改后没有完成对数据行的编辑确认ClientDataSe的ChangeCount没能添加该行。只有进入另一行时退出该行时才能ClientDataSet才能记录该行被编辑。 3、上述情况通过ChangeCount判断是否保存数据时就会出错。造成没有修改的行不保存。 三、问题的解决 1、问题是在DBRichEDit或DBMemo类长文字编辑框中编辑时需要一个确定数据行编辑完成的过程。 2、经测试在保存前加入下列代码可以完成数据行编辑确认 ClientDataSet1.Edit;ClientDataSet1.Post;这样通过Post推送ChangeCount完成加一。 这种bug是对ClientDataSet的编辑机制末能完全理解造成的。通过修改代码是可以解决的。