一个midas的初级问题:(50分)

  • 主题发起人 主题发起人 HHSH
  • 开始时间 开始时间
H

HHSH

Unregistered / Unconfirmed
GUEST, unregistred user!
我在设计期间,把一个Tclientdataset的列都做成了静态的。但是在运行期间,
需要用改变commandtext的方法改变所取的列,这时系统会提示有的列找不到了。
请问我如何避免这种情况?在不改变原来添加的列的情况下,使后来改变的
commandtext语句有效?
 
在COMMANDTEXT中的SQL是否与静态列数相同?如果不相同不能使用静态的列。
如果相同可以在SQL中让所有字段的名字与静态的相同,应该就行了
 
当然不相同。动态设置的列要比静态的少许多。若是在动态中的SQL语句中再把静态的列
名全加上,岂不是太麻烦了?我只需要其中的个别列。若是每次都如此。岂不太繁琐也没
必要吗?有无好的办法呢?
 
为什么用静态的?动态的不是很方便吗?
 
好象没有什么好的办法,从原理上看,cliendataset和普通表有着相同的特点,在其中设置
的列就是其所拥有的字段,但你一但用了COMMANDTEXT则它要与CLIENTdataset的列要一致,
不一致,则相当于有的字段没有了数据源。
不知你是用于什么用途?说说看说不定可以用其它的方法解决
 
其实我也没有特别的目的.最初添加了静态的列,是为了设计时方便,例如多个dbgrid共用
这个clientdataset时,就方便些.可到了后来,发现若改变列时,麻烦很大.现在程序已做
的差不多了,不好再改动,所以想问一下有无好的办法.
我在设想,能否有一种办法,能暂时断开数据集与数据源的联系,在改变commandtext,达到
其他目的后,再恢复原来的设置.
 
如果你是用它做查询,可以采用其它方法来实现,将数据导入CDS,
但你如果是用它来做数据添加修改,恐怕没有什么好办法了!
我没有什么好办法了[:(]
 
动态的好控制
 
TO 蒋兄:
我恰恰仅权是做查询。例如求出某列的sum值。请你说出你的具体方法。
 
不要CDS的连接,用QURAY来读数据,导入CDS,或另建一动态列的CDS,获得数据后导入
你的静态列的CDS。
此法比较笨[:(],但是可能你要作的改动要少一些![^]
 
感谢蒋兄的回答.我就是又用了一个动态的CDS,(由静态的复制了一份,去掉列即可.很好
做)虽然累赘了些,但比做大的改动还是省许多的事.暂时就这么做吧.
 
后退
顶部