导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2003/7/16 8:40:44
标题:
加入我的收藏
楼主:
下面是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 这是什么意思?
----------------------------------------------
李平
作者:
2003/7/16 9:22:34
1楼:
SQL.Add('Update cwxxk set Owner=''+self.edit1.text+''); SQL.Add(' where carnum like ''+self.edit2.text+'');
----------------------------------------------
-
作者:
2003/7/16 9:49:30
2楼:
YueJun_98: 谢谢! 但结果还是跟原来一样,错误也一样。
----------------------------------------------
李平
作者:
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+'%'');
----------------------------------------------
-
作者:
2003/7/16 10:44:07
4楼:
yu: 你好!经常得到你的帮助,真的非常感谢! 如果有时间,麻烦你写全点,好吗?谢谢!
----------------------------------------------
李平
作者:
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;
----------------------------------------------
-
作者:
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. 为什么?
----------------------------------------------
李平
作者:
2003/7/16 11:22:39
7楼:
如果CachedUpdate和RequestLive都设置为TRUE则只要设置"SELECT"语句就可以了,就可以像TABLE组件那件在DBGRID中修改并更新
----------------------------------------------
-
作者:
2003/7/16 11:25:22
8楼:
yu: 能告诉我Query的CachedUpdate和RequestLive该怎么设吗? 都设为false也不对。
----------------------------------------------
李平
作者:
2003/7/16 11:35:42
9楼:
CachedUpdate:=false; RequestLive:=true; 在设计阶段设置Tquery的SQL语句为"Select * from "表"".这样设置以后,Query就跟Table一样使用了 如果CachedUpdate设为TRUE则必须调用ApplyUpdate才能真正提交更新
----------------------------------------------
-
作者:
2003/7/16 11:41:24
10楼:
yu: Query1的CachedUpdate:=false;RequestLive:=true; SQL为select * from cwxxk 程序运行后还是Table is read only. 为什么?
----------------------------------------------
李平
作者:
2003/7/16 11:46:27
11楼:
刚才的方法是我试过可以才告诉你的,没有问题.你仔细检查一下你那边与Query组件相关的组件的属性,还有数据库的属性.
----------------------------------------------
-
作者:
2003/7/16 14:42:36
12楼:
yu: 你好!对不起,我又换了一个数据库,程序通过了。 但是我还想问是不是update只能在数据库关闭时才能改? 我想用Query1边查库边修改。 另外,我在update语句的ExecSQL后面加 open; 为什么会出错? Error creating cursor handle. 我想修改完后再打开数据库接着查。
----------------------------------------------
李平
作者:
2003/7/16 15:46:56
13楼:
ExecSQL就相当于是open了,当然会出现"创建句柄错误"的提示,我已经说过了,query组件那样设置过后,用法就跟Table组件是一样的了.不必再利用"Update"语句来修改了,直接修改就行了.
----------------------------------------------
-
作者:
2003/7/16 16:01:58
14楼:
yu: 你真好,每次我的问题都被你解决,谢谢! 我用update修改完后,DBGrid是空的,我想看到。 ExecSQL;后面我又加 edit1.text:=query1.fieldbyname('carnum').asstring; 但是运行后出错:carnum not found.
----------------------------------------------
李平
作者:
2003/7/16 16:06:41
15楼:
Query组件那样设置后,你可以直接打开Query组件并在DBGrid中直接修改,就可以提交更新,并不需要再用"Update"来修改.
----------------------------------------------
-
作者:
2003/7/16 16:14:18
16楼:
谢谢!
----------------------------------------------
李平