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

如何在刪除StringGrid的值之後重新指定原本的Row,Col

缺席
lovemari
中階會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-04 14:32:48 IP:60.248.xxx.xxx 訂閱
我設定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 重新編輯於 2008-03-04 19:08:35, 註解 無‧
lovemari 重新編輯於 2008-03-04 19:09:50, 註解 無‧
taishyang 重新編輯於 2008-03-04 19:57:21, 註解 將[急]字拿掉‧
lovemari
中階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-04 17:25:28 IP:60.248.xxx.xxx 訂閱
就是回歸讓搜尋的值

重新從第一排第一行開始排列

因為我現在的SQL

假設搜尋出來7行

那第二次按下去搜尋

會變成14行 (1~7 是空白的 ,8~14是新的搜尋)

如何讓8~14 填回 1~7
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-03-04 19:13:00, 註解 無‧
lovemari
中階會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-04 19:02:30 IP:60.248.xxx.xxx 訂閱
就是第二次或者更多次搜尋之後

除了清除原本的

讓資料重新從Cells[0,RowCount-2] (也就是一開始) 排下去
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
lovemari
中階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-03-05 10:06:44 IP:60.248.xxx.xxx 訂閱
我已經找到方法了^^
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
系統時間:2024-05-06 16:01:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!