CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

对表造假字段,并且可以维护此字段

楼主lzgctgc(理引商务)2004-02-01 14:56:00 在 Delphi / VCL组件开发及应用 提问

我用TADOQuery打开一张表,为了用户看打开的内容容易理解,我需要在打开的表中造一个假字段,打此字段的值是可以修改的.如:  
  我打开表Temp(a,b,c)但我打开后显示给用户看时是多一列t:  
  a       b       c  
  11     22     33  
  44     55     66  
  77     88     99  
  ww     ff     ss  
  gg     cc     bb  
  我要显示给用户看时  
  a       b       c       t  
  11     22     33     1  
  44     55     66     2  
  77     88     99     3  
  ww     ff     ss     4  
  gg     cc     bb     5 问题点数:50、回复次数:53Top

1 楼lzgctgc(理引商务)回复于 2004-02-01 15:16:37 得分 0

怎么没有人吗?同志们快帮忙啊?Top

2 楼lzgctgc(理引商务)回复于 2004-02-01 15:35:52 得分 0

upTop

3 楼chenylin(陈SIR)回复于 2004-02-01 16:10:20 得分 1

Select   a,b,c,Right(a,1)   as   t   from   TempTop

4 楼IDWB()回复于 2004-02-01 16:31:08 得分 1

Select   a,b,c,identity(int,1,1)   as   t   into   #abc   from   Temp  
  select   *   from   #abc  
  Top

5 楼hthunter(茫茫然时光飞逝)回复于 2004-02-01 16:33:55 得分 1

打此字段的值是可以修改的?不是很明白你这句话的意思  
  sql语句:  
  select   a,   b,   c,   identity(int,   1,   1)   as   t  
  into   #temp1  
  from   temp  
   
  select   *    
  from   #temp1  
  order   by   t  
   
  drop   table   #temp1  
   
  或者你显示列表数据时不要用数据绑定的控件,这样你想要显示什么数据就都可以随意控制了Top

6 楼lzgctgc(理引商务)回复于 2004-02-01 16:58:00 得分 0

我不想用临时表,不知能否实现Top

7 楼lzgctgc(理引商务)回复于 2004-02-01 16:59:31 得分 0

如果用临时表我也就不麻烦大家了Top

8 楼lzgctgc(理引商务)回复于 2004-02-01 18:08:58 得分 0

我自己UPTop

9 楼ffzhlz()回复于 2004-02-02 08:30:37 得分 1

帮你upTop

10 楼hthunter(茫茫然时光飞逝)回复于 2004-02-02 10:23:29 得分 1

计算字段Top

11 楼hthunter(茫茫然时光飞逝)回复于 2004-02-02 10:24:01 得分 1

不用临时表就用计算字段啊,呵呵Top

12 楼lzgctgc(理引商务)回复于 2004-02-02 10:55:31 得分 0

我的表是不却定的,也不能用计算字段啊,计算字段是不可以动态增加的.Top

13 楼lzgctgc(理引商务)回复于 2004-02-02 10:57:47 得分 0

没有其它方法了Top

14 楼lzgctgc(理引商务)回复于 2004-02-02 11:13:15 得分 0

失望啊,没有人能解决了Top

15 楼ffzhlz()回复于 2004-02-02 13:06:13 得分 1

帮你upTop

16 楼hthunter(茫茫然时光飞逝)回复于 2004-02-02 13:30:41 得分 1

计算字段怎么不能动态增加了呢?你在数据集的OnCalcFields事件将DataSet.RecNo赋值给那个计算字段不就行了Top

17 楼ffzhlz()回复于 2004-02-02 13:40:46 得分 1

是的,在程序执行是是不可以加计算字段的Top

18 楼lzgctgc(理引商务)回复于 2004-02-02 14:45:14 得分 0

upTop

19 楼ffzhlz()回复于 2004-02-02 15:50:22 得分 1

失望啊,没有人能解决了,我也感兴趣的话题Top

20 楼ffzhlz()回复于 2004-02-02 18:59:42 得分 1

upTop

