关于ClientDataSet的问题!请赐教

samfeng_2003 2007-06-22 11:47:37
我用存储过程将一个ADOQuery执行得到的Data赋予了ClientDataSet 的Detail,在初

始化的时候,这个结果集中是没值的,然后我在执行了一个查询事件后得到一个临时

的ClientDataSet,两个语句是相同的.但是一个有数据,一个没有数据,这个时候,我

就把有数据的向没有数据的里面插,但是要抱错误, 说里面有一个列不能被修改.

查询语句类似于

SELECT *, CI_Name=(SELECT CI_NAME FROM 表A WHERE 表A.ID=表B.ID)
FROM 表B

然后插入语句是
CDS1.APPEND;
CDS1.FieldByName('CI_Name').AsString = CDS2.FieldByName('CI_Name').AsString

我以前用过这些的存储过程,都可以添加,但是这次就不行不晓得为什么!

CREATE PROCEDURE T1
@ID
AS
BEIGN
DECLARE @M int

IF (SELECT * FROM 表A WHERE ID=@ID)
SELECT @M = 数字列 FROM 表A

IF @M>50
SELECT TOP 1 REVALUE=@M FROM Sysobjects

IF RTRIM(LTRIM(@ID))= 0
SELECT REVALUE=CAST(NULL AS INT) FROM sysobjects
END
GO

我以前用这个类似的存储过程是成功执行了我想得到的结果,但是这次使用了级
联SQL语句以后,就要出现级联的字段不能修改的问题,请知道的同志给予赐教!
谢谢了
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
samfeng_2003 2007-06-25
  • 打赏
  • 举报
回复
问题解决,就是采用了最后一个办法,同时使用了临时表

SELECT * INTO # FROM (SELECT TOP 1 V1=@V1,V2=@V2,V3=@V3,V4=@V4 FROM SYSOBJECTS) A
DROP TABE #

这样把ClientDataSet骗了过去,然后更新的时候我只要动态的把ClientDataSet生成一个sql语句就解决了! :)
samfeng_2003 2007-06-22
  • 打赏
  • 举报
回复
但是,很奇怪的是,我

存储过程拼凑过一个语句
比如得的变量@v1,@v2,@v3,@v4

有查询值的时候
SELECT TOP 1 V1=@V1,V2=@V2,V3=@V3,V4=@V4 FROM SYSOBJECTS

无查询值的时候
SELECT TOP1 V1=CAST(NULL AS VARCHAR), V2=CAST(NULL AS VARCHAR), V3=CAST(NULL AS VARCHAR), V4=CAST(NULL AS INT) FROM SYSOBJECTS WHERE 1<>1

我用这样的存储过程完成过两个ClientDataSet的转换,可是为什么到这里却不行呢?

要不我把语句改成这样的语句来试一试
SELECT * FROM (SELECT TOP 1 V1=@V1,V2=@V2,V3=@V3,V4=@V4 FROM SYSOBJECTS) A
hongqi162 2007-06-22
  • 打赏
  • 举报
回复
SELECT *, CI_Name=(SELECT CI_NAME FROM 表A WHERE 表A.ID=表B.ID)
FROM 表B

看来你的ci_name并不是表B的字段,既然你要更新的这个字段你应该操作表A才是,逻辑混乱了,楼主静下心来整理一下思路吧
HZ_Ring 2007-06-22
  • 打赏
  • 举报
回复
这样是不能修改的

要用 CDS1:=TCliendDataSet.Creare(nil);
with CDS1do
begin
FieldDefs.Add('Field1',ftString,100);
end;
CDS1.CreateDataSet;
CDS1.APPEND;
CDS1.FieldByName('CI_Name').AsString = CDS2.FieldByName('CI_Name').AsString
lijinghe1 2007-06-22
  • 打赏
  • 举报
回复
SELECT *, CI_Name=(SELECT CI_NAME FROM 表A WHERE 表A.ID=表B.ID)
FROM 表B

CI_name是一个表达式当然不能修改

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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