Delphi无法修改Clientdataset的字段的解决方法
主题:
解决clientdataset 自定义字段无法在前台修改值的问题;数据库里面直接取的字段从前台可以修改,但是自定义的返回字段无法修改。
报错信息:
- error1:EDatabaseError with message ‘Field ‘选择’ cannot be modified
- 如果仅仅修改cdsA.field[0].ReadOnly=false,在Post的时候会报error2:EDBClient with message ‘Trying to modify read-only field
解决思路:
将一个复制Data的clientdataset做成可写。因为直接赋值cdsA.data=cdsTemp.data会连着datasetprovider的一些东西一起赋值,readonly属性也会赋值
解决方法:
只需要将需要修改但不能修改的clientdataset,传入到此方法之后,即可修改其的字段值。
{
Author:mxd
time:2018.08.03 16:57:43
function:解决clientdataset 连接脱离框架导致自定义字段无法在前台修改值的问题
description:将一个复制Data的clientdataset做成可写。因为直接赋值cdsA.data=cdsTemp.data会连着datasetprovider的一些东西一起赋值,readonly属性也会赋值
error1:EDatabaseError with message 'Field '选择' cannot be modified
如果仅仅修改cdsA.field[0].ReadOnly=false,在Post的时候回报error2
error2:EDBClient with message 'Trying to modify read-only field
}
procedure TDM.SetDstAllFieldCanEdit(cdsA: TClientDataSet);
var cdsB:TClientDataSet;I:Integer;
begincdsB := TClientDataSet.Create(nil);TrycdsA.DisableControls;cdsB.Data := cdsA.Data;cdsA.Close;cdsA.FieldDefs.Clear;for I:=0 to cdsB.FieldDefs.Count - 1 dobeginwith cdsA.FieldDefs.AddFieldDef dobeginDataType := cdsB.FieldDefs[I].DataType;Size := cdsB.FieldDefs[I].Size;Name := cdsB.FieldDefs[I].Name;end;end;cdsA.CreateDataSet;with cdsB dobeginFirst;while not Eof dobegincdsA.Append;for I := 0 to Fields.Count - 1 docdsA.Fields[I].Value := Fields[I].Value;Next;end;end;if cdsA.State in [dsInsert,dsEdit] then cdsA.Post;cdsA.MergeChangeLog;FinallycdsA.EnableControls;cdsB.Free;End;
end;
Delphi无法修改Clientdataset的字段的解决方法相关推荐
- sqlite特性 只能添加字段 不能修改字段 的解决方法 和php sqlite的管理工具 sqlbuddy
sqlite特性 只能添加字段 不能修改字段 的解决方法 和php sqlite的管理工具 1. php管理工具 sqlbuddy 功能完善 都是 没有 修改字段的变通办法提供,sqlbuddy建立 ...
- Linux6.x修改出eth0网卡的解决方法
Linux6.x修改出eth0网卡的解决方法 参考文章: (1)Linux6.x修改出eth0网卡的解决方法 (2)https://www.cnblogs.com/puloieswind/p/5855 ...
- 数据库修改和忘记密码的解决方法(附详细步骤和操作图)
数据库修改和忘记密码的解决方法(附详细步骤和操作图) 修改密码 如果能登录的话就直接修改密码 登录方式:win+R输入cmd,接着输入mysql -uroot -p,会提示输入密码,如下图: 重置密码 ...
- clientdataset 遍历字段_解决DBGridEh遍历记录后不移动当前行位置的方法
解决DBGridEh遍历记录后不移动当前行位置的方法 在用DBGridEh配合ClientDataSet使用时,需要知道用户选择了哪些记录,可用遍历记录的方法查询选择列是否为真,但在这之后,Clien ...
- php mssql扩展SQL查询中文字段名解决方法
一.问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名 ...
- ipv4改完保存不成功_win7系统没法保存修改后IP地址的解决方法
很多小伙伴都遇到过win7系统没法保存修改后IP地址的困惑吧,一些朋友看过网上零散的win7系统没法保存修改后IP地址的处理方法,并没有完完全全明白win7系统没法保存修改后IP地址是如何解决的,今天 ...
- Ubuntu中修改grub重启出现 Memtest86 解决方法
如下图所示 解决方法 第一步:按ESC键重启同时按SHIFT键,进入如下界面 第二步:选择第一个选项按Enter进入Ubuntu系统,然后打开终端输入命令sudo vim /etc/default/g ...
- php mysql 中文字段名_php mssql扩展SQL查询中文字段名解决方法
一.问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名 ...
- Microsoft Edge网页调用摄像头失败(设置权限处按钮为灰色不可修改)的原因和解决方法
在网页登录时,有些网页有调用摄像头进行人脸识别的需求,这个操作在Microsoft Edge中是被禁止的,Microsoft Edge默认禁止http访问的网页调用摄像头和麦克风等的权限. 例如登录某 ...
最新文章
- java小程序例子_「小程序JAVA实战」java的聚合项目搭建(30)
- Leetcode 125. 验证回文串 解题思路及C++实现
- 等了这么久,就给我看这个?
- tomcat出现5个using_当猫咪出现这5个迹象,主人就要给猫咪换猫粮了
- JS判断相等或者不等于(==、===、!=、!==)运算符
- iOS NSString中字符串的删除,替换
- mysql几种备份恢复_mysql多种备份与恢复方式一
- PostgreSQL 最佳实践 - 在线增量备份与任意时间点恢复
- DML、DDL的概念与区别
- [MFC] 向文本编辑框写入数据与从其中读取数据
- 【数字信号处理】基于matlab GUI数字调音台【含Matlab源码 881期】
- 【互动出版网】央视热播BBC纪录片同名图书买二赠一活动
- php mail带附件,Pear Mail 发送邮件带附件_PHP教程
- 【搬运】各种知乎段子
- (最详细)Cloudera Manager安装部署
- 申请一个微信小程序有哪些需要注意的事项
- Linux游戏市场,Tacoma上的Nixie Pixel以及更多开放游戏新闻
- 从零开始WebAPP尝试(四)----登录实现
- ClearCase 介绍 1
- 细粒度图像分类论文研读-2011
热门文章
- 3d激光雷达开发(PassThrough滤波器)
- 无人驾驶(ncnn学习)
- 南昌大学c语言大作业,南昌大学计算机C语言答案2
- mysql表名怎么拼接_自学MySQL第九天
- python staticsmodels用法_python自动化之models 进阶操作二
- echarts 图例太多放不下怎么办_段码液晶屏笔段太多,引脚放不下怎么办?
- zk pivottable java_zookeeper节点类型和java客户端创建zk节点
- 输出毫秒_使用AMETEK直流电源实现波形变化的输出
- Python基础(使用print()函数输出格式化字符串)
- Python清理微信被好友删除的人