全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4909
推到 Plurk!
推到 Facebook!

EDatabaseError 错误 AdoQuery1:Field 'XXXX' not found

尚未結案
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-30 13:34:27 IP:61.183.xxx.xxx 訂閱
adoquery1连接数据库正常 但运行提示 EDatabaseError 错误 AdoQuery1:Field '人口总数' not found 的错误

方法一:
adoquery1.Active设为false
其SQL 的String List Editor中为:select sum(人数) 人口总数 from 人口表
然后 有代码:
[code delphi]
var
people:string;
...
adoquery1.Active:=false;
adoquery1.Active:=true;
people:=adoquery1.FieldByName('人口总数').AsString;//执行到这里 提示EDatabaseError 错误 AdoQuery1:Field '人口总数' not found
...
[/code]

方法二(此方案OK 但不知为何 方法一 行不通):
adoquery1.Active设为false
代码:
[code delphi]
var
people:string;
...
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select sum(人数) 人口总数 from 人口表');
adoquery1.Open;
people:=adoquery1.FieldByName('人口总数').AsString;
...
[/code]
我按方法二执行 却是OK的 不知原因在哪里 谢谢大大们的指点
編輯記錄
baby2321 重新編輯於 2007-10-30 13:35:59, 註解 無‧
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-30 17:19:59 IP:218.94.xxx.xxx 訂閱
adoquery1连接数据库正常 但运行提示 EDatabaseError 错误 AdoQuery1:Field '人口总数' not found 的错误

方法一:
adoquery1.Active设为false
其SQL 的String List Editor中为:select sum(人数) 人口总数 from 人口表
然后 有代码:
[code delphi]
var
people:string;
...
adoquery1.Active:=false;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select sum(人数) 人口总数 from 人口表');
adoquery1.Active:=true;

people:=adoquery1.FieldByName('人口总数').AsString;//执行到这里 提示EDatabaseError 错误 AdoQuery1:Field '人口总数' not found
...
[/code]

是不是少了SQL语句呀!哈哈!
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-31 03:05:15 IP:219.140.xxx.xxx 訂閱
谢谢大大的回复 
方法一中 我把SQL语句写在了ADOQUERY1对应 SQL 属性里
即Adoquery1的SQL 的String List Editor中为:select sum(人数) 人口总数 from 人口表
我觉得 通过

[code delphi]
adoquery1.active:=false;
adoquery1.active:=true;
[/code]
应该可以实现啊 这里 我已经在Adoquery1的SQL 的String List Editor中写了啊

編輯記錄
baby2321 重新編輯於 2007-10-31 03:08:38, 註解 無‧
JustinShen
中階會員


發表:22
回覆:104
積分:80
註冊:2003-09-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-11-03 16:40:28 IP:222.188.xxx.xxx 訂閱
原因很简单,你的sql语句里面没有用AS关键字,在sql editor中输入进去的时候可能会被设定成自定义字段。
------
====================
我为一切作努力!
Justin Shen

baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-11-03 23:21:20 IP:219.139.xxx.xxx 訂閱
谢谢JustinShen的回复

Adoquery1的SQL 的String List Editor 调整为:select sum(人数) as 人口总数 from 人口表
仍然提示改错误

我把
select sum(人数) 人口总数 from 人口表
或是
select sum(人数) as 人口总数 from 人口表
放到查询分析器里测试都是OK的
但在程序执行里 就提示我上面说的错误
不知何解
wuabc
初階會員


發表:6
回覆:60
積分:33
註冊:2002-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-11-06 11:34:25 IP:203.204.xxx.xxx 訂閱

===================引 用 baby2321 文 章===================
谢谢JustinShen的回复

Adoquery1的SQL 的String List Editor 调整为:select sum(人数) as 人口总数 from 人口表
仍然提示改错误

我把
select sum(人数) 人口总数 from 人口表
或是
select sum(人数) as 人口总数 from 人口表
放到查询分析器里测试都是OK的
但在程序执行里 就提示我上面说的错误
不知何解

select sum([人数]) [人口总数] from [人口表]
我猜加中括弧應該可以

編輯記錄
wuabc 重新編輯於 2007-11-06 11:49:57, 註解 無‧
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-11-07 03:33:30 IP:61.183.xxx.xxx 訂閱
谢谢wuabc 的回复

这样没有效果 错误提示还是和原来一样
JustinShen
中階會員


發表:22
回覆:104
積分:80
註冊:2003-09-20

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-11-07 13:15:10 IP:222.188.xxx.xxx 訂閱
我做了个测试,你所说的情况不存在,
1:不使用as关键字sql editor 一定不能通过;
2:使用代码控制ADOQuery中的sql语句没有问题。
代码如下:
[code delphi]
if ADOQuery2.Active then ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQUery2.SQL.Text := Edit1.Text;
ADOQuery2.Open;

