請教前輩如何在Table所有欄位中運用列印篩選有吻合的資料,其他不印? |
答題得分者是:P.D.
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[code delphi] procedure TTwn_49_Lotdata_Fm.HemisphereButton1Click(Sender: TObject); var STDT,ENDT,SQL_A:string; TOTALNUA:INTEGER; begin STDT:=COPY(DATETOSTR(DTP_STDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_STDT.DATE),1,4); ENDT:=COPY(DATETOSTR(DTP_ENDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_ENDT.DATE),1,4); SQL_A:='SELECT * FROM Twn_49_NO'; SQL_A:=SQL_A ' WHERE 開獎日期>=''' STDT ''' AND '; SQL_A:=SQL_A ' 開獎日期<=''' ENDT ''' '; Twn_49_Lotdata_Rpt_Fm.SQL1.CLOSE; Twn_49_Lotdata_Rpt_Fm.SQL1.SQL.Clear; Twn_49_Lotdata_Rpt_Fm.SQL1.SQL.ADD(SQL_A); Twn_49_Lotdata_Rpt_Fm.SQL1.OPEN; TOTALNUA:=0; WHILE NOT Twn_49_Lotdata_Rpt_Fm.SQL1.EOF DO BEGIN if Twn_49_Lotdata_Rpt_Fm.SQL1.FieldByName('期數').AsString <> '' Then // 小弟在這行下判斷,但是無效,還是會印出不想要的資料 TOTALNUA:= TOTALNUA 1; Twn_49_Lotdata_Rpt_Fm.SQL1.Next; END; Twn_49_Lotdata_Rpt_Fm.QR_Lab_tot.Caption := IntTostr(TOTALNUA); Twn_49_Lotdata_Rpt_Fm.QuickRep1.Preview; end; [/code] 問題是這樣 在table 幾千筆中,以區間開始到結束,找出期數不等於空白的資料印出,小弟想不出運用何種語法才有效,敬請前輩指導 謝謝!!! 附加 Table 實際欄位圖表 編輯記錄
K1086 重新編輯於 2017-01-03 20:25:47, 註解 無‧
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1. 語法為何不寫成下列方式, 簡潔有力
SQL_A.SQL.Text := 'SELECT * FROM Twn_49_NO ' + 'WHERE 開獎日期>=''' STDT ''' AND ' + ' 開獎日期<=''' ENDT ''' '; 2. 既然已知要 期數 <> 空白, 何不改成 SQL_A.SQL.Text := 'SELECT * FROM Twn_49_NO ' + 'WHERE 開獎日期>=''' STDT ''' AND ' + ' 開獎日期<=''' ENDT ''' ' + ' and 期數 <> "" ' 不同資料庫對空值判斷有不同, 或許是 'where 期數 is not null ' 但加 where 判斷就可找出你要的條件 至於底下你的語法, 我看不懂那裡在列印, 因為你只是下 if .... then TOTALNUA := TOTALNUA 1 接下來下了 Next, 這有何意義我看不出來? WHILE NOT Twn_49_Lotdata_Rpt_Fm.SQL1.EOF DO BEGIN if Twn_49_Lotdata_Rpt_Fm.SQL1.FieldByName('期數').AsString <> '' Then // 小弟在這行下判斷,但是無效,還是會印出不想要的資料 TOTALNUA:= TOTALNUA 1; ===================引 用 K1086 文 章=================== [code delphi] procedure TTwn_49_Lotdata_Fm.HemisphereButton1Click(Sender: TObject); var STDT,ENDT,SQL_A:string; TOTALNUA:INTEGER; begin STDT:=COPY(DATETOSTR(DTP_STDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_STDT.DATE),1,4); ENDT:=COPY(DATETOSTR(DTP_ENDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_ENDT.DATE),1,4); SQL_A:='SELECT * FROM Twn_49_NO'; SQL_A:=SQL_A ' WHERE 開獎日期>=''' STDT ''' AND '; SQL_A:=SQL_A ' 開獎日期<=''' ENDT ''' '; Twn_49_Lotdata_Rpt_Fm.SQL1.CLOSE; Twn_49_Lotdata_Rpt_Fm.SQL1.SQL.Clear; Twn_49_Lotdata_Rpt_Fm.SQL1.SQL.ADD(SQL_A); Twn_49_Lotdata_Rpt_Fm.SQL1.OPEN; TOTALNUA:=0; WHILE NOT Twn_49_Lotdata_Rpt_Fm.SQL1.EOF DO BEGIN if Twn_49_Lotdata_Rpt_Fm.SQL1.FieldByName('期數').AsString <> '' Then // 小弟在這行下判斷,但是無效,還是會印出不想要的資料 TOTALNUA:= TOTALNUA 1; Twn_49_Lotdata_Rpt_Fm.SQL1.Next; END; Twn_49_Lotdata_Rpt_Fm.QR_Lab_tot.Caption := IntTostr(TOTALNUA); Twn_49_Lotdata_Rpt_Fm.QuickRep1.Preview; end; [/code] 問題是這樣 在table 幾千筆中,以區間開始到結束,找出期數不等於空白的資料印出,小弟想不出運用何種語法才有效,敬請前輩指導 謝謝!!! 附加 Table 實際欄位圖表 |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 1. 語法為何不寫成下列方式, 簡潔有力 SQL_A.SQL.Text := 'SELECT * FROM Twn_49_NO ' + 'WHERE 開獎日期>=''' STDT ''' AND ' + ' 開獎日期<=''' ENDT ''' '; 2. 既然已知要 期數 <> 空白, 何不改成 SQL_A.SQL.Text := 'SELECT * FROM Twn_49_NO ' + 'WHERE 開獎日期>=''' STDT ''' AND ' + ' 開獎日期<=''' ENDT ''' ' + ' and 期數 <> "" ' 不同資料庫對空值判斷有不同, 或許是 'where 期數 is not null ' 但加 where 判斷就可找出你要的條件 至於底下你的語法, 我看不懂那裡在列印, 因為你只是下 if .... then TOTALNUA := TOTALNUA 1 接下來下了 Next, 這有何意義我看不出來? WHILE NOT Twn_49_Lotdata_Rpt_Fm.SQL1.EOF DO BEGIN if Twn_49_Lotdata_Rpt_Fm.SQL1.FieldByName('期數').AsString <> '' Then // 小弟在這行下判斷,但是無效,還是會印出不想要的資料 TOTALNUA:= TOTALNUA 1; ===================引 用 K1086 文 章=================== [code delphi] procedure TTwn_49_Lotdata_Fm.HemisphereButton1Click(Sender: TObject); var STDT,ENDT,SQL_A:string; TOTALNUA:INTEGER; begin STDT:=COPY(DATETOSTR(DTP_STDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_STDT.DATE),1,4); ENDT:=COPY(DATETOSTR(DTP_ENDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_ENDT.DATE),1,4); SQL_A:='SELECT * FROM Twn_49_NO'; SQL_A:=SQL_A ' WHERE 開獎日期>=''' STDT ''' AND '; SQL_A:=SQL_A ' 開獎日期<=''' ENDT ''' '; Twn_49_Lotdata_Rpt_Fm.SQL1.CLOSE; Twn_49_Lotdata_Rpt_Fm.SQL1.SQL.Clear; Twn_49_Lotdata_Rpt_Fm.SQL1.SQL.ADD(SQL_A); Twn_49_Lotdata_Rpt_Fm.SQL1.OPEN; TOTALNUA:=0; WHILE NOT Twn_49_Lotdata_Rpt_Fm.SQL1.EOF DO BEGIN if Twn_49_Lotdata_Rpt_Fm.SQL1.FieldByName('期數').AsString <> '' Then // 小弟在這行下判斷,但是無效,還是會印出不想要的資料 TOTALNUA:= TOTALNUA 1; Twn_49_Lotdata_Rpt_Fm.SQL1.Next; END; Twn_49_Lotdata_Rpt_Fm.QR_Lab_tot.Caption := IntTostr(TOTALNUA); Twn_49_Lotdata_Rpt_Fm.QuickRep1.Preview; end; [/code] 問題是這樣 在table 幾千筆中,以區間開始到結束,找出期數不等於空白的資料印出,小弟想不出運用何種語法才有效,敬請前輩指導 謝謝!!! 附加 Table 實際欄位圖表 SQL_A:='SELECT * FROM Twn_49_NO'; SQL_A:=SQL_A ' 開獎日期<=''' ENDT ''' and 期數 <> "" '; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |