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

請問一下資料庫"修改"和"搜尋"

答題得分者是:eaglewolf
wwwwkkkkk
一般會員


發表:3
回覆:2
積分:0
註冊:2007-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-13 21:58:04 IP:61.217.xxx.xxx 訂閱
請問一下.. 

我最近在練習做一個訂單系統..

有用到"修改"和"搜尋"..

但出現一個問題...首先是"修改"

我總共有3個爛位,分別是【pno】【pname】【pcost】

程式碼如下:
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm3.Button2Click(Sender: TObject); begin try query1.close; query1.SQL.Clear; query1.Params.Clear; query1.SQL.add('update product set pname=:pname'); query1.SQL.Add('where pno=:pno'); query1.ParamByName('pno').AsString:=edit1.Text; query1.ParamByName('pname').AsString:=edit2.text; query1.ExecSQL; formcreate(sender); messageDlg('寫入成功!',mtinformation,[mbok],0); except messageDlg('寫入失敗!',mtError,[mbok],0); end; end; </textarea><br />
每次修改時..使用者必須輸入【pno】【pname】或【pno】【pcost】

因此必須寫兩個按鈕..請問如何可以合成1個按鈕呢??

還有搜尋也是..我這樣寫

<textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm3.Button5Click(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.Add('select pno,pname from product'); query1.SQL.Add('where pno like :Q1 and pname like :Q2'); query1.ParamByName('Q1').AsString:='%' edit1.Text '%'; query1.ParamByName('Q2').AsString:='%' edit2.Text '%'; if query1.prepared=false then query1.Prepare; query1.Open; end; </textarea>
我也是寫成兩個..

有辦法合成1個嗎??

謝囉
編輯記錄
wwwwkkkkk 重新編輯於 2007-06-13 22:01:13, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-13 22:15:14 IP:211.22.xxx.xxx 未訂閱
我覺得問題不在資料庫更新的動態語法部分!他的寫法就是那樣~
你的問題應該注重在流路設計,總會有某條件成立執行敘述一,另一條件成立執行敘述二。
if (條件一) then
SQLString := "組成執行條件一更新的sql敘述"
ele if (條件二) then
SQLString := "組成執行條件二更新的sql敘述"

接下來利用ado執行sql敘述
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-13 22:24:18 IP:61.231.xxx.xxx 訂閱
乍看pno應該是一定要輸入的
而pname及pcost則是二選一
那麼可用radiobutton那user二選一
<textarea class="delphi" rows="10" cols="60" name="code">if (radiobutton1.Checked = false) and (radiobutton2.Checked = false) then begin messageDlg('請先選擇產品名稱或產品成本',mtError,[mbok],0); Abort; end; try query1.close; query1.SQL.Clear; query1.Params.Clear; if radiobutton1.Checked then query1.SQL.add('update product set pname=:pname') else query1.SQL.add('update product set pcost=:pcost'); query1.SQL.Add('where pno=:pno'); query1.ParamByName('pno').AsString:=edit1.Text; if radiobutton1.Checked then query1.ParamByName('pname').AsString:=edit2.text else query1.ParamByName('pcost').AsString:=edit2.text; query1.ExecSQL; formcreate(sender); messageDlg('寫入成功!',mtinformation,[mbok],0); except messageDlg('寫入失敗!',mtError,[mbok],0); end; </textarea>
===================引 用 wwwwkkkkk 文 章===================
請問一下..

我最近在練習做一個訂單系統..

有用到"修改"和"搜尋"..

但出現一個問題...首先是"修改"

我總共有3個爛位,分別是【pno】【pname】【pcost】

程式碼如下:
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm3.Button2Click(Sender: TObject); begin try query1.close; query1.SQL.Clear; query1.Params.Clear; query1.SQL.add('update product set pname=:pname'); query1.SQL.Add('where pno=:pno'); query1.ParamByName('pno').AsString:=edit1.Text; query1.ParamByName('pname').AsString:=edit2.text; query1.ExecSQL; formcreate(sender); messageDlg('寫入成功!',mtinformation,[mbok],0); except messageDlg('寫入失敗!',mtError,[mbok],0); end; end; </textarea><br />
每次修改時..使用者必須輸入【pno】【pname】或【pno】【pcost】

因此必須寫兩個按鈕..請問如何可以合成1個按鈕呢??

還有搜尋也是..我這樣寫

<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm3.Button5Click(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.Add('select pno,pname from product'); query1.SQL.Add('where pno like :Q1 and pname like :Q2'); query1.ParamByName('Q1').AsString:='%' edit1.Text '%'; query1.ParamByName('Q2').AsString:='%' edit2.Text '%'; if query1.prepared=false then query1.Prepare; query1.Open; end; </textarea>
我也是寫成兩個..

有辦法合成1個嗎??

謝囉
------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
編輯記錄
eaglewolf 重新編輯於 2007-06-13 22:26:10, 註解 無‧
eaglewolf 重新編輯於 2007-06-13 22:26:58, 註解 無‧
wwwwkkkkk
一般會員


發表:3
回覆:2
積分:0
註冊:2007-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-13 23:42:00 IP:61.217.xxx.xxx 訂閱
那請問一下"修改"的部份..

有辦法可以寫成..

讓使用者同時輸入"pno".."pname".."pcost"

接著按一次按鈕就可以同時修改嗎??

謝囉
P.D.
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-14 01:01:29 IP:61.67.xxx.xxx 未訂閱
當然可以的啦,其實答案都在樓上了,只要善用 if 來判斷即可,好好想一下吧!
wwwwkkkkk
一般會員


發表:3
回覆:2
積分:0
註冊:2007-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-14 01:39:26 IP:61.217.xxx.xxx 訂閱
恩~謝囉
小蚊子
中階會員


發表:55
回覆:267
積分:94
註冊:2002-06-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-06-14 17:57:42 IP:210.66.xxx.xxx 訂閱
若您有其它 Table 的 key值    與 pno 是有關聯,
且 pno 在此 Table 是 唯一的key ,
建議.....不要讓 user 改 pno 的值.............
u86210779
一般會員


發表:16
回覆:41
積分:16
註冊:2004-06-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-07-22 12:03:42 IP:218.175.xxx.xxx 未訂閱
建議用 ADOConnect, ADOTable 或 ADOQuery, DBEdit 或 DBGrid, DBNavigator, BeforePost...., AfterPost......, OnNewRecord, OnPostError... 等, 處理這些事情比較好.
系統時間:2024-07-02 8:48:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!