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

如何顯示Excute之後,所修改的數量

缺席
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-05 11:21:31 IP:122.116.xxx.xxx 訂閱
請教下列Excute之後
我想寫如果沒有序號可以DEL 要秀出警告

可不知道那裡錯了耶..

跑出來結果都只有跑第一段G_OC_SN查無此序號
但是序號也被刪除了


csTemp = CilentDataSet

[code delphi]
With csTemp5 do //G_OC_SN
begin
Close;
Params.Clear;
CommandText := 'DELETE SAJET.G_OC_SN '
'WHERE PART_SN = ''' Edit1.Text ''' ';
Execute;
//Label2.Caption := '刪除:' IntToStr(csTemp.ChangeCount);
IF csTemp5.ChangeCount = 0 then
begin
showmessage ('G_OC_SN查無此序號');
end;
IF csTemp5.ChangeCount > 1 then
begin
showmessage ('退料成功');
Label1.Caption := '序號:' Edit1.Text '已被退出MR生產';
end;
end;
[/code]
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-11-05 13:18:38, 註解 無‧
lovemari 重新編輯於 2008-11-05 13:25:02, 註解 無‧
lovemari 重新編輯於 2008-11-05 13:29:33, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-05 16:09:37 IP:211.72.xxx.xxx 訂閱
您已將 csTemp5 關掉, 當然 ChangeCount 永遠是零.
CommandText 是針對檔案進行指定的工作, 當然把檔案中的資料錄 DELETE 掉啦!
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-06 15:43:14 IP:122.116.xxx.xxx 訂閱
可是我把CLOSE 關掉 結果還是一樣噎



[code delphi]
With csTemp5 do //G_OC_SN
begin
//Close;
Params.Clear;

CommandText := 'DELETE SAJET.G_OC_SN '
'WHERE PART_SN = ''' Edit1.Text ''' ';

Execute;
Label5.Caption := 'OC_SN:' IntToStr(csTemp5.ChangeCount);

IF csTemp5.ChangeCount = 0 then
begin
showmessage ('G_OC_SN查無此序號');
end;

IF csTemp5.ChangeCount > 1 then
begin
showmessage ('退料成功');
//Label6.Caption := '序號:' Edit1.Text '已被退出MR生產';
end;
end;

[/code]
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
st33chen
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-06 16:36:30 IP:122.116.xxx.xxx 未訂閱
插花一下,
您的兩個判斷
IF csTemp5.ChangeCount = 0 then
IF csTemp5.ChangeCount > 1 then

一個判斷是否為 0, 一個判斷是否 大於 1
正好漏掉 = 1 的情況啊

您應該是手誤打錯了吧.
參考一下





===================引 用 lovemari 文 章===================
請教下列Excute之後
我想寫如果沒有序號可以DEL 要秀出警告

可不知道那裡錯了耶..

跑出來結果都只有跑第一段G_OC_SN查無此序號
但是序號也被刪除了


csTemp = CilentDataSet

[code delphi]
With csTemp5 do //G_OC_SN
begin
Close;
Params.Clear;
CommandText := 'DELETE SAJET.G_OC_SN '
'WHERE PART_SN = ''' Edit1.Text ''' ';
Execute;
//Label2.Caption := '刪除:' IntToStr(csTemp.ChangeCount);
IF csTemp5.ChangeCount = 0 then
begin
showmessage ('G_OC_SN查無此序號');
end;
IF csTemp5.ChangeCount > 1 then
begin
showmessage ('退料成功');
Label1.Caption := '序號:' Edit1.Text '已被退出MR生產';
end;
end;
[/code]
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-07 08:32:46 IP:122.116.xxx.xxx 訂閱
我修改成

ChangeCount > 0
ChangeCount = 0

結果都一樣

我開始懷疑 ChangeCount 是否不是我要的= =
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
st33chen
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-07 09:29:06 IP:122.116.xxx.xxx 未訂閱
我是沒用過 clientdataset, 不過單從您的程式碼來看, 是不是應該
先判斷 changecount=0
再判斷 changecount>0
或乾脆直接
if .....changecount<=0 then begin
brabrabra;
end
else begin
brabrabra2;
end if;


===================引 用 lovemari 文 章===================
我修改成

ChangeCount > 0
ChangeCount = 0

結果都一樣

我開始懷疑 ChangeCount 是否不是我要的= =
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-11-07 09:30:39, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-07 09:37:57 IP:211.72.xxx.xxx 訂閱
ChangeCount 是指 DataSet 開檔後, 被 User 修改或被 Code 修改的筆數, 不是 Execute 的筆數.
因查不到 Excute 有回傳的資訊, 故建議您用
'SELECT COUNT(*) AS intCount FROM SAJET.G_OC_SN WHERE PART_SN = ''' Edit1.Text ''' '; 得到將 DELETE 的筆數 intCount.

補充一下, TADOQuery 有提供 RowsAffected, 但 TClientDataSet 無, 只好自行變通一下.
就是說: 山不轉路轉, 沒辦法就自己想辦法啦!
編輯記錄
herbert2 重新編輯於 2008-11-07 10:03:51, 註解 無‧
herbert2 重新編輯於 2008-11-07 10:04:28, 註解 無‧
herbert2 重新編輯於 2008-11-07 10:18:25, 註解 無‧
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-11-13 14:03:33 IP:122.116.xxx.xxx 訂閱
謝謝大大指教

我想補充 上述方式

因為是去Count Edit1的值

那如果這各值是在Talbe沒有搜尋到的

沒有搜尋到自然就沒有Delete 這樣會算到嗎???
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-11-13 16:14:58 IP:211.72.xxx.xxx 訂閱

===================引 用 lovemari 文 章===================
我想補充 上述方式

因為是去Count Edit1的值

那如果這值是在Talbe沒有搜尋到的

沒有搜尋到自然就沒有不要執行 Delete, 也就是 Delete 了零筆.
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-11-14 11:55:53 IP:122.116.xxx.xxx 訂閱
大大 我這段那裡錯了嗎

錯誤訊息是找不到 INCOUNT


[code delphi]
With csTempCount do //Count G_OC_SN
begin
Close;
Params.Clear;
CommandText := 'SELECT COUNT(PART_SN) "INCOUNT" '
'FROM SAJET.G_OC_SN '
'WHERE PART_SN = ''' Edit1.Text ''' ';
Execute;
I := FieldByName('INCOUNT').AsInteger;
Label5.Caption := 'OC_SN:' IntToStr(I) ;
Edit1.Clear;
[/code]




===================引 用 herbert2 文 章===================
我想補充 上述方式

因為是去Count Edit1的值

那如果這值是在Talbe沒有搜尋到的

沒有搜尋到自然就沒有不要執行 Delete, 也就是 Delete 了零筆.
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-11-14 11:56:21, 註解 無‧
lovemari 重新編輯於 2008-11-14 11:57:15, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-11-14 13:46:19 IP:211.72.xxx.xxx 訂閱
您的 SQL 語法錯誤, 欄名的 Alias : INCOUNT 不要加雙引號『"』.

lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#12 引用回覆 回覆 發表時間:2008-11-14 14:20:48 IP:122.116.xxx.xxx 訂閱
不能用雙引號阿  可我之前有這樣寫過耶

SELECT SN "序號",DATE "日期"

用雙引號方式去做

=============================

那我剛剛把 "INCOUNT" 改成 'INCOUNT' 也不可以
INCOUNT 變成白色的字體 無法執行

然後又改成 雙單引號 ''INCOUNT''
結果跑出來是 無法在應該是出現FROM關鍵字上的地方找到它

------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-11-14 14:21:19, 註解 無‧
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2008-11-14 15:32:46 IP:122.117.xxx.xxx 未訂閱
您用什麼資料庫啊?
===================引 用 lovemari 文 章===================
不能用雙引號阿 可我之前有這樣寫過耶

SELECT SN "序號",DATE "日期"

用雙引號方式去做

=============================

那我剛剛把 "INCOUNT" 改成 'INCOUNT' 也不可以
INCOUNT 變成白色的字體 無法執行

然後又改成 雙單引號 ''INCOUNT''
結果跑出來是 無法在應該是出現FROM關鍵字上的地方找到它

------
What do we live for if not to make life less difficult for each other?
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#14 引用回覆 回覆 發表時間:2008-11-14 16:08:28 IP:122.116.xxx.xxx 訂閱
ORACLE 9i
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#15 引用回覆 回覆 發表時間:2008-11-14 16:46:52 IP:122.117.xxx.xxx 未訂閱
SELECT N_01 日期 ,N_02 序號, N_03 廠商 ,N_04 料號 FROM XABN;
不需要雙引號吧
===================引 用 lovemari 文 章===================
ORACLE 9i
------
What do we live for if not to make life less difficult for each other?
系統時間:2024-05-06 16:27:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!