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

adoquery1: parameter 'A' not found

答題得分者是:careychen
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-18 17:43:11 IP:218.60.xxx.xxx 訂閱
其中执行下面程序出现错误
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A';
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView2.Selected.Text ;// 此行出现adoquery1: parameter 'A' not found
ADOQuery1.Prepared ;
ADOQuery1.Open ;

我也找了相类似的文章但是没有看懂.请各位大大帮忙是什么问题?
附加檔案:48a9442f90290_Snap1.jpg
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-08-18 21:10:55 IP:218.210.xxx.xxx 訂閱

===================引 用 nanpiao 文 章===================
其中执行下面程序出现错误

ADOQuery1.Close; // 請問一下這時候的 ADOQuery 有 Close 嗎?
或是 ADOQuery1 的屬性 ParamCheck 是否為 True 呢? 為 True 才正確哦!

ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A';
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView2.Selected.Text ;// 此行出现adoquery1: parameter 'A' not found
ADOQuery1.Prepared ;
ADOQuery1.Open ;

我也找了相类似的文章但是没有看懂.请各位大大帮忙是什么问题?
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-08-18 21:11:39, 註解 無‧
careychen 重新編輯於 2008-08-18 21:11:39, 註解 無‧
careychen 重新編輯於 2008-08-18 21:12:20, 註解 無‧
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-08-19 08:36:06 IP:61.218.xxx.xxx 未訂閱
參考這篇: http://www.delphi32.com/info_facts/faq/faq_932.asp

You can easily fix this by creating the parameters before calling by calling:
ADOQuery.Parameters.ParseSQL(ADOQuery.SQL.Text, True)

ADOQuery.Parameters.ParamByName('ParamName').Value
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-08-19 08:43:15 IP:218.60.xxx.xxx 訂閱
谢谢careychen的回复.
按照您说的方法添加了adoquery1.close;
同时将adoquery1.ParamCheck:=true;
但是仍然出现"adoquery1: parameter 'A' not found"
ADOQuery1.close;
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ; //此行出现问题 adoquery1: parameter 'A' not found"
ADOQuery1.Parameters.ParamByName('B').Value :=TreeView1.Selected.Text ;
ADOQuery1.Prepared ;
ADOQuery1.Open ;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-08-19 08:49:11 IP:61.218.xxx.xxx 未訂閱
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';

改成如下試試:

ADOQuery1.SQL.Text :='select * from fd where [类型] = :A and [姓名] = :B';
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-08-19 08:53:41 IP:218.60.xxx.xxx 訂閱

===================引 用 hagar 文 章===================
參考這篇: http://www.delphi32.com/info_facts/faq/faq_932.asp

You can easily fix this by creating the parameters before calling by calling:
ADOQuery.Parameters.ParamByName('ParamName').Value
*****************************************************
谢谢hagar 大大回复,我查看了语法 ADOQuery.Parameters.ParseSQL(ADOQuery.SQL.Text, True)如何使用
因为要对其赋值,如果有两个变量如何操作: 再次恳请hagar出手相救,再次谢谢
  adoquery1.close;
  ADOQuery1.SQL.Clear ;
  ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';
  ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ;  (请问如何改写,还有下面一行)
  ADOQuery1.Parameters.ParamByName('B').Value :=TreeView1.Selected.Text ;
  ADOQuery1.Prepared ;
  ADOQuery1.Open ;

ADOQuery.Parameters.ParseSQL(ADOQuery.SQL.Text, True)
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-08-19 08:57:19 IP:218.60.xxx.xxx 訂閱

===================引 用 hagar 文 章===================
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';

改成如下試試:

ADOQuery1.SQL.Text :='select * from fd where [类型] = :A and [姓名] = :B';

**********************************************************************
将类型和姓名加上 [ ] 还是adoquery1: parameter 'A' not found
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-08-19 09:17:41 IP:218.60.xxx.xxx 訂閱
新的问题出现了
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';
ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, true);//此行新添加,没有了adoquery1: parameter 'A' not found出错信息
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ;
ADOQuery1.Parameters.ParamByName('B').Value :=TreeView1.Selected.Text ;
ADOQuery1.Prepared ;
ADOQuery1.Open ;
但是出现了如下的出错信息

access violation at address 004B56A4 in module 'Project01.exe' Read of address 00000008

===================引 用 nanpiao 文 章===================

===================引 用 hagar 文 章===================
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';

改成如下試試:

ADOQuery1.SQL.Text :='select * from fd where [类型] = :A and [姓名] = :B';

**********************************************************************
将类型和姓名加上 [ ] 还是adoquery1: parameter 'A' not found
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-08-19 21:22:55 IP:220.137.xxx.xxx 未訂閱
這個就難了 ...

1.ADOQuery1 有沒有指定 Connection 屬性?
2.ADOQuery1 在 select * from fd 之前有沒有執行其它 sql statement?
3.哪一行發生 Access Violation?
4.什麼資料庫?
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-08-19 21:50:39 IP:218.210.xxx.xxx 訂閱
我測到你的問題了
你的問題就是那個 Treeview 那邊,
你現在選的Root,沒有 Parent.Text 可用!!

===================引 用 nanpiao 文 章===================
新的问题出现了
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';
ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, true);//此行新添加,没有了adoquery1: parameter 'A' not found出错信息
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ;
ADOQuery1.Parameters.ParamByName('B').Value :=TreeView1.Selected.Text ;
ADOQuery1.Prepared ;
ADOQuery1.Open ;
但是出现了如下的出错信息

access violation at address 004B56A4 in module 'Project01.exe' Read of address 00000008
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-08-19 21:52:47, 註解 無‧
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-08-21 15:31:23 IP:218.60.xxx.xxx 訂閱
1.按照hagar 已经指定了connection属性
2.没有执行其他操作
3.ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ;
4.资料库为access数据库.
===================引 用 hagar 文 章===================
這個就難了 ...

1.ADOQuery1 有沒有指定 Connection 屬性?
2.ADOQuery1 在 select * from fd 之前有沒有執行其它 sql statement?
3.哪一行發生 Access Violation?
4.什麼資料庫?
nanpiao
一般會員


發表:12
回覆:18
積分:6
註冊:2007-10-19

發送簡訊給我
#12 引用回覆 回覆 發表時間:2008-08-21 15:32:46 IP:218.60.xxx.xxx 訂閱
1.不是treeview 问题.
2.重新制作一个project没有问题了.谢谢各位的帮忙和帮助,不胜感激
===================引 用 careychen 文 章===================
我測到你的問題了
你的問題就是那個 Treeview 那邊,
你現在選的Root,沒有 Parent.Text 可用!!

===================引 用 nanpiao 文 章===================
新的问题出现了
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';
ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, true);//此行新添加,没有了adoquery1: parameter 'A' not found出错信息
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ;
ADOQuery1.Parameters.ParamByName('B').Value :=TreeView1.Selected.Text ;
ADOQuery1.Prepared ;
ADOQuery1.Open ;
但是出现了如下的出错信息

access violation at address 004B56A4 in module 'Project01.exe' Read of address 00000008
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#13 引用回覆 回覆 發表時間:2008-08-21 16:12:09 IP:218.210.xxx.xxx 訂閱
重新作一個就 OK ......  恭禧你把問題解決了,
我沒幫到什麼忙,這個分應該是給 hagar 版主的

===================引 用 nanpiao 文 章===================
1.不是treeview 问题.
2.重新制作一个project没有问题了.谢谢各位的帮忙和帮助,不胜感激
===================引 用 careychen 文 章===================
我測到你的問題了
你的問題就是那個 Treeview 那邊,
你現在選的Root,沒有 Parent.Text 可用!!

===================引 用 nanpiao 文 章===================
新的问题出现了
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Text :='select * from fd where 类型=:A and 姓名=:B';
ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, true);//此行新添加,没有了adoquery1: parameter 'A' not found出错信息
ADOQuery1.Parameters.ParamByName('A').Value :=TreeView1.Selected.Parent.Text ;
ADOQuery1.Parameters.ParamByName('B').Value :=TreeView1.Selected.Text ;
ADOQuery1.Prepared ;
ADOQuery1.Open ;
但是出现了如下的出错信息

access violation at address 004B56A4 in module 'Project01.exe' Read of address 00000008
------
價值的展現,來自於你用哪一個角度來看待它!!
系統時間:2024-04-20 5:42:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!