ADOQUERY操作视图的问题【高手进】【在线等】【高分求解】

scfanxzq scfanxzq 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在一个项目中,使用delphi来开发客户端+webservice结构的程序,客户端和服务端都由delphi制作。其中有个模块,要求服务端返回一个数据集,而这个数据集是在服务端通过对数据库中多个表格的数据进行复杂分析之后得到的一个数据集,而且这个数据集(视图)在数据库中没有对应的表进行存储(为什么?因为这个模块根据不同客户的需求,展示出来的分析结果的结构不同,如果要在数据库中对应一个表,那每次为不同客户部署都要对数据库进行修改,这个是不可接受的)。
我的思路是这样的,在分析开始之初,先根据要求返回的格式,通过ADOQUERY创建一个视图,sql语句如下:
select 1 as fld1,'' as fld2
然后在分析的时候,根据不同的步骤,往不同的字段里面插入数据,当然这个视图里面有其他的字段用来定位,每次修改字段的时候的语句如下:

ADOQry1.Append;
ADOQry1.FieldByName('fld1').AsInteger := StrToInt(edt1.Text);
ADOQry1.FieldByName('fld2').AsString := edt2.Text;
//ADOQry1.Post;

现在的问题出来了,如果不执行post,我用dbgrid查看结果的时候发现,所有加进去的值都是空的,但是执行post明显不可能,因为没有实际的数据表和这个视图进行对应,没有办法更新。

请教高手,这种问题是否有办法解决?为什么一定要用ADOQurey呢?因为delphi写的webservice返回数据集要通过ClientDataSet.XMLData的方法,返回一个widestring,客户端再把这个widestring转换成数据集,现在我知道的可行方案只能把ClientDataSet和ADOQurey绑定,这样才能把ADOQurey中的数据全部拷贝到ClientDataSet中。是否有其他的办法我不知道,还请各位高手赐教

~~~跪求,在线等~~~
...全文
评论 6
收藏 已收藏
分享
返回顶部
scfanxzq
数据库相关 2,508 成员 88,437 内容