21 楼raywu(ray)回复于 2004-02-02 20:22:58 得分 0

declare  
  @a   int  
  set   @a=0  
  select   a,b,c,(@a+1)   as   [t]   from   tempTop

22 楼hthunter(茫茫然时光飞逝)回复于 2004-02-02 21:14:54 得分 1

to   raywu(ray),   你这样的执行结果是t那列全是1,呵呵Top

23 楼lywho(阿勇)回复于 2004-02-02 21:32:34 得分 1

试试这个:  
  select   a,b,c,rowid   as   t   from   tempTop

24 楼lzgctgc(理引商务)回复于 2004-02-03 08:36:01 得分 0

upTop

25 楼lzgctgc(理引商务)回复于 2004-02-03 08:57:43 得分 0

如果谁能按照我的要求做出,我连放出100分给他Top

26 楼hthunter(茫茫然时光飞逝)回复于 2004-02-03 10:14:39 得分 10

1、ADOQuery1的LockType设置为ltBatchOptimistic(这是必须的,否则第三步会出错)  
  2、ADOQuery1的sql为如下内容:  
      ALTER   TABLE   table1   ADD   [id]   int   NULL     --添加临时字段  
      select   *   from   table1   --这是你的查询语句,id字段必须包含在里面  
      ALTER   TABLE   table1   DROP   COLUMN   [id]     --删除临时字段  
   
  3、然后在ADOQuery1的OnAfterOpen事件里面这样写:  
      with   DataSet   do  
      begin  
          First;  
          while   (Eof   =   False)   do  
          begin  
              Edit;  
              FieldValues['id']   :=   RecNo;  
              Next;  
          end;  
          First;  
      end;  
   
  以上代码我在自己的机器测试通过,但是这样的效率估计跟用临时表差不多(或者稍高。我的表数据少,没办法比较)Top

27 楼hthunter(茫茫然时光飞逝)回复于 2004-02-03 10:18:31 得分 5

这就是造了一个假的字段(当你看到它时,它实际上已经不存在),不过这个ADOQuery1就不能用来向服务器提交数据了,否则出错。如果你确实需要更新数据,那在ADOQuery1的sql里面先不要删除那个临时字段,只有在ADOQuery1的OnAfterClose事件才执行:  
      ADOConnection1.Execute('ALTER   TABLE   table1   DROP   COLUMN   [id]   ');Top

28 楼lzgctgc(理引商务)回复于 2004-02-03 11:46:05 得分 0

to:hthunter(核桃-我的心在下雨,雨中我和她一起漫步)    
  我来试试如果行我晚上结贴Top

29 楼hthunter(茫茫然时光飞逝)回复于 2004-02-03 12:27:17 得分 0

当然这中间的一些异常情况就需要你自己考虑的了,例如创建或者删除字段之前判断是否已存在。因为要考虑到程序出现异常或者意外中止时,id字段没有创建或者创建用完之后没有删除等情况。靠你自己完善了,呵呵Top

30 楼lzgctgc(理引商务)回复于 2004-02-03 14:50:31 得分 0

我看思路是正确的,等我有时间测试一下Top

相关问题

  • 列出表字段?
  • A表中A字段=B表中A字段+B字段的和
  • 统计字段为编码维护的字段如何统计?
  • 统计字段为编码维护的字段如何统计
  • 请教关于表名的描述和字段的描述的维护问题,(sysproperties)!
  • 求sql语句A表1字段=B表1字段+B表2字段??
  • 表字段的问题
  • dbase表加字段,help
  • mysql表字段问题?
  • 根据字段查寻表

关键词

  • 字段
  • 数据
  • 用户
  • 表
  • adoquery
  • tempselect
  • 删除
  • 临时
  • 打开
  • 计算

得分解答快速导航

  • 帖主:lzgctgc
  • chenylin
  • IDWB
  • hthunter
  • ffzhlz
  • hthunter
  • hthunter
  • ffzhlz
  • hthunter
  • ffzhlz
  • ffzhlz
  • ffzhlz
  • hthunter
  • lywho
  • hthunter
  • hthunter

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo