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

資料修改的問題

答題得分者是:careychen
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-12 01:59:19 IP:123.204.xxx.xxx 訂閱
你好
我想請問一下,當我查詢到一筆資料時,對這筆資料進行修改的動作
如:原本姓名 王小明,改成王大銘。
但是當我查詢王小明卻會去查到王大銘,而不會出現查無資料
這是修改的程式碼
[code cpp]
void __fastcall TForm3::BitBtn12Click(TObject *Sender)
{
if (ADOTable2->State==dsEdit)
{
ADOTable2->Post();
}[/code]


careychen
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-12 08:59:27 IP:218.210.xxx.xxx 訂閱
那你的 where 條件式是用名字搜尋的嗎?
你在更新資料後,用來搜尋資料是用原本已經 open 好的 query 來搜尋的,還是用動態 sql 搜尋?
可能麻煩你對搜尋的那段動作或程式碼再說明一下比較清楚唷!!

===================引 用 kill42el 文 章===================
你好
我想請問一下,當我查詢到一筆資料時,對這筆資料進行修改的動作
如:原本姓名 王小明,改成王大銘。
但是當我查詢王小明卻會去查到王大銘,而不會出現查無資料
這是修改的程式碼
[code cpp]
void __fastcall TForm3::BitBtn12Click(TObject *Sender)
{
if (ADOTable2->State==dsEdit)
{
ADOTable2->Post();
}[/code]


------
價值的展現,來自於你用哪一個角度來看待它!!
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-12 16:47:41 IP:123.204.xxx.xxx 訂閱
你好
是的,搜尋關鍵是用 名字
搜尋的程式碼
[code c#]
void __fastcall TForm3::BitBtn8Click(TObject *Sender)
{
bool Found ;
ADOTable2->TableName = "基本資料";
ADOTable2->Close();
if(!ADOTable2->Active)
{
ADOTable2->Open();
}
TLocateOptions SearchOptions ;
SearchOptions << loPartialKey ;
Found = ADOTable2->Locate("Name", Edit2->Text, SearchOptions);
if (Found != true)
ShowMessage("找不到資料") ;
}
[/code]

===================引 用 careychen 文 章===================
那你的 where 條件式是用名字搜尋的嗎?
你在更新資料後,用來搜尋資料是用原本已經 open 好的 query 來搜尋的,還是用動態 sql 搜尋?
可能麻煩你對搜尋的那段動作或程式碼再說明一下比較清楚唷!!
careychen
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-12 18:25:48 IP:218.210.xxx.xxx 訂閱
ADOTable2->Close();
if(!ADOTable2->Active)
{
ADOTable2->Open();
}


上面這段可以直接改成
ADOTable2->Close();
ADOTable2->Open();

根據你的問題,想先確認一下,你在編完資料有先按 bitbtn2 儲存
然後再按下 bitbtn8 來查嗎?

建議你 bitbtn8 的寫法改用 ADOQuery 來進行查詢,不然當你的 table 資料一多時
你這樣的寫法會把 server 的資料全讀回來,只是為了找個人,
你可以用 ADOQuery 直接下命令拉出你要的人即可

===================引 用 kill42el 文 章===================
你好
是的,搜尋關鍵是用 名字
搜尋的程式碼
[code c#]
void __fastcall TForm3::BitBtn8Click(TObject *Sender)
{
bool Found ;
ADOTable2->TableName = "基本資料";
ADOTable2->Close();
if(!ADOTable2->Active)
{
ADOTable2->Open();
}
TLocateOptions SearchOptions ;
SearchOptions << loPartialKey ;
Found = ADOTable2->Locate("Name", Edit2->Text, SearchOptions);
if (Found != true)
ShowMessage("找不到資料") ;
}
[/code]
------
價值的展現,來自於你用哪一個角度來看待它!!
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-13 09:51:45 IP:123.204.xxx.xxx 訂閱
前輩謝謝,可以執行。
恩,是有先按 bitbtn2 儲存然後再按下 bitbtn8 來查
可以在請問一下,當我查尋不到資料時,會出現提示視窗
但是,當搜尋找不到時,都會出現一筆資料,要怎樣能讓 搜尋不到時,也不會出現資料

之前,也有想過要用 ADOQuery 來進行查詢,但是SQL的語法不會宣示
還是說,前輩願意教我呢?


===================引 用 careychen 文 章===================
ADOTable2->Close();
if(!ADOTable2->Active)
{
ADOTable2->Open();
}


上面這段可以直接改成
ADOTable2->Close();
ADOTable2->Open();

根據你的問題,想先確認一下,你在編完資料有先按 bitbtn2 儲存
然後再按下 bitbtn8 來查嗎?

建議你 bitbtn8 的寫法改用 ADOQuery 來進行查詢,不然當你的 table 資料一多時
你這樣的寫法會把 server 的資料全讀回來,只是為了找個人,
你可以用 ADOQuery 直接下命令拉出你要的人即可

careychen
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-09-13 11:55:09 IP:59.126.xxx.xxx 訂閱
教,不是問題,但利用版上的資源似乎不大對,GrandRURU 大有列了BCB的一些小書評,建議新手先來看看這一篇
不知您是否有先看了呢?

先回答你這篇的內容

ADOQuery 可以使用 SQL 這個屬性來設定你要的 sql 語法
例如:
ADOQuery->SQL->Text = "Select FieldA, FieldB from User where UserName='" Edit2->Text "'";
ADOQuery->Open();

if (!ADOQuery->Eof()) ShowMessage("找不到資料") ;
ADOQuery->Close();

可以使用如上的方式來搜尋

至於更多的用法,還是建議你翻翻書,翻書學的效率比上版面 PO 文的效率還快!!

===================引 用 kill42el 文 章===================
前輩謝謝,可以執行。
恩,是有先按 bitbtn2 儲存然後再按下 bitbtn8 來查
可以在請問一下,當我查尋不到資料時,會出現提示視窗
但是,當搜尋找不到時,都會出現一筆資料,要怎樣能讓 搜尋不到時,也不會出現資料

之前,也有想過要用 ADOQuery 來進行查詢,但是SQL的語法不會宣示
還是說,前輩願意教我呢?
------
價值的展現,來自於你用哪一個角度來看待它!!
kill42el
一般會員


發表:30
回覆:50
積分:16
註冊:2008-06-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-09-13 13:19:56 IP:123.204.xxx.xxx 訂閱
謝謝,前輩的指點
GrandRURU 前輩所列出的書籍,我能找到的,都有去翻閱
只是關於SQL的語法,目前還是懵懂,但是會繼續去看書學習
謝謝
===================引 用 careychen 文 章===================
教,不是問題,但利用版上的資源似乎不大對,GrandRURU 大有列了BCB的一些小書評,建議新手先來看看這一篇
不知您是否有先看了呢?

先回答你這篇的內容

ADOQuery 可以使用 SQL 這個屬性來設定你要的 sql 語法
例如:
ADOQuery->SQL->Text = "Select FieldA, FieldB from User where UserName='" Edit2->Text "'";
ADOQuery->Open();

if (!ADOQuery->Eof()) ShowMessage("找不到資料") ;
ADOQuery->Close();

可以使用如上的方式來搜尋

至於更多的用法,還是建議你翻翻書,翻書學的效率比上版面 PO 文的效率還快!!

系統時間:2017-10-19 9:52:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!