DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wujinmiao9527
今日帖子: 26
在线用户: 19
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 8:40:44
标题:
update改错 浏览:3407
加入我的收藏
楼主: 下面是update语句,谁能告诉我,有什么错误?
    with query1 do begin
    SQL.Clear;
    SQL.Add('Update cwxxk set Owner=''+self.edit1.text+'');
    SQL.Add('where carnum like''+self.edit2.text+''');
    ExecSQL;
    end;
调试时出现错误:
[Error] Unit1.pas(36): Unterminated string
[Error] Unit1.pas(37): ')' expected but identifier 'ExecSQL' found
这是什么意思?
----------------------------------------------
李平
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 9:22:34
1楼: SQL.Add('Update cwxxk set Owner=''+self.edit1.text+'');
    SQL.Add(' where carnum like ''+self.edit2.text+'');
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 9:49:30
2楼: YueJun_98:
    谢谢!
    但结果还是跟原来一样,错误也一样。
----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 10:06:39
3楼: 为什么不在语句中使用参数呢?
----------------------------------------------
-
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 10:16:28
1楼: 问题:
1.where前没有空格,加上
2.like没加空格和%

改一下:  
    SQL.Add(' where carnum like '%'+self.edit2.text+'%'');

----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 10:44:07
4楼: yu:
    你好!经常得到你的帮助,真的非常感谢!
    如果有时间,麻烦你写全点,好吗?谢谢!

----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 10:52:54
5楼: 参数的使用你可以参考一下下面的例子:

  self.Update_Data_3.SQL.Clear;
  self.Update_Data_3.SQL.Add('Update "data_3.db" Set kc=kc+:Addkc where id=:D3ID');
  self.Update_Data_3.Prepare;
  self.Update_Data_3.ParamByName('Addkc').AsSmallInt:=DeltaDS.Fields[4].Value;
  self.Update_Data_3.ParamByName('D3ID').AsSmallInt:=DeltaDS.Fields[2].Value;
  self.Update_Data_3.ExecSQL;


----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 11:12:15
6楼: yu:
    你好! 你看我写的对吗?       
        with query1 do begin
        SQL.Clear;
        SQL.Add('Update cwxxk set Owner=owner+:cz1 where carnum=:cz2');
        prepare;
        ParamByName('cz1').asstring:=edit1.text;
        ParamByName('cz2').asstring:=edit2.text;
        ExecSQL;
        open;
        end;
我把Query1的CachedUpdate和RequestLive和Active都设true;
但程序运行后,[Error]Table is read only.
为什么?
----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 11:22:39
7楼: 如果CachedUpdate和RequestLive都设置为TRUE则只要设置"SELECT"语句就可以了,就可以像TABLE组件那件在DBGRID中修改并更新
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 11:25:22
8楼: yu:
    能告诉我Query的CachedUpdate和RequestLive该怎么设吗?
    都设为false也不对。
----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 11:35:42
9楼: CachedUpdate:=false;
RequestLive:=true;
在设计阶段设置Tquery的SQL语句为"Select * from "表"".这样设置以后,Query就跟Table一样使用了
如果CachedUpdate设为TRUE则必须调用ApplyUpdate才能真正提交更新
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 11:41:24
10楼: yu:
   Query1的CachedUpdate:=false;RequestLive:=true;
   SQL为select * from cwxxk
   程序运行后还是Table is read only.
为什么?


----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 11:46:27
11楼: 刚才的方法是我试过可以才告诉你的,没有问题.你仔细检查一下你那边与Query组件相关的组件的属性,还有数据库的属性.
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 14:42:36
12楼: yu:
   你好!对不起,我又换了一个数据库,程序通过了。
   但是我还想问是不是update只能在数据库关闭时才能改?
   我想用Query1边查库边修改。
   另外,我在update语句的ExecSQL后面加  open;  为什么会出错?
Error creating cursor handle.
   我想修改完后再打开数据库接着查。
----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 15:46:56
13楼: ExecSQL就相当于是open了,当然会出现"创建句柄错误"的提示,我已经说过了,query组件那样设置过后,用法就跟Table组件是一样的了.不必再利用"Update"语句来修改了,直接修改就行了.
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 16:01:58
14楼: yu:
    你真好,每次我的问题都被你解决,谢谢!
    我用update修改完后,DBGrid是空的,我想看到。
    ExecSQL;后面我又加
edit1.text:=query1.fieldbyname('carnum').asstring;
   但是运行后出错:carnum not found.

----------------------------------------------
李平
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/16 16:06:41
15楼: Query组件那样设置后,你可以直接打开Query组件并在DBGrid中直接修改,就可以提交更新,并不需要再用"Update"来修改.
----------------------------------------------
-
作者:
女 shmhms (hms) ★☆☆☆☆ -
普通会员
2003/7/16 16:14:18
16楼: 谢谢!
----------------------------------------------
李平
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行1941.406毫秒 RSS