[/code]
在这里我使用一个TEdit来提供输入的sql语句,执行一直都没有问题。
------
====================
我为一切作努力!
Justin Shen

ace33022
一般會員


發表:2
回覆:41
積分:23
註冊:2004-05-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-11-07 15:06:48 IP:59.125.xxx.xxx 訂閱
請問你是使用Delphi7還是5,大膽猜一下,可能是編碼的問題

因為欄位名稱並非英文,所以可能會有問題,可以用Profiler查一下嗎?看送到SQL Server端時是否仍是一樣的語句?


===================引 用 baby2321 文 章===================
adoquery1连接数据库正常 但运行提示 EDatabaseError 错误 AdoQuery1:Field '人口总数' not found 的错误

方法一:
adoquery1.Active设为false
其SQL 的String List Editor中为:select sum(人数) 人口总数 from 人口表
然后 有代码:
[code delphi]
var
people:string;
...
adoquery1.Active:=false;
adoquery1.Active:=true;
people:=adoquery1.FieldByName('人口总数').AsString;//执行到这里 提示EDatabaseError 错误 AdoQuery1:Field '人口总数' not found
...
[/code]

方法二(此方案OK 但不知为何 方法一 行不通):
adoquery1.Active设为false
代码:
[code delphi]
var
people:string;
...
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select sum(人数) 人口总数 from 人口表');
adoquery1.Open;
people:=adoquery1.FieldByName('人口总数').AsString;
...
[/code]
我按方法二执行 却是OK的 不知原因在哪里 谢谢大大们的指点
JustinShen
中階會員


發表:22
回覆:104
積分:80
註冊:2003-09-20

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-11-08 15:44:51 IP:222.185.xxx.xxx 訂閱
要避免你自己认识到的编码问题,你就需要严格遵守sql语言规范了,wuabc说的没有错加中括号是比较好的选择,as关键字也是需要的。
至于你说Delphi7还是5,我以前写过使用中文字段名的表访问程序没有问题,现在用的是Delphi2007。
估计你把自己的project option中语言设定为中文了,还有就是要注意建立SQL String时使用的数据库驱动的设定,默认值一般没有问题。
------
====================
我为一切作努力!
Justin Shen

baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-11-09 00:09:31 IP:219.139.xxx.xxx 訂閱
谢谢各位 我用的是  delphi7
我没有通过Edit1来输入SQL命令 我就是在困惑为什么 在查询分析器里运行结果正常 但到了SQL 的String List Editor里就不对了
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-11-09 08:18:43 IP:218.94.xxx.xxx 訂閱
procedure TForm1.Button1Click(Sender: TObject);
begin
//select sum(人数) as 人口总数 from 人口表 --〉直接放在ADOQuery1中
ADOQuery1.Active := false;
ADOQuery1.Active := true;
ShowMessage(adoquery1.FieldByName('人口总数').AsString);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select sum(人数) as 人口总数 from 人口表');
adoquery2.Open;
ShowMessage(adoquery2.FieldByName('人口总数').AsString);
end;
测试均为有什么问题,可能是你哪儿语法是不是有全角空格符号呀!

http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=91197
程序代码在这儿,看看与你的有什么不同!
編輯記錄
sos_admin 重新編輯於 2007-11-09 16:23:59, 註解 無‧
baby2321
初階會員


發表:52
回覆:165
積分:48
註冊:2005-06-11

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-11-09 18:01:40 IP:219.139.xxx.xxx 訂閱
谢谢版主sos_admin 的悉心回复
放在ADOQuery1中的代码 我是直接从adoquery1.SQL.Add('select sum(人数) as 人口总数 from 人口表');复制粘贴的
刚才我还特别注意的在ADOQuery1中重写了一遍 仍然提示错误

在这里 我想已经是纯讨论一点点 学术的问题 在此 再一次的谢谢大家

我又新换了一个adoquery 如 adoquery5 select sum(人数) as 人口总数 from 人口表 放在 adoquery5中
这一次却是OK的了

再换到 adoquery1 上面的错误情况又出现了 呵呵 好奇怪啊

所有的问题 还是一点 为什么在 adoquery1.SQL.Add('select sum(人数) as 人口总数 from 人口表'); 中 可行 可就是在 adoquery1里就提示错误了

谢谢大家了
編輯記錄
baby2321 重新編輯於 2007-11-09 18:03:15, 註解 無‧
baby2321 重新編輯於 2007-11-10 02:16:05, 註解 無‧
baby2321 重新編輯於 2007-11-10 02:17:01, 註解 無‧
系統時間:2024-11-23 3:40:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!