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

QUERY和EDIT顯示資料問題

答題得分者是:st33chen
ru226531
一般會員


發表:12
回覆:10
積分:4
註冊:2008-05-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-07 21:41:04 IP:140.128.xxx.xxx 訂閱
我們現在有兩個版面  我們使用delphi6的zeos元件  使用QUERY

一個是tabsheet1 另一個是tabsheet2

tabsheet1有dbtimepicker選擇日期後 將值丟進dbeidt12來顯示結帳單日期 存在reckoning資料表的reck_no欄位

tabsheet2是班表版面 一樣有dbtimepicker選擇日期後將值丟進dbedit13顯示班表日期 存在class資料表的day欄位

我們現在要判斷tabsheet1的reck_no欄位等於tabsheet2的day的值

會在tabsheet1的edit13顯示出員工編號(reck資料表和class資料表中都有員工編號)

請問該怎麼做呢?誠心請教各位大師 謝謝

以下是我們嘗試用最笨的方法的程式碼...XD"

if (bn.ZQuery2.SQL.Add('select reck_no from reckoning')=bn.ZQuery2.SQL.Add('select day from class')) then
bn.zQuery2.close;
bn.zQuery2.SQL.Clear;
bn.ZQuery2.sql.Add('select * from reckoning,class where reckoning.reck_no=class.day');
bn.zQuery2.Open;
edit13.Text:=bn.zquery2.fieldbyname('e_no').asstring;
careychen
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-07 22:02:29 IP:59.126.xxx.xxx 訂閱
請問一下下面的問題

===================引 用 ru226531 文 章===================
我們現在有兩個版面 我們使用delphi6的zeos元件 使用QUERY

一個是tabsheet1 另一個是tabsheet2

tabsheet1有dbtimepicker選擇日期後 將值丟進dbeidt12來顯示結帳單日期 存在reckoning資料表的reck_no欄位

tabsheet2是班表版面 一樣有dbtimepicker選擇日期後將值丟進dbedit13顯示班表日期 存在class資料表的day欄位

我們現在要判斷tabsheet1的reck_no欄位等於tabsheet2的day的值

會在tabsheet1的edit13顯示出員工編號(reck資料表和class資料表中都有員工編號)

請問該怎麼做呢?誠心請教各位大師 謝謝

以下是我們嘗試用最笨的方法的程式碼...XD"

// 1、這個 if ......... 這樣寫有什麼用處? 他連 Open 都沒有怎麼比資料呢?
// 您應該是比【資料】而不是比【SQL 語法】哦???
if (bn.ZQuery2.SQL.Add('select reck_no from reckoning')=bn.ZQuery2.SQL.Add('select day from class')) then
bn.zQuery2.close;
bn.zQuery2.SQL.Clear;
// 2、如果不管哪一張有兩個一樣的時間的話,那您要找出的是哪一位員工?
// 照下列的語法,絕對找出不只一筆,因為只要是時間一樣就列出,那 Edit13 也只能放一個而已
// 您應該再加個時間的條件式進去
bn.ZQuery2.sql.Add('select * from reckoning,class where reckoning.reck_no=class.day');
bn.zQuery2.Open;
edit13.Text:=bn.zquery2.fieldbyname('e_no').asstring


綜合以上的問題,您還有一個問題沒說,列在 TabSheet1 裡的 Edit13 查詢日詢是以 TabSheet1 的日期為準?
還是 TabSheet2? 還是有另外的時間元件?

其實您的解法已經差不多了,再改下面這樣會更接近
if (bn.ZQuery2.SQL.Add('select reck_no from reckoning')=bn.ZQuery2.SQL.Add('select day from class')) then
bn.zQuery2.close;
bn.zQuery2.SQL.Clear;
bn.ZQuery2.sql.Add('Select e_no from reckoning,class where reckoning.reck_no=class.day and reckoning.reck_no=''' dbeidt12.Text '''');
// 1、再加上 紅色的部份,找出需要的日期,但請注意,有可能還是找出多筆,請適時再加上些條件來達成只找一筆
// 2、我把 Select * from 改成 Select e_no from ==> 請在下 SQL 命令時少用 * 號,來降低 DB 的負擔
bn.zQuery2.Open;
edit13.Text:=bn.zquery2.fieldbyname('e_no').asstring
------
價值的展現,來自於你用哪一個角度來看待它!!
ru226531
一般會員


發表:12
回覆:10
積分:4
註冊:2008-05-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-10 17:07:31 IP:140.128.xxx.xxx 訂閱
bn.zQuery2.close;
bn.zQuery2.SQL.Clear;
bn.ZQuery2.sql.Add('select * from reckoning,class where reckoning.reck_no=class.day AND reck_no=''' label179.Caption '''');
bn.zQuery2.Open;
目前這是我們寫的語法

假如在dbeidt12選擇日期,在DBGRID1(這是我們測試查詢用才建立的)會跑出reck_no=day的資料

但現在如果資料有2筆,要再寫什麼語法讓DBGRID1裡的第一筆e_no的資料放到edit1,第二筆e_no的資料放到edit2

麻煩各位高手了 謝謝
st33chen
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-12 00:36:06 IP:122.116.xxx.xxx 未訂閱
您好,

依您題目回答是 :
bn.zQuery2.first;
edit1.text := bn.zQuery2.fieldbyname('e_no').asstring;
bn.zQuery2.next;
edit2.text := bn.zQuery2.fieldbyname('e_no').asstring;

問題是,
1. 可否透露一下什麼情況您需要這樣設計?
2. 如果資料超過2筆您想要如何處理?


===================引 用 ru226531 文 章===================
bn.zQuery2.close;
bn.zQuery2.SQL.Clear;
bn.ZQuery2.sql.Add('select * from reckoning,class where reckoning.reck_no=class.day AND reck_no=''' label179.Caption '''');
bn.zQuery2.Open;
目前這是我們寫的語法

假如在dbeidt12選擇日期,在DBGRID1(這是我們測試查詢用才建立的)會跑出reck_no=day的資料

但現在如果資料有2筆,要再寫什麼語法讓DBGRID1裡的第一筆e_no的資料放到edit1,第二筆e_no的資料放到edit2

麻煩各位高手了 謝謝
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
系統時間:2024-05-03 2:30:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!