線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1243
推到 Plurk!
推到 Facebook!

"連續"超過或小於中心值三次就發mail通知與字體變紅

答題得分者是:P.D.
jay08210821
一般會員


發表:3
回覆:5
積分:1
註冊:2012-04-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-02-19 17:04:45 IP:122.147.xxx.xxx 訂閱
今天客戶要求在報表裡的grid裡輸入三個值 如果"連續"超過或小於中心值三次就發mail通知與字體變紅。(如附件)

我的程式是這樣寫的
設一個integer變數 sRow和sRow1
中心值 Midvalue := strTofloat(midval.text)
CellValue := StrToFloat(Cells[i,j]);
if Cells[i,j] <> ' ' then
begin
if CellValue > MidValue then
begin
sRow := sRow 1 ;
end else
sRow := sRow -1 ;
if CellValue < MidValue then
begin
sRow1 := sRow1 1 ;
end else
sRow1 := sRow1 -1 ;
if (sRow = 3)or(sRow1 = 3 )then
begin
Canvas.Font.Color:=ClRed;
MailFlag := True;
end;
end;

但怎麼輸入sRow都是1...sRow1 等於-1...
不知道我的邏輯是否有錯?
請問是否有更好的想法可以幫忙解決此問題呢?
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-02-19 21:43:40 IP:118.169.xxx.xxx 未訂閱
1.當然, 你犯了一個很大的邏輯上的錯誤
先看第一組紅字 (我不要用公式, 用常式來說明)
if CellValue < MidValue then
這是否有矛盾
依上述的判斷
if CellValue <= MidValue

然而, 你卻又下了第二組
if CellValue < MidValue 為真
否則為否
這豈又不把已經計算的值, 還原成第一組條件了嗎?
難怪你的值永遠在 1 與 -1

if CellValue > MidValue then
begin
sRow := sRow 1 ;
end else
sRow := sRow -1 ;
if CellValue < MidValue then
begin
sRow1 := sRow1 1 ;
end else
sRow1 := sRow1 -1 ;
if (sRow = 3)or(sRow1 = 3 )then
begin
Canvas.Font.Color:=ClRed;
MailFlag := True;
end;
end;

但怎麼輸入sRow都是1...sRow1 等於-1...
不知道我的邏輯是否有錯?
請問是否有更好的想法可以幫忙解決此問題呢?
jay08210821
一般會員


發表:3
回覆:5
積分:1
註冊:2012-04-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-02-20 09:30:01 IP:122.147.xxx.xxx 訂閱
謝謝版主的回答~感激您~
系統時間:2024-05-02 6:07:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!