如何在刪除StringGrid的值之後重新指定原本的Row,Col |
缺席
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
我設定Button 寫好塞資料到StringGrid
那第二次按下去之後 原本舊有的資料卻往下排列 新的資料在最上面 該如何在Button的開頭寫指令參數 讓每次搜尋都先刪除所有存在的資料 [code delphi] procedure TForm1.Button2Click(Sender: TObject); var S1,S2,S3 : string; i,j,k,l : integer; begin StringGrid1.Rows[0].Clear; StringGrid1.Rows[1].Clear; StringGrid1.Rows[2].Clear; StringGrid1.Rows[3].Clear; StringGrid1.Rows[4].Clear; StringGrid1.Rows[5].Clear; StringGrid1.Rows[6].Clear; StringGrid1.Rows[7].Clear; StringGrid1.Rows[8].Clear; StringGrid1.Rows[9].Clear; StringGrid1.Rows[10].Clear; StringGrid1.Rows[11].Clear; StringGrid1.Rows[12].Clear; StringGrid1.Cols[0].Clear; StringGrid1.Cols[1].Clear; StringGrid1.Cols[2].Clear; StringGrid1.Cols[3].Clear; StringGrid1.Cols[4].Clear; StringGrid1.Cols[5].Clear; StringGrid1.Cols[6].Clear; StringGrid1.Cols[7].Clear; StringGrid1.Cols[8].Clear; StringGrid1.Cols[9].Clear; StringGrid1.Cols[10].Clear; StringGrid1.Cols[11].Clear; StringGrid1.Cols[12].Clear; With StringGrid1 do begin Cells[0,RowCount-2] := '工單'; Cells[1,RowCount-2] := '機種名稱'; Cells[2,RowCount-2] := '批量'; Cells[3,RowCount-2] := '已投入'; Cells[4,RowCount-2] := '今日組裝'; Cells[5,RowCount-2] := '組裝不良'; Cells[6,RowCount-2] := '組裝直通率'; Cells[7,RowCount-2] := '今日測試'; Cells[8,RowCount-2] := '測試不良'; Cells[9,RowCount-2] := '測試直通率'; Cells[10,RowCount-2] := '今日包裝'; Cells[11,RowCount-2] := '包裝不良'; Cells[12,RowCount-2] := '包裝直通率'; end; with csTemp5 do begin Close; Params.Clear; S1 := 'SELECT A.WORK_ORDER "工單",C.PART_NO "機種名稱",D.TARGET_QTY "批量",D.INPUT_QTY "已投入", ' 'NVL(A.OUTPUT_QTY,0) "今日組裝",NVL(SUM(B.FAIL_QTY),0) "組裝不良", ' 'TRUNC((A.OUTPUT_QTY - (SUM(B.FAIL_QTY)))*100 / A.OUTPUT_QTY,0)||''%'' "組裝直通率" ' //ASSYT 'FROM SAJET.G_KB_COUNT A, ' 'SAJET.G_SN_COUNT B, ' 'SAJET.SYS_PART C, ' 'SAJET.G_WO_BASE D ' //TEST 'WHERE A.WORK_ORDER = B.WORK_ORDER ' 'AND A.WORK_DATE = B.WORK_DATE ' 'AND A.WORK_ORDER = D.WORK_ORDER ' 'AND A.MODEL_ID = C.PART_ID ' 'AND A.STAGE_NAME IN (''1.ASSY'') ' 'AND A.WORK_DATE = TO_CHAR(SYSDATE,''YYYYMMDD'') ' 'GROUP BY A.WORK_ORDER,C.PART_NO,D.TARGET_QTY,D.INPUT_QTY,A.STAGE_NAME,A.OUTPUT_QTY ' 'ORDER BY A.STAGE_NAME '; commandtext := S1; open; while not eof do BEGIN With StringGrid1 do begin Params.Clear; Cells[0,RowCount-1] := Fieldbyname('工單').AsString; Cells[1,RowCount-1] := Fieldbyname('機種名稱').AsString; Cells[2,RowCount-1] := Fieldbyname('批量').AsString; Cells[3,RowCount-1] := Fieldbyname('已投入').AsString; Cells[4,RowCount-1] := Fieldbyname('今日組裝').AsString; Cells[5,RowCount-1] := Fieldbyname('組裝不良').AsString; Cells[6,RowCount-1] := Fieldbyname('組裝直通率').AsString; RowCount := RowCount 1; END; NEXT; END; cLOSE; END; //TEST FOR i:=1 to StringGrid1.RowCount-1 do begin j := i; if StringGrid1.Cells[0,j] <> '' then begin with csTemp6 do begin Close; Params.Clear; S2 := 'SELECT A.WORK_ORDER "工單",C.PART_NO "機種名稱",D.TARGET_QTY "批量",D.INPUT_QTY "已投入", ' 'NVL(A.OUTPUT_QTY,0) "今日測試",NVL(SUM(B.FAIL_QTY),0) "測試不良", ' 'TRUNC((A.OUTPUT_QTY - (SUM(B.FAIL_QTY)))*100 / A.OUTPUT_QTY,0)||''%'' "測試直通率" ' 'FROM SAJET.G_KB_COUNT A, ' 'SAJET.G_SN_COUNT B, ' 'SAJET.SYS_PART C, ' 'SAJET.G_WO_BASE D ' 'WHERE A.WORK_ORDER = B.WORK_ORDER ' 'AND A.WORK_DATE = B.WORK_DATE ' 'AND A.WORK_ORDER = D.WORK_ORDER ' 'AND A.MODEL_ID = C.PART_ID ' 'AND D.WORK_ORDER = ''' StringGrid1.Cells[0,j] ''' ' 'AND A.STAGE_NAME IN (''2.TEST'') ' 'AND A.WORK_DATE = TO_CHAR(SYSDATE,''YYYYMMDD'') ' 'GROUP BY A.WORK_ORDER,C.PART_NO,D.TARGET_QTY,D.INPUT_QTY,A.STAGE_NAME,A.OUTPUT_QTY ' 'ORDER BY A.STAGE_NAME '; commandtext := S2; open; if ReCordCount > 0 then begin while not eof do BEGIN With StringGrid1 do begin Cells[7,j] := Fieldbyname('今日測試').AsString; Cells[8,j] := Fieldbyname('測試不良').AsString; Cells[9,j] := Fieldbyname('測試直通率').AsString; END; NEXT; END; end else begin With StringGrid1 do begin Cells[7,j] := '0'; Cells[8,j] := '0'; Cells[9,j] := '0'; END; END; cLOSE; END; //PACKING FOR k:=1 to StringGrid1.RowCount-1 do begin l := k; if StringGrid1.Cells[0,l] <> '' then begin with csTemp7 do begin Close; Params.Clear; S3 := 'SELECT A.WORK_ORDER "工單",C.PART_NO "機種名稱",D.TARGET_QTY "批量",D.INPUT_QTY "已投入", ' 'NVL(A.OUTPUT_QTY,0) "今日包裝",NVL(SUM(B.FAIL_QTY),0) "包裝不良", ' 'TRUNC((A.OUTPUT_QTY - (SUM(B.FAIL_QTY)))*100 / A.OUTPUT_QTY,0)||''%'' "包裝直通率" ' 'FROM SAJET.G_KB_COUNT A, ' 'SAJET.G_SN_COUNT B, ' 'SAJET.SYS_PART C, ' 'SAJET.G_WO_BASE D ' 'WHERE A.WORK_ORDER = B.WORK_ORDER ' 'AND A.WORK_DATE = B.WORK_DATE ' 'AND A.WORK_ORDER = D.WORK_ORDER ' 'AND A.MODEL_ID = C.PART_ID ' 'AND D.WORK_ORDER = ''' StringGrid1.Cells[0,j] ''' ' 'AND A.STAGE_NAME IN (''3.PACKING'') ' 'AND A.WORK_DATE = TO_CHAR(SYSDATE,''YYYYMMDD'') ' 'GROUP BY A.WORK_ORDER,C.PART_NO,D.TARGET_QTY,D.INPUT_QTY,A.STAGE_NAME,A.OUTPUT_QTY ' 'ORDER BY A.STAGE_NAME '; commandtext := S3; open; if ReCordCount > 0 then begin while not eof do BEGIN With StringGrid1 do begin Cells[10,l] := Fieldbyname('今日包裝').AsString; Cells[11,l] := Fieldbyname('包裝不良').AsString; Cells[12,l] := Fieldbyname('包裝直通率').AsString; END; NEXT; END; end else begin With StringGrid1 do begin Cells[10,l] := '0'; Cells[11,l] := '0'; Cells[12,l] := '0'; END; END; cLOSE; END; END; END; END; END; END; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |