分析資料前面第一筆會漏抓 |
答題得分者是:P.D.
|
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[code delphi] procedure TTwn_539KgNum_Fm1.HemisphereButton3Click(Sender: TObject); var STDT,MTDT,ENDT,SQL_A,SB1,SB2,ADAY,BDAY:string; avg,fot:string; begin Total_Qry1.Close; Total_Qry1.SQL.Clear; Total_Qry1.SQL.ADD('Delete from Twn_539KGNUM'); //先刪除暫存檔 Total_Qry1.ExecSQL; STDT:=COPY(DATETOSTR(Date_1.Date),6,5) '/' COPY(DATETOSTR(Date_1.Date),1,4); ENDT:=COPY(DATETOSTR(Date_2.Date),6,5) '/' COPY(DATETOSTR(Date_2.Date),1,4); ADAY:=COPY(DATETOSTR(Date_1.Date),1,4) '/' COPY(DATETOSTR(Date_1.Date),6,5); BDAY:=COPY(DATETOSTR(Date_2.Date),1,4) '/' COPY(DATETOSTR(Date_2.Date),6,5); Twn_539KgNum_RptFm1.QR_LabDate1.Caption := ADAY; Twn_539KgNum_RptFm1.QR_LabDate2.Caption := BDAY; SQL_A:='SELECT 開獎日期, 干支, 星期, A號, B號, C號, D號, E號, 系數分析 FROM Twn_539_NO'; SQL_A:=SQL_A ' Where 開獎日期 >= ''' STDT ''' AND 開獎日期<= ''' ENDT ''' AND 星期 <> "日" '; TG_Qry.Close; TG_Qry.SQL.Clear; TG_Qry.SQL.Add(SQL_A); TG_Qry.Open; if TG_Qry.RecordCount = 0 Then SHOWMESSAGE('沒有開獎記錄...'); While NOT TG_Qry.Eof do begin T123_OP01:= Led_G1.Caption; T123_OP02:= Led_G2.Caption; T123_OP03:= Led_G3.Caption; T123_OP04:= Led_G4.Caption; T123_OP05:= Led_G5.Caption; T123_UPDAY:= Lab_Day.Caption; SB1:=COPY((TG_Qry.FIELDBYNAME('干支').AsString),1,2); //抓天干第一數 SB2:=COPY((TG_Qry.FIELDBYNAME('干支').AsString),3,2); //抓天干第二數 if (SB1 = '甲') or (SB1 ='己') then begin Lab_TK.Caption :='38'; end; if (SB1 = '乙') or (SB1 = '庚') then begin Lab_TK.Caption :='27'; end; if (SB1 = '丙') or (SB1 = '辛') then begin Lab_TK.Caption :='16'; end; if (SB1 = '丁') or (SB1 = '壬') then begin Lab_TK.Caption :='05'; end; if (SB1 = '戊') or (SB1 = '癸') then begin Lab_TK.Caption :='49'; end; if (SB2 = '子') or (SB2 = '午') or (SB2 = '卯') or (SB2 = '酉') then begin Lab_TG.Caption :='9362'; end; if (SB2 = '辰') or (SB2 = '戌') or (SB2 = '丑') or (SB2 = '未') then begin Lab_TG.Caption :='5183'; end; if (SB2 = '寅') or (SB2 = '申') or (SB2 = '巳') or (SB2 = '亥') then begin Lab_TG.Caption :='7140'; end; Table1.Append; Table1.FieldByName('開獎日期').AsString := TG_Qry.FieldByName('開獎日期').AsString; Table1.FieldByName('名稱').AsString := TG_Qry.FieldByName('干支').AsString; Table1.FieldByName('星期').AsString := TG_Qry.FieldByName('星期').AsString; Table1.FieldByName('天干數').AsString := Lab_TK.Caption; Table1.FieldByName('地支數').AsString := Lab_TG.Caption; Table1.FieldByName('系數分析').AsString := TG_Qry.FieldByName('系數分析').AsString; Table1.FieldByName('A號').AsString := T123_OP01; Table1.FieldByName('B號').AsString := T123_OP02; Table1.FieldByName('C號').AsString := T123_OP03; Table1.FieldByName('D號').AsString := T123_OP04; Table1.FieldByName('E號').AsString := T123_OP05; Table1.Post; TG_Qry.Next; Led_G1.Caption:=TG_Qry.FIELDBYNAME('A號').AsString; Led_G2.Caption:=TG_Qry.FIELDBYNAME('B號').AsString; Led_G3.Caption:=TG_Qry.FIELDBYNAME('C號').AsString; Led_G4.Caption:=TG_Qry.FIELDBYNAME('D號').AsString; Led_G5.Caption:=TG_Qry.FIELDBYNAME('E號').AsString; Lab_RS1.Caption:=TG_Qry.FIELDBYNAME('系數分析').AsString; Lab_Day.Caption := TG_Qry.FIELDBYNAME('開獎日期').AsString; Lab_Name.Caption := TG_Qry.FIELDBYNAME('干支').AsString; end; Lab_EndMsg.Caption :='分析結束'; end; [/code] 小弟問題是在分析區間號碼時第一筆的開獎號碼都會跳過,第二筆以後都很正常,請教前備指導 謝謝!!! ( 附上分析後列表) |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 那如果你在 while 之前先下一個 TG_Qry.First 也會嗎? TG_Qry.Open; TG_Qry.Frist; if TG_Qry.RecordCount = 0 Then SHOWMESSAGE('沒有開獎記錄...'); While NOT TG_Qry.Eof do begin ....... 小弟加上測試還是會漏掉那 A號 B號 C號 D號 E號 但前面的 開獎日期 名稱 星期 干數 支數 系數都正常可以 |
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 K1086 文 章=================== ===================引 用 P.D. 文 章=================== 那如果你在 while 之前先下一個 TG_Qry.First 也會嗎? TG_Qry.Open; TG_Qry.First; ------>>>更正 if TG_Qry.RecordCount = 0 Then SHOWMESSAGE('沒有開獎記錄...'); While NOT TG_Qry.Eof do begin ....... 小弟加上測試還是會漏掉那 A號 B號 C號 D號 E號 但前面的 開獎日期 名稱 星期 干數 支數 系數都正常可以 資料 Table1 我查看都有號碼 |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
|
ahentseng
一般會員 ![]() ![]() 發表:6 回覆:9 積分:13 註冊:2008-03-19 發送簡訊給我 |
依照所給的程式內容來看,問題應該是未設定變數的初使值
T123_OP01:= Led_G1.Caption; T123_OP03:= Led_G3.Caption; T123_OP05:= Led_G5.Caption; Table1.FieldByName('A號').AsString := T123_OP01; Table1.FieldByName('C號').AsString := T123_OP03; Table1.FieldByName('E號').AsString := T123_OP05; TG_Qry.Next; //因為是在Next之後才給定Caption,所以第2筆之後沒有問題 Led_G1.Caption:=TG_Qry.FIELDBYNAME('A號').AsString; Led_G3.Caption:=TG_Qry.FIELDBYNAME('C號').AsString; Led_G5.Caption:=TG_Qry.FIELDBYNAME('E號').AsString; end; ===================引 用 K1086 文 章=================== ===================引 用 P.D. 文 章=================== 建議你把 query 用一個 dbgrid 來顯示, 看看經過篩選後的記錄到底是否正常, 由程式很難判斷你的問題所在! 小弟改用 query 來顯示確實有秀出 A B C D E 號 不會漏第一筆 若是這樣是否 Table1.Append; 這段是否有問題 請教PD 版主 要如何解決?? |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
抱歉, 我無法一一去檢視你程式的流程, 不過我不是很清楚你的 Table 與 Query 的關連性是什麼? 還是兩個都是對同一個 資料庫?
如果Query 看的到完整的東西, 但表資料沒有問題, 那可能就出在Table身上, 你可以想辦法在 while 迴圈內使用 Trace 方式追蹤或設定一些檢查點, 檢查你認為有問題的可能地方, 或許可以查出一些端倪, 我個人認為這個問題不難查證, 但"人不是我殺的!", 還是得你自己找看看, 老實說我是看不太懂你的表達, 因為前面說第一筆都出不來, 但後面提abcde欄位看不到, 其他可以, 所以..., 加油吧! |
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
procedure TTwn_539KgNum_Fm1.HemisphereButton3Click(Sender: TObject);
var STDT,MTDT,ENDT,SQL_A,SB1,SB2,ADAY,BDAY:string; avg,fot:string; begin Total_Qry1.Close; Total_Qry1.SQL.Clear; Total_Qry1.SQL.ADD('Delete from Twn_539KGNUM'); //先刪除暫存檔 Total_Qry1.ExecSQL; STDT:=COPY(DATETOSTR(Date_1.Date),6,5) '/' COPY(DATETOSTR(Date_1.Date),1,4); ENDT:=COPY(DATETOSTR(Date_2.Date),6,5) '/' COPY(DATETOSTR(Date_2.Date),1,4); ADAY:=COPY(DATETOSTR(Date_1.Date),1,4) '/' COPY(DATETOSTR(Date_1.Date),6,5); BDAY:=COPY(DATETOSTR(Date_2.Date),1,4) '/' COPY(DATETOSTR(Date_2.Date),6,5); Twn_539KgNum_RptFm1.QR_LabDate1.Caption := ADAY; Twn_539KgNum_RptFm1.QR_LabDate2.Caption := BDAY; SQL_A:='SELECT 開獎日期, 干支, 星期, A號, B號, C號, D號, E號, 系數分析 FROM Twn_539_NO'; SQL_A:=SQL_A ' Where 開獎日期 >= ''' STDT ''' AND 開獎日期<= ''' ENDT ''' AND 星期 <> "日" '; TG_Qry.Close; TG_Qry.SQL.Clear; TG_Qry.SQL.Add(SQL_A); TG_Qry.Open; if TG_Qry.RecordCount = 0 Then SHOWMESSAGE('沒有開獎記錄...'); While NOT TG_Qry.Eof do begin T123_UPDAY:= Lab_Day.Caption; SB1:=COPY((TG_Qry.FIELDBYNAME('干支').AsString),1,2); //抓天干第一數 SB2:=COPY((TG_Qry.FIELDBYNAME('干支').AsString),3,2); //抓天干第二數 if (SB1 = '甲') or (SB1 ='己') then begin Lab_TK.Caption :='38'; end; if (SB1 = '乙') or (SB1 = '庚') then begin Lab_TK.Caption :='27'; end; if (SB1 = '丙') or (SB1 = '辛') then begin Lab_TK.Caption :='16'; end; if (SB1 = '丁') or (SB1 = '壬') then begin Lab_TK.Caption :='05'; end; if (SB1 = '戊') or (SB1 = '癸') then begin Lab_TK.Caption :='49'; end; if (SB2 = '子') or (SB2 = '午') or (SB2 = '卯') or (SB2 = '酉') then begin Lab_TG.Caption :='9362'; end; if (SB2 = '辰') or (SB2 = '戌') or (SB2 = '丑') or (SB2 = '未') then begin Lab_TG.Caption :='5183'; end; if (SB2 = '寅') or (SB2 = '申') or (SB2 = '巳') or (SB2 = '亥') then begin Lab_TG.Caption :='7140'; end; Table1.Append; Table1.FieldByName('開獎日期').AsString := TG_Qry.FieldByName('開獎日期').AsString; Table1.FieldByName('名稱').AsString := TG_Qry.FieldByName('干支').AsString; Table1.FieldByName('星期').AsString := TG_Qry.FieldByName('星期').AsString; Table1.FieldByName('天干數').AsString := Lab_TK.Caption; Table1.FieldByName('地支數').AsString := Lab_TG.Caption; Table1.FieldByName('系數分析').AsString := TG_Qry.FieldByName('系數分析').AsString; Table1.FieldByName('A號').AsString := TG_Qry.FIELDBYNAME('A號').AsString; ---->直接改用 TG_Qry 關連的資料 就OK 了 Table1.FieldByName('B號').AsString := TG_Qry.FIELDBYNAME('B號').AsString; Table1.FieldByName('C號').AsString := TG_Qry.FIELDBYNAME('C號').AsString; Table1.FieldByName('D號').AsString := TG_Qry.FIELDBYNAME('D號').AsString; Table1.FieldByName('E號').AsString := TG_Qry.FIELDBYNAME('E號').AsString; Table1.Post; TG_Qry.Next; Led_G1.Caption:=TG_Qry.FIELDBYNAME('A號').AsString; Led_G2.Caption:=TG_Qry.FIELDBYNAME('B號').AsString; Led_G3.Caption:=TG_Qry.FIELDBYNAME('C號').AsString; Led_G4.Caption:=TG_Qry.FIELDBYNAME('D號').AsString; Led_G5.Caption:=TG_Qry.FIELDBYNAME('E號').AsString; Lab_RS1.Caption:=TG_Qry.FIELDBYNAME('系數分析').AsString; Lab_Day.Caption := TG_Qry.FIELDBYNAME('開獎日期').AsString; Lab_Name.Caption := TG_Qry.FIELDBYNAME('干支').AsString; end; Lab_EndMsg.Caption :='分析結束'; end; ※ 感謝 PD 版主的提示用中斷式偵測抓出資料 果然發現 由TG_Qry 轉入 Table1 時會把開獎 A B C D E 號碼跳第二筆開始 現直接改用不轉 T123_OP01 T123_OP02 T123_OP03 T123_OP04 T123_OP05的號碼 就OK了 非常感謝 PD版主喔!!! 同時也感激 ahentseng 的熱心提供見解 所以功勞還是屬於 PD版主 |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |