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

SQL語法的疑或

尚未結案
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-26 18:03:41 IP:220.229.xxx.xxx 未訂閱
使用得是adoconnection 如何取的資料庫中的一筆紀錄呢   是紀錄ㄛ    比如說一個的人的所有資料 sql語法該如何寫呢 下面這兩句語法鄭確嗎   謝謝各位大大
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-28 00:19:08 IP:61.71.xxx.xxx 未訂閱
引言: 使用得是adoconnection 如何取的資料庫中的一筆紀錄呢 是紀錄ㄛ 比如說一個的人的所有資料 sql語法該如何寫呢 下面這兩句語法鄭確嗎 謝謝各位大大 >< face="Verdana, Arial, Helvetica"> 從內容無法判斷正確與否, 因為不知道你變數來源如何? 而且每一個資料庫或多或少都有不太一樣的語法 不過CREATE TABLE 似乎內容尚有不足 CREATE TABLE TABLENAME 指定欄位 長度(VARCHAR(nn)).... 第2點的語法未必只選出一筆記錄, 端視你資料庫中是否都是唯一性 sql.Add('select * from ' quotedstr(listbox1.Items.Strings[listbox1.Itemindex]) 'where ' quotedstr(combobox2.text) '=' quotedstr(edit1.Text)='data1' 這句也有問題, 轉換成標準SQL解析後 quotedstr(listbox1.Items.Strings[listbox1.Itemindex])='資料表' quotedstr(combobox2.text)='欄位' quotedstr(edit1.Text)='資料' select * from '資料表' where '欄位'= '資料' 這樣有沒有看出奇怪的地方, 因為Quotedstr會將字串帶入''(引號) Quotedstr('ABC') 等同於 '''' 'ABC' '''' 應該改為 sql.Add('select * from ' listbox1.Items.Strings[listbox1.Itemindex] ' where ' combobox2.text '=' quotedstr(edit1.Text) 但要注意如果是數值欄位, 則 quotedstr(edit1.text)也要改為 edit1.text就好了 發表人 - P.D. 於 2005/03/28 00:21:21
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-28 09:41:41 IP:220.130.xxx.xxx 未訂閱
謝謝大家的支持 如果我要兩張甚至多張資料表的關聯查詢 最後秀出我要的結果 sql語法又該如何寫呢 sql.Add('select * from users, job '); sql.Add('where uers.code =job.code'); sql.Add(' and users.code= ''' adoquery1.fieldbyname('code').AsString ''' '); sql.Add('select ' combobox2.Text ' from ' listbox1.Items.Strings[listbox1.Itemindex]); 這段語法錯在那呢 一定要是主key 才能相關聯嗎??
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-28 09:42:27 IP:220.130.xxx.xxx 未訂閱
謝謝大家的支持 如果我要兩張甚至多張資料表的關聯查詢 最後秀出我要的結果 sql語法又該如何寫呢 sql.Add('select * from users, job '); sql.Add('where uers.code =job.code'); sql.Add(' and users.code= ''' adoquery1.fieldbyname('code').AsString ''' '); sql.Add('select ' combobox2.Text ' from ' listbox1.Items.Strings[listbox1.Itemindex]); 這段語法錯在那呢 一定要是主key 才能相關聯嗎??
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-28 11:35:24 IP:202.62.xxx.xxx 未訂閱
引言: 謝謝大家的支持 如果我要兩張甚至多張資料表的關聯查詢 最後秀出我要的結果 sql語法又該如何寫呢 sql.Add('select * from users, job '); sql.Add('where uers.code =job.code'); sql.Add(' and users.code= '''+adoquery1.fieldbyname('code').AsString+''' '); sql.Add('select '+combobox2.Text+' from '+listbox1.Items.Strings[listbox1.Itemindex]); 這段語法錯在那呢 一定要是主key 才能相關聯嗎??
您好﹗ 關聯資料表的SQL查詢語法如下﹕ Select 資料表1.欄位1, 資料表1.欄位2, 資料表2.欄位1, 資料表2.欄位2 From 資料表1, 資料表2 Where 資料表1.主鍵=資料表2.主鍵 and 條件式 您所列出的SQL查詢語法是錯誤的﹐前后不能連接在一起﹐應是兩句不同的SQL查詢語句﹕ 一﹒如以下修改﹕ sql.Add('select users.欄位名, job.欄位名 from users, job '); sql.Add('where uers.code =job.code'); sql.Add(' and users.code= '''+adoquery1.fieldbyname('code').AsString+'''_'); //刪除以上結尾處的空格(以上紅色下划線處) 二﹒此句沒有錯 sql.Add('select ' + combobox2.Text + ' from ' + listbox1.Items.Strings[listbox1.Itemindex]); 關聯資料庫的SQL查詢語法中一定要使用其主鍵做為關聯欄位﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-28 16:34:56 IP:220.130.xxx.xxx 未訂閱
1.程式一執行就出現'參數user.code沒有預設值 2。關聯式資料庫一定要寫在datasourcedatachange嗎 procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin adoquery2.Connection:=adoconnection1; adoquery2.sql.Clear; //當有別的用法時 不能同時有不一樣的sql語法 adoquery2.sql.Add('select users.ID, users.name, users.age, users.birthday, job.職業, job.年資 from users, job '); adoquery2.sql.Add('where uers.code = job.code'); adoquery2.sql.Add(' and users.code= ''' adoquery1.fieldbyname('code').AsString ''' '); adoquery2.Close; adoquery2.Open; end;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-28 16:59:10 IP:202.62.xxx.xxx 未訂閱
您好﹗    檢查Users資料表中是否有code這個主鍵欄位﹐如果有的話﹐檢查看看SQL語法中Users.code是否有寫錯的字﹒ 關聯式資料庫不一定要寫在DataSource元件的OnDataChange事件中﹐主要是看触發程式的時機﹐基本上任何時候都可以﹐在您的程式中﹐似乎是需要做到即時的取得關聯式的資料回傳﹐在這個需求條件下﹐可以利用DataSource元件的OnDataChange事件﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-30 17:00:00 IP:210.64.xxx.xxx 未訂閱
你好 建議sql語法改成
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); 
begin
  adoquery2.Connection:=adoconnection1;
  adoquery2.Close; //*****要先close..*****
  adoquery2.sql.Clear; //當有別的用法時 不能同時有不一樣的sql語法
  adoquery2.sql.Add('select a.ID, a.name, a.age, 
                a.birthday, b.職業, b.年資 
                from users a, job b ');
  adoquery2.sql.Add('where b.code = a.code');
  adoquery2.sql.Add(' and a.code= ''' adoquery1.fieldbyname 
                   ('code').AsString ''' ');
  adoquery2.Open;
end;
將原來直接用table name的方式改成用一個代號,試試看吧!! Pillar Wang
------
Pillar Wang
系統時間:2024-05-20 12:55:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!