線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1442
推到 Plurk!
推到 Facebook!

在SQL的表中查寻所有数据是否有一个特定字符串

缺席
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-17 09:51:09 IP:124.237.xxx.xxx 訂閱
XY表中有fa1.....fa15   15个字段。
我想在这15个字段中查找是否有'11111’这个字符串

[code delphi]
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from xy where fa1=:mc or fa2=:mc or fa3=:mc or fa4=:mc or fa5=:mc or fa6=:mc or fa7=:mc or fa8=:mc or fa9=:mc or fa10=:mc or fa11=:mc or fa12=:mc or fa13=:mc or fa14=:mc or fa15=:mc');
Parameters.ParamByName('mc').Value := '11111';
open;
end;
[/code]
报错:当前提供程序不支持从单一执行返回多个记录集。
问题:为什么出这样的错误,怎么解决?
高手帮帮忙啊。
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-17 12:51:26 IP:122.116.xxx.xxx 未訂閱
您好,

我沒測您的程式段, 單從程式碼看好像沒什麼問題,
請問是在哪一列報錯的

------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-17 14:16:54 IP:124.237.xxx.xxx 訂閱
哪里都没错,就是运行到提取数据库数据的时候报错。
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-17 15:20:19 IP:122.116.xxx.xxx 未訂閱
哪一句程式碼?
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-18 08:41:57 IP:124.237.xxx.xxx 訂閱
只要把
[code delphi]
'select * from xy where fa1=:mc or fa2=:mc or fa3=:mc or fa4=:mc or fa5=:mc or fa6=:mc or fa7=:mc or fa8=:mc or fa9=:mc or fa10=:mc or fa11=:mc or fa12=:mc or fa13=:mc or fa14=:mc or fa15=:mc'
[/code]
换掉就一点错都没有了
但是我把这个SQL语句在数据库里直接运行一点问题都没有。
要是有其他的SQL语句更好我的语句可能adoquery不支持。

編輯記錄
wq236589 重新編輯於 2008-11-18 09:09:51, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-18 11:50:48 IP:211.72.xxx.xxx 訂閱
雖然您的 :mc 都等於 '11111', 但您要用15次, 便要分成15個 Parameter, 這是 Delphi 解譯 SQL 的機制.
sql.add('select * from xy where fa1=:mc1 or fa2=:mc2 or fa3=:mc3 or fa4=:mc4 or .....');
Parameters.ParamByName('mc1').Value := '11111';
.......
Parameters.ParamByName('mc15').Value := '11111';

建議改寫為如下試試(for Oracle 語法, 其他 Database 可能不同):
sql.add('select * from xy where :mc IN (fa1,fa2,fa3,....)');
Parameters.ParamByName('mc').Value := '11111';

查一下您的元件 Property 設定, 看是否有限制只准接收一 Rowset 的設定.
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-18 12:41:54 IP:124.237.xxx.xxx 訂閱
谢谢你写的SQL语句,但是还是报错:当前提供程序不支持从单一执行返回多个记录集。
有没有什么方法解决这个问题啊
Property 怎么查啊 这个属性有什么用?
編輯記錄
wq236589 重新編輯於 2008-11-18 12:45:39, 註解 無‧
系統時間:2024-05-06 10:29:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!