DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 8
在线用户: 17
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/8/6 10:48:57
标题:
关于Update 浏览:2891
加入我的收藏
楼主: 麻烦各位了!谢谢!
我想修改carlsk.dbf中的一个字段workname,为什么运行到.Next时出错?
    Query1.First;
    With Query1 do Begin
    Close;
    Sql.Clear;
    Sql.Add('update carlsk set workname=''+edit1.text+'');
    sql.add('where carnum like''+edit2.text+'');        
    Prepare;
    Execsql;
    End;
    Query1.Next;
错误:
Qery1 Cnnot Perform This Operation on a Close Dataset.
----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/8/6 11:09:28
1楼: 你的Query1的语句是"Update"怎么可以用"NEXT"呢!
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/8/6 11:23:51
2楼: yu:
   你好!
   我的程序是这样:它是个实时监控界面,它显示都是'没有检测过'的车的信息
(check_flag为'*'), 当Timer检测到有'检测完'的车辆(因为要一辆一辆地检测),就让这辆车从这个界面消失。每检测完一辆就消失一辆。
   每检测完一辆,就要修改这辆车的某一个字段,让它从界面上消失。
   不知我说没说明白?所以我要先First,检查是否有检测完的车辆,如果有就用update修改check_flag为'入库',让它打印表格后从这个界面消失(检测完一辆车就打印一张表)。然后再next查找下一辆检测完的车。
----------------------------------------------
李平
作者:
男 zsyzds (长弓升月) ★☆☆☆☆ -
普通会员
2003/8/6 15:10:13
3楼: 应该用update...where来修改,不可以那样。
----------------------------------------------
没有救世主
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/8/6 16:06:58
4楼: zsyzds:
    谢谢!我漏写了一行。
    我实在不知该如何修改225个字段的数据库。
    我只想能够从第一条到最后一条逐条查询并逐条修改。我试过用Edit和Post,对于77个字段的数据库好使。
    如果Delphi不能修改长字段的数据库,我真的很失望!能不能有别的办法。
----------------------------------------------
李平
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2003/8/7 12:56:09
5楼: 你在中间用Update更新时换一个临时的Query即可,而不要仍用原来的Query1.
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/8/12 11:32:42
6楼: iamdream:
    你好!
    能说详细点吗?我是个初学者。原来是用vb的,但感觉查询速度慢,所以想换成Delphi,果然查询速度非常快。但是我原来的数据库都是超过100个字段的.dbf表,我发现用Edit和Post修改字段的值,结果出现'字段超长'的错误,我把TQuery组件的CachedUpdate属性改成true,在界面上可以看到已经修改完毕,但退出程序后,.dbf数据表并没有修改。
    你说'中间用Update更新时换一个临时的Query即可,而不要仍用原来的Query1'
    如何用Update更新换一个临时的Query?具体的语句如何写?
    谢谢!


----------------------------------------------
李平
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2003/8/12 12:36:02
7楼: var
  qryTemp : TQuery;
begin
  qryTemp := TQuery.Create(Application);
  qryTemp.DatabaseName := '数据库别名'; //此处用 数据库别名 用你的程序中的实际名称代替
    Query1.First;
    With qryTemp do Begin
      Close;
      Sql.Clear;
      Sql.Add('update carlsk set workname=''+edit1.text+'');
      sql.add('where carnum like''+edit2.text+'');
      Prepare;
      Execsql;
    End;
    Query1.Next;
end;

至于将已修改的提交到数据库,可用
  Query1.ApplyUpdates;
实现。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/8/12 14:14:35
8楼: iamdream:
     你好!非常感谢你的帮助!
     我把'Query1.ApplyUpdates;'放到Query1.next后面结果出现错误:
     'query1:Not in cached update mode'.
    

----------------------------------------------
李平
作者:
男 zbl (布林) ★☆☆☆☆ -
普通会员
2003/8/12 17:56:13
9楼: 是不是你的DBF在连接的过程中就没有处进于可以更新的状态呀.?
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/8/13 8:22:55
10楼: zbl:
    你好!
    可以更新的状态是指什么?
----------------------------------------------
李平
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS