그리드에서 레코드를 삭제하기 위해이 코드를 QTP에서 실행하려고합니다. 이 코드행이 삭제되면 Forloop의 rowcount가 업데이트되지 않습니다.
dgRows = SwfWindow("PWC - [PWC]").SwfWindow("Region Master").SwfTable("dgMaster").RowCount
For i = 1 To dgRows
SwfWindow("PWC - [PWC]").SwfWindow("Region Master").SwfTable("dgMaster").SelectCell i-1,0
'row of data grid begins with 0, hence i -1
SwfWindow("PWC - [PWC]").SwfWindow("Region Master").SwfButton("DELETE").Click
Swfwindow("PWC - [PWC]").SwfWindow("Region Master").SwfWindow("RegionMaster").SwfButton("Insert").Click
deleteCode = closePrompt()
If deleteCode = 15 Then 'closePrompt returns 15 when record is successfully deleted
i = i - 1 'As record is deleted, grid has lost one record and for loop will exit early by one record or throw error.
dgoRows = SwfWindow("PWC - [PWC]").SwfWindow("Region Master").SwfTable("dgMaster").RowCount
End If
Next
이 코드는 1에서부터 행 수 (dgRows)까지 실행됩니다.
3 개의 행이있는 경우 가능하면 3 번 실행하고 레코드를 삭제합니다. 1 레코드가 삭제되면 표가 손실됩니다. 그러므로 나는 코드에 의해 i와 dgRows의 값을 조정하려고
I = I - 레코드가 삭제 될 때, 그리드는 하나 개의 레코드와 하나 개의 레코드에 의해 조기 종료 또는 오류가 발생합니다 루프 을 잃은 1 ' . dgoRows = SwfWindow ("PWC - [PWC]") SwfWindow ("지역 마스터") SwfTable ("dgMaster")의 RowCount
QTP가에 대한 행을 클릭하지 않도록 dgRows의 새 값을 업데이트'... 이 아닌 i의 값이 있습니다. .. SwfWindow ("지역 마스터") SwfTable (-
는 내가 코드
dgRows = SwfWindow ("[PWC] PWC")의 조각으로 직면하고있는 문제를 설명하기 위해 시도 "dgMaster") RowCount
행을 삭제 한 후에 for 루프가 반복 될 때 동적으로 그리드의 행을 가져 오지 않습니다. 따라서 i 값은 3 행과 같아 지지만 사실 그리드에는 2 레코드가 삭제되어 하나의 행이 있으므로 QTP는 값 3 인 셀을 클릭하려고 시도하지만이를 찾지 못하고 오류가 발생합니다.
누구나 왜 ("dgMaster")가 아닌지 말할 수 있습니까? RowCount 자체 업데이트 또는 for 루프가 다음에 실행될 때 업데이트하는 방법은 무엇입니까?
행을 삭제할 때 실제로 단계 -1을 사용하여 마지막 요소에서 첫 번째 요소까지 반복합니다. –
@ mehow thanks mehow – user2181576