莫名其妙的错误。(50分)

  • 主题发起人 主题发起人 SuperMMX
  • 开始时间 开始时间
S

SuperMMX

Unregistered / Unconfirmed
GUEST, unregistred user!
我的记录很少, 就是看一看数据库怎么编。

我在 SQL explorer 和 我的程序中做相同的工作,
检验结果。

在 SQL explorer 运行完以后, 再在我的程序中进行相应的工作,
结果出现了如下错误:

Invalid use of keyword
Token: (Z)
LineNumber 2

SQL.Clear;
SQL.Add('select * from MyAlbum');
SQL.Add('order by ' + SortString);
ExecSQL;
有时候还出现 inefficient memory use 什么的。

我试了几次,只用我的程序就没有这个错误,只有在
SQL explorer 运行完以后才有。

什么原因?
 
Perhaps it's a bug of delphi
 
>SQL.Add('order by ' + SortString);
by后面有没有加空格?
 
出现inefficient memory use 是因为你的程序异常终止了几次.
 
<ExecSQL;
应该是Open吧
 
打开一个数据集用Open,不应该用ExecSql.
 
这是delphi的一个bug,它实际只取了SQL中的第一个字串,如autumn和hpretty所讲,但在CBUILD中就没有此现象。
 
to 沈前卫:
不知道 ctrl + f2 是不是这样?

to automn:
有空格。

就是在 SQL explorer 运行完以后才出现的,
我要倒了。
 
1。出现 inefficient memory use 是因为程序多次非正常终止。
2。select * from "MyAlbum"
order by "MyAlbum"."你的字段名" DESC
Try 一 Try; 别忘了给我加分
 
用open吧,这个地方不能用execsql.
有返回集的时候要用open,先试试吧,可能是这个缘故。
 
SuperMMX:
94
 
"Invalid use of keyword
Token: (Z)
LineNumber 2"
表示SQL语句语法错误,且是第二行,可以跟踪进去看看,多半是SortString的错。

另外,‘select’应该用Open。
 
呵呵,第一个问题解决了,是我没有把 mainmenu 的 自动热键 设为 false
结果它给我自动加上了。

第二个,ctrl + f2 会不会出什么问题。?
 
还有, 根据 delphi 的帮助说
对 sql 有改变, query 的 active 会变成 false,
最后调用 execsql 或 open 都可以.

我想问 execsql 和 open 有什么不一样,
open 是把 active 设为 true, 并执行 execsql
execsql 是执行 sql,
这就和帮助说的不太一样,

现在,我的程序在 execsql 后必须加 query1.active := true
才可看到结果, 而前几天没有运行的很正常, 不知道为什么。
 
还有, 能不能用 query 实现所有 table 能实现的操作,
是不是很麻烦?比如 加一个记录,删一个,
修改等等?
 
多人接受答案了。
 
后退
顶部