ACCESS 查詢錯誤 |
尚未結案
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
引言: 我要做多條件搜尋. 所以光是"LIKE"並不能滿足阿(我還有一些 < > 的條件還未加入) 況且: SQL_MESS:='Select * from 會員 where 性別like "男"'; Query1.SQL.Clear; Query1.SQL.Add(SQL_MESS); Query1.Prepare; Query1.CLOSE; Query1.OPEN; 是不是ACCESS用中文做欄位名稱會有問題?您好﹗ 這個錯誤是因為您把"性別"和運算元"like"寫在一起了﹐SQL語句在執行時只找到名為"性別like"的欄位名稱﹐而沒有找到"like"運算元﹐將其中間加個空格﹐寫成"性別_like"即可(紅色下划線處代表空格) ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
SELECT 會員.ID, 會員.性別
FROM 會員
WHERE (((會員.性別)="男"));
這是我剪貼Access的SQL語法
或者你的資料庫沒連成功呢?
試試下面這段程式碼(我試過有成功!!):
db1.mdb的密碼設1234
ADOQuery1的Connection屬性設ADOConnection1 ADOConnection1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=1234;Data Source=Db1.mdb;Mode=ReadWrite;Persist Security Info=False"; ADOConnection1->Open();
AnsiString sqlstr="SELECT * FROM 會員 WHERE 性別='男'";
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlstr);
ADOQuery1->Open();
////
ADOQuery1->Close();
ADOConnection1->Close();
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
不好意思..我是從MSSQL 轉戰 ACCESS.所以很習慣用BDE做連結
並以 Tdatabase 作為我的物件...所以連ACCESS時會透過BDE
BDE自然會存取ODBC 現在重新學起
聽從Brian77建議.改用ADO.並以相同的語法用於stellos的程式碼
沒有錯誤.但是.....
不好意思...最後兩問
PASSWORD=');
Database1.DatabaseName :=' place="北區" >0 THEN
begin
WHILE (Query1.EOF=False) DO
BEGIN S:=Query1.FieLdByName('NAME').AsString;
I:=Query1.FieLdByName('AGE').AsInteger;
....
.....
//////以上..即可循序的讀出我要的欄位資料
Query1.NEXT;
END;
END;
================================================================
我自己試的結果:
ADOQuery1.First ;
WHILE (ADOQuery1.EOF=False) DO
BEGIN
S:= ADOQuery1.FieldByName('被害人姓名').AsString;
ADOQuery1.Next;
END;
為何? 第2問
ADO裡的SQL與法是否與DATABASE Access物件Query語法一樣?
用ADOQuery1.ExecSQL ;即可達到我所需求的SQL指令? 謝謝指導
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
1. 問題應該是 d5 的 bug, 請參考,
http://delphi.ktop.com.tw/topic.php?topic_id=60379 2. SQL Command 基本上都是相同的. 至於用 open 或是 ExecSQL 就看是否傳回 dataset 囉. 3. 基本上你的問題, 應該和 ado 或 bde 的存取方式無關, 照理說是先解決你原來的問題再轉 ado 會好一些, 請問你將 'Select * from 會員 where 性別="男"' 這個 command 貼在 access 的 query 中, 是否是正常的呢?
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
我的習慣是.學新的東西時.比較不會邊學邊問..全部搞懂時.才開始正式寫
所以我現在都只放於TForm1.FormCreate..以便一執行就知道有沒有問題
程式如下:
procedure TForm1.FormCreate(Sender: TObject);
VAR
S :STRING;
I :Integer;
begin
I:=0; ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=南港所.mdb;Persist Security Info=False';
ADOConnection1.Open ;
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add ('Select * from [基本資料] where 性別="男" order by "日期"');
ADOQuery1.Open();
StringGrid1.Rowcount:=0;
ADOQuery1.First ;
WHILE (ADOQuery1.EOF=False) DO
BEGIN
I:=I+1;
StringGrid1.Rowcount:=I;
StringGrid1.Cells [0,I-1]:=IntToStr(ADOQuery1.FieldByName('編號').AsInteger);
StringGrid1.Cells [1,I-1]:= ADOQuery1.FieldByName('被害人姓名').AsString;
ADOQuery1.Next;
END;//WHILE (Query1.EOF=False) DO
ADOQuery1.Close();
ADOConnection1.Close();
end;
==================================================================
如果是D5 的BUG 那麼如 http://delphi.ktop.com.tw/topic.php?topic_id=60379所說 ADO SevicePack 2 那兒下載?
D7不知道會不會有這樣的問題?
==================================================================
timhuang兄
我將最前的語法'Select * from 會員 where 性別="男"' 貼於access 的 query 是正常的
==================================================================
|
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
我用 D5 試了一下 ADO 及你的程式碼, 並無該錯訊, 可能也是未 Update 的關係
更新檔案可至 http://info.borland.com/devsupport/delphi/ 下載
使用 ADO 時, 可利用一個 TADOConnection 加一個 TADOQuery 進行 SELECT/UPDATE/DELETE 等動作
如果是新寫的系統, 又時間允許的話, 建議還是換成 ADO 來寫, 效能比 BDE ODBC 好很多 (MS-SQL 和 Access 都合適採用 ADO, Paradox 則合適採 BDE)
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
改用ADO 出現
根據http://delphi.ktop.com.tw/topic.php?topic_id=60379
說是D5的BUG
依據 Brian77 說的 至 http://info.borland.com/devsupport/delphi/
我下載安裝 http://info.borland.com/devsupport/delphi/mdac26.html
問題來了...D5開啟時 ADO 元件不見了..
重新安裝
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: ================================================================== 如果是D5 的BUG 那麼如 http://delphi.ktop.com.tw/topic.php?topic_id=60379所說 ADO SevicePack 2 那兒下載? D7不知道會不會有這樣的問題? ================================================================== timhuang兄 我將最前的語法'Select * from 會員 where 性別="男"' 貼於access 的 query 是正常的 ==================================================================D5 的 bug 在該篇文章內即有對應的連結, 是 borland 網站提供的 update, 安裝後會發生 ado 元件不見? 弟沒有碰過這樣的現像, 應該是不會才對. D6 以後的版本, ado 是沒有這個問題的, D7 也沒有!! |
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
在 http://info.borland.com/devsupport/delphi/mdac26.html 有提到, 它要求 D5 需要 Update 到 Pack 1 才適用該更新檔 請連結
http://info.borland.com/devsupport/delphi/downloads/index.html 裡頭有數支 Update
從下往上有 ADO Update, Delphi 5 Update, ADO Update 2 依序更新
我有使用 D5,D7,D8
D7,D8 都沒這個問題, D5 的話, 安裝後就接著上述三項安裝, 也沒出現這些問題.. so.. 再試試吧~
|
crazycat
一般會員 發表:22 回覆:20 積分:8 註冊:2003-04-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |