我在TQuery中插入空记录时出现错误(50分)

  • 主题发起人 主题发起人 wz_hzb
  • 开始时间 开始时间
W

wz_hzb

Unregistered / Unconfirmed
GUEST, unregistred user!
我在TQuery中插入空记录时出现错误

数据库为paradox
请看下面一段代码
OnButton1Click代码:

Query1.databasename="ty2000";
Query1.clear;
Query1.requestlive:=true;
Query1.SQL.add("select * from worker.db order by name");
Query1.execsql;
Query1.active:=true;

OnButton2Click代码:
Query1.insert;
Query1.post;

当程序执行到Query1.insert的时候出现
"Query1:Cannot modify a read-only dataset"错误提示。

请问各位是何原因?谢谢!
(我是用C++ Builder写的程序,以上代码是我程序中的C代码改编过来的,
可能存在pascal语法错误,但大概意思就是以上这样,请大侠不要见笑^-^)。

 

两个buttonclick都是用Query1
可能是Query1没关闭的缘故.
 
Query+order by |group by|where 返回的是只读数据集。

query只有在不带任何条件下,query1.requestlive:=true;
才能修改数据.


 
添加一个UpdateSQL,将Query的UpdateSql的属性设为该UpdateSQL,在UpdateSQL中添加
一些设置,就可以实现你的要求了。(UpdateSQL与Query同在一个页上)
 
用Tquery+Tupdatesql就可以解决此问题
 
若只对一个表操作,可以不用Tquery+Tupdatesql,按coao的作法即可.
Query+where+and可以.order by 或group by我没试过.
 
好像不能象上面那样在TQuery中插入空记录.

try Query1.InsertRecord(...)
 
哈哈,问题一大个。
query.execsql仅仅执行sql语句,不返回数据集。
即使query.active=true也没用。
正确调用数据集的方法:query.open
试一试?
 
问题出在 Order By 上,把这个去掉就可以,如果非要排序的话,就只能用
query + updateSQL 了。
另:打开 Query 应当用 Query1.Open,Query1.Clear 应为 Query1.SQL.Clear
 
用Query1.open
